<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>26979</bug_id>
          
          <creation_ts>2009-07-05 08:37:36 -0700</creation_ts>
          <short_desc>Send form data via XMLHttpRequest</short_desc>
          <delta_ts>2010-03-15 10:38:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>35707</dependson>
    
    <dependson>36024</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alfonso Martínez de Lizarrondo">amla70</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>jianli</cc>
    
    <cc>rui.coelho</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129862</commentid>
    <comment_count>0</comment_count>
    <who name="Alfonso Martínez de Lizarrondo">amla70</who>
    <bug_when>2009-07-05 08:37:36 -0700</bug_when>
    <thetext>Webkit does allow to send a file from an &lt;input type=&quot;file&quot;&gt; with XmlHttpRequest.send, but when it does so, the contents of the body sent to the server are just the contents of the file, without the form boundaries like any other form does.

In Firefox it&apos;s possible to call file.getAsBinary() to get the contents as a string and manually construct the full form data and then send it with XmlHttpRequest.sendAsBinary

The current behavior means that special coding is required at the server end to accept this special uploads, it&apos;s not possible to change only the client side to get an ajax upload as it&apos;s possible with the Firefox system.

This problem might need to be fixed before multiple files upload (https://bugs.webkit.org/show_bug.cgi?id=25923) is possible, or all the files would be sent one after another.

Ideally, when sending a file, the 
Content-Type: multipart/form-data; boundary=--42147134553451418--

header should be added, and in the body the boundary should be created also, that would make it very easy to use. The missing part is the field name...

--42147134553451418--
Content-Disposition: form-data; name=&quot;NewFile&quot;; filename=&quot;myPic.jpg&quot;
Content-Type: application/octet-stream

But the important part is to have some method to properly send the file as a normal form would do, without any change to the server code to parse &quot;raw&quot; data. (it does lack even the file name!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129942</commentid>
    <comment_count>1</comment_count>
    <who name="Alfonso Martínez de Lizarrondo">amla70</who>
    <bug_when>2009-07-06 07:02:01 -0700</bug_when>
    <thetext>After thinking about this issue, I think that the most straightforward and friendly solution would be to allow using the &lt;form&gt; element in the xhr.send() method, so the browser takes care of everything like in a normal submit, but now being able to keep track of the progress and getting the response from the server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189368</commentid>
    <comment_count>2</comment_count>
    <who name="">rui.coelho</who>
    <bug_when>2010-02-10 07:46:49 -0800</bug_when>
    <thetext>If XHR file upload is to replace flash/plugin solutions when we need progress bars or drag-drop then this bug is important. Otherwise we need to change the web server-side code to handle regular form posts (in multipart/form-data) and this uploads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194417</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-02-26 19:42:23 -0800</bug_when>
    <thetext>*** Bug 35452 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194755</commentid>
    <comment_count>4</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-01 11:58:25 -0800</bug_when>
    <thetext>The requested feature is defined in XMLHttpRequest 2 spec
(http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#formdata).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194756</commentid>
    <comment_count>5</comment_count>
      <attachid>49733</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-01 12:07:48 -0800</bug_when>
    <thetext>Created attachment 49733
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194853</commentid>
    <comment_count>6</comment_count>
      <attachid>49761</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-01 15:55:53 -0800</bug_when>
    <thetext>Created attachment 49761
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194854</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-01 16:00:04 -0800</bug_when>
    <thetext>Attachment 49761 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/js/JSDOMFormDataCustom.cpp:36:  &quot;JSDOMFormData.h&quot; already included at WebCore/bindings/js/JSDOMFormDataCustom.cpp:32  [build/include] [4]
WebCore/platform/network/FormData.cpp:198:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/platform/network/FormData.cpp:201:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bindings/v8/V8Index.cpp:73:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/xml/DOMFormData.cpp:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/xml/DOMFormData.cpp:48:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/html/HTMLFormElement.cpp:217:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 8 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195195</commentid>
    <comment_count>8</comment_count>
      <attachid>49761</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-03-02 13:22:16 -0800</bug_when>
    <thetext>Comment on attachment 49761
Proposed Patch

Woohoo! FormData!

I would recommend to split the patch: 
1. implementation of DOMFormData (all internals, no tests yet)
2. IDL + JSC Bindings + tests
3. V8 Bindings.
#2 and #3 can be landed together but they probably will be reviewed by different people.

Also:

&gt; diff --git a/WebCore/platform/network/FormData.cpp b/WebCore/platform/network/FormData.cpp
&gt; +void FormData::appendFormDataListAsMultiPartForm(const FormDataList&amp; list, FormDataBuilder&amp; formDataBuilder, const TextEncoding&amp; encoding, const CString&amp; boundary, Document* document) {

Looking at the name and parameters of this method I think we should refactor this code to make things simpler.

I see what you are doing but I think it can be even cleaner. Since we&apos;ll soon need a method to create a DOMFormData from a From element (for &quot;new FormData(nyFormElement)&quot;), it may be better to have a method on HTMLFormElement like: &quot;PassRefPtr&lt;DOMFormData&gt; createDOMFormData()&quot;.

Then on FormData, it&apos;d be FormData::create(const DOMFormData&amp;), instead of append...() method. The appending of all the items could be done inside that create() method.

This could avoid passing FormBuilder for example - it can be a local variable of FormData::create. 

Also:
It&apos;s possible to do this:
var formData = new FormData(myFormElement);
formData.append(&quot;another_file&quot;, file);
xhr.send(formData);

I realize this patch does not yet address this, but please consider how this would affect the shape of this code, to hopefully avoid significant changes in near future...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199715</commentid>
    <comment_count>9</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-03-15 10:38:49 -0700</bug_when>
    <thetext>All related patches are landed. Closed as resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49733</attachid>
            <date>2010-03-01 12:07:48 -0800</date>
            <delta_ts>2010-03-01 15:55:53 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>26979</filename>
            <type>text/plain</type>
            <size>52465</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1M2U3MTYwLi44OTJhOGEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMt
MDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlbmQgZm9ybSBkYXRhIHZpYSBYTUxIdHRwUmVx
dWVzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2
OTc5CisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdG8gdGVzdCBzZW5kaW5nIEZvcm1EYXRh
IHZpYSBYTUxIdHRwUmVxdWVzdC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvcmVzb3Vy
Y2VzL3NlbmQtZm9ybS1kYXRhLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2Fs
L3NlbmQtZm9ybS1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9sb2NhbC9zZW5kLWZvcm0tZGF0YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9tdWx0aXBhcnQtcG9zdC1lY2hvLnBocDogQWRkZWQu
CisKIDIwMTAtMDItMjYgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBj
b2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmViYXNlbGluZSBvZiBwbGF0Zm9ybS1zcGVjaWZp
YyByZXN1bHRzIGZvciB0ZXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2NhbC9yZXNvdXJjZXMvc2VuZC1mb3JtLWRhdGEuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvY2FsL3Jlc291cmNlcy9zZW5kLWZvcm0tZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kZWY3YzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2VuZC1mb3JtLWRhdGEuanMKQEAgLTAsMCArMSwxMTUg
QEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBzZW5kaW5nIEZvcm1EYXRhIHZpYSBYTUxIdHRwUmVx
dWVzdC4iKTsKKwordmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0
Iik7CitmaWxlSW5wdXQudHlwZSA9ICdmaWxlJzsKK2ZpbGVJbnB1dC5zdHlsZS53aWR0aCA9ICIx
MDAlIjsgLy8gU28gdGhhdCBhbnkgbWFudWFsIHRlc3Rpbmcgd2lsbCBzaG93IGZ1bGwgZmlsZSBu
YW1lcworLy8gSW1wb3J0YW50IHRoYXQgd2UgcHV0IHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZG9j
IHNvIHRoYXQgbG9nZ2luZyBkb2VzIG5vdCBjYXVzZSBpdCB0byBnbyBvdXQgb2YgdmlldyAod2hl
cmUgaXQgY2FuJ3QgYmUgZHJhZ2dlZCB0bykKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGZp
bGVJbnB1dCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rpb24gbW92ZU1vdXNl
VG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCkKK3sKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0g
ZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGdldEZp
bGVOYW1lKGZpbGVQYXRoKQoreworICAgIHZhciBpbmRleCA9IGZpbGVQYXRoLmxhc3RJbmRleE9m
KCcvJyk7CisgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICByZXR1cm4gZmlsZVBhdGg7Cisg
ICAgcmV0dXJuIGZpbGVQYXRoLnN1YnN0cihpbmRleCArIDEpOworfQorCitmdW5jdGlvbiBzZW5k
Rm9ybURhdGEoZm9ybURhdGFMaXN0KQoreworICAgIHZhciBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0
YSgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybURhdGFMaXN0Lmxlbmd0aDsgaSsrKQor
ICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZm9ybURhdGFMaXN0W2ldWyduYW1lJ10sIGZvcm1EYXRh
TGlzdFtpXVsndmFsdWUnXSk7CisKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
CisgICAgeGhyLm9wZW4oIlBPU1QiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9tdWx0aXBhcnQtcG9zdC1lY2hvLnBocCIsIGZhbHNlKTsKKyAgICB4aHIu
c2VuZChmb3JtRGF0YSk7CisKKyAgICBkZWJ1Zyh4aHIucmVzcG9uc2VUZXh0KTsKK30KKworZnVu
Y3Rpb24gdGVzdFNlbmRpbmdGb3JtRGF0YShkYXRhTGlzdCkKK3sKKyAgICB2YXIgZmlsZXNUb0Ry
YWcgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFMaXN0Lmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIGlmIChkYXRhTGlzdFtpXVsndHlwZSddID09ICdmaWxlJykKKyAgICAgICAgICAg
IGZpbGVzVG9EcmFnLnB1c2goZGF0YUxpc3RbaV1bJ3ZhbHVlJ10pOworICAgIH0KKworICAgIGlm
IChmaWxlc1RvRHJhZykgeworICAgICAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMo
ZmlsZXNUb0RyYWcpOworICAgICAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChmaWxlSW5w
dXQpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgfQorCisgICAgdmFyIGZp
bGVzID0gZmlsZUlucHV0LmZpbGVzOworICAgIHZhciBmb3JtRGF0YUxpc3QgPSBbXTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGRhdGFMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChk
YXRhTGlzdFtpXVsndHlwZSddID09ICdmaWxlJykgeworICAgICAgICAgICAgdmFyIGZpbGVOYW1l
ID0gZ2V0RmlsZU5hbWUoZGF0YUxpc3RbaV1bJ3ZhbHVlJ10pOworICAgICAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCBmaWxlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgIGlmIChm
aWxlTmFtZSA9PSBmaWxlc1tqXS5uYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRh
TGlzdC5wdXNoKHsnbmFtZSc6IGRhdGFMaXN0W2ldWyduYW1lJ10sICd2YWx1ZSc6IGZpbGVzW2pd
fSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvcm1EYXRhTGlzdC5wdXNo
KHsnbmFtZSc6IGRhdGFMaXN0W2ldWyduYW1lJ10sICd2YWx1ZSc6IGRhdGFMaXN0W2ldWyd2YWx1
ZSddfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZW5kRm9ybURhdGEoZm9ybURhdGFMaXN0
KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgZGVidWcoIlNlbmRpbmcgRm9ybURh
dGEgY29udGFpbmluZyBvbmUgc3RyaW5nIHdpdGggZW1wdHkgbmFtZToiKTsKKyAgICB0ZXN0U2Vu
ZGluZ0Zvcm1EYXRhKFsKKyAgICAgICAgeyAndHlwZSc6ICdzdHJpbmcnLCAnbmFtZSc6ICcnLCAn
dmFsdWUnOiAnZm9vJyB9CisgICAgXSk7CisKKyAgICBkZWJ1ZygiU2VuZGluZyBGb3JtRGF0YSBj
b250YWluaW5nIG9uZSBmaWxlIHdpdGggZW1wdHkgbmFtZToiKTsKKyAgICB0ZXN0U2VuZGluZ0Zv
cm1EYXRhKFsKKyAgICAgICAgeyAndHlwZSc6ICdmaWxlJywgJ25hbWUnOiAnJywgJ3ZhbHVlJzog
J3Jlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0JyB9CisgICAgXSk7CisKKyAgICBk
ZWJ1ZygiU2VuZGluZyBGb3JtRGF0YSBjb250YWluaW5nIG9uZSBzdHJpbmc6Iik7CisgICAgdGVz
dFNlbmRpbmdGb3JtRGF0YShbCisgICAgICAgIHsgJ3R5cGUnOiAnc3RyaW5nJywgJ25hbWUnOiAn
c3RyaW5nJywgJ3ZhbHVlJzogJ2ZvbycgfQorICAgIF0pOworCisgICAgZGVidWcoIlNlbmRpbmcg
Rm9ybURhdGEgY29udGFpbmluZyBvbmUgZmlsZToiKTsKKyAgICB0ZXN0U2VuZGluZ0Zvcm1EYXRh
KFsKKyAgICAgICAgeyAndHlwZSc6ICdmaWxlJywgJ25hbWUnOiAnZmlsZScsICd2YWx1ZSc6ICdy
ZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCcgfQorICAgIF0pOworCisgICAgZGVi
dWcoIlNlbmRpbmcgRm9ybURhdGEgY29udGFpbmluZyBvbmUgc3RyaW5nIGFuZCBvbmUgZmlsZToi
KTsKKyAgICB0ZXN0U2VuZGluZ0Zvcm1EYXRhKFsKKyAgICAgICAgeyAndHlwZSc6ICdzdHJpbmcn
LCAnbmFtZSc6ICdzdHJpbmcxJywgJ3ZhbHVlJzogJ2ZvbycgfSwKKyAgICAgICAgeyAndHlwZSc6
ICdmaWxlJywgJ25hbWUnOiAnZmlsZTEnLCAndmFsdWUnOiAncmVzb3VyY2VzL2ZpbGUtZm9yLWRy
YWctdG8tc2VuZC50eHQnIH0KKyAgICBdKTsKKworICAgIGRlYnVnKCJTZW5kaW5nIEZvcm1EYXRh
IGNvbnRhaW5pbmcgdHdvIHN0cmluZ3MgYW5kIHR3byBmaWxlczoiKTsKKyAgICB0ZXN0U2VuZGlu
Z0Zvcm1EYXRhKFsKKyAgICAgICAgeyAndHlwZSc6ICdzdHJpbmcnLCAnbmFtZSc6ICdzdHJpbmcx
JywgJ3ZhbHVlJzogJ2ZvbycgfSwKKyAgICAgICAgeyAndHlwZSc6ICdmaWxlJywgJ25hbWUnOiAn
ZmlsZTEnLCAndmFsdWUnOiAncmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQnIH0s
CisgICAgICAgIHsgJ3R5cGUnOiAnc3RyaW5nJywgJ25hbWUnOiAnc3RyaW5nMicsICd2YWx1ZSc6
ICdiYXInIH0sCisgICAgICAgIHsgJ3R5cGUnOiAnZmlsZScsICduYW1lJzogJ2ZpbGUyJywgJ3Zh
bHVlJzogJ3Jlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0JyB9CisgICAgXSk7Cit9
CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBydW5UZXN0KCk7CisgICAgLy8gQ2xl
YW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCisgICAgZmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoZmlsZUlucHV0KTsKK30gZWxzZSB7CisgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0IGlzIG5v
dCBpbnRlcmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJlZSIpOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9jYWwvc2VuZC1mb3JtLWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2NhbC9zZW5kLWZvcm0tZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2ZTFkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1mb3JtLWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjEgQEAKK1Rlc3QgZm9yIHNlbmRpbmcgRm9ybURhdGEgdmlhIFhNTEh0dHBSZXF1ZXN0
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU2VuZGluZyBGb3JtRGF0YSBjb250
YWluaW5nIG9uZSBzdHJpbmcgd2l0aCBlbXB0eSBuYW1lOgorCitTZW5kaW5nIEZvcm1EYXRhIGNv
bnRhaW5pbmcgb25lIGZpbGUgd2l0aCBlbXB0eSBuYW1lOgorCitTZW5kaW5nIEZvcm1EYXRhIGNv
bnRhaW5pbmcgb25lIHN0cmluZzoKK3N0cmluZz1mb28KK1NlbmRpbmcgRm9ybURhdGEgY29udGFp
bmluZyBvbmUgZmlsZToKK2ZpbGU9ZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dDpIZWxsbworU2Vu
ZGluZyBGb3JtRGF0YSBjb250YWluaW5nIG9uZSBzdHJpbmcgYW5kIG9uZSBmaWxlOgorc3RyaW5n
MT1mb28mZmlsZTE9ZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dDpIZWxsbworU2VuZGluZyBGb3Jt
RGF0YSBjb250YWluaW5nIHR3byBzdHJpbmdzIGFuZCB0d28gZmlsZXM6CitzdHJpbmcxPWZvbyZz
dHJpbmcyPWJhciZmaWxlMT1maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0OkhlbGxvJmZpbGUyPWZp
bGUtZm9yLWRyYWctdG8tc2VuZC50eHQ6SGVsbG8KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvY2FsL3NlbmQtZm9ybS1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
Y2FsL3NlbmQtZm9ybS1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMThjNzBiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9j
YWwvc2VuZC1mb3JtLWRhdGEuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
ZW5kLWZvcm0tZGF0YS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL211bHRpcGFydC1wb3N0LWVjaG8ucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9yZXNvdXJjZXMvbXVsdGlwYXJ0LXBvc3QtZWNoby5waHAKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjQzYjU4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL211bHRpcGFydC1wb3N0
LWVjaG8ucGhwCkBAIC0wLDAgKzEsMjkgQEAKKzw/cGhwCitpZiAoc3RycG9zKCRfU0VSVkVSWydD
T05URU5UX1RZUEUnXSwgJ211bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PScpICE9IDApIHsK
KyAgICBlY2hvICdJbnZhbGlkIENvbnRlbnQtVHlwZXMuJzsKKyAgICByZXR1cm47Cit9CisKKyR2
YWx1ZXMgPSBhcnJheSgpOworCitmb3JlYWNoICgkX1BPU1QgYXMgJGtleSA9PiAkdmFsdWUpIHsK
KyAgICAkdmFsdWVzW10gPSAiJGtleT0kdmFsdWUiOworfQorCitmb3JlYWNoICgkX0ZJTEVTIGFz
ICRrZXkgPT4gJHZhbHVlKSB7CisgICAgJGZpbGUgPSAkX0ZJTEVTWyRrZXldOworICAgIGlmICgk
ZmlsZVsnZXJyb3InXSkgeworICAgICAgICBlY2hvICdVcGxvYWQgZmlsZSBlcnJvcjogJyAuICRm
aWxlWydlcnJvciddOworICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGZw
ID0gZm9wZW4oJGZpbGVbJ3RtcF9uYW1lJ10sICdyJyk7CisgICAgICAgIGlmICgkZnApIHsKKyAg
ICAgICAgICAgICRjb250ZW50ID0gZnJlYWQoJGZwLCAkZmlsZVsnc2l6ZSddKTsKKyAgICAgICAg
ICAgIGZjbG9zZSgkZnApOworICAgICAgICB9CisgICAgICAgICR2YWx1ZXNbXSA9ICRrZXkgLiAn
PScgLiAkZmlsZVsnbmFtZSddIC4gJzonIC4gJGNvbnRlbnQ7CisgICAgfQorfQorCitlY2hvIGpv
aW4oJyYnLCAkdmFsdWVzKTsKKz8+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZl
ZC5qc2NiaW5kaW5ncy5tayBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1r
CmluZGV4IDg2NmE2YWMuLmEwNGZjZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5kZXJp
dmVkLmpzY2JpbmRpbmdzLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRp
bmdzLm1rCkBAIC01MjAsNiArNTIwLDcgQEAgJChwYXRzdWJzdCAlLmgsJS5jcHAsJChHRU4pKTog
JChpbnRlcm1lZGlhdGVzKS93b3JrZXJzLyUuY3BwIDogJChpbnRlcm1lZGlhdGVzKS8KIAogIyBY
TUwKIEdFTiA6PSBcCisgICAgJChpbnRlcm1lZGlhdGVzKS94bWwvSlNET01Gb3JtRGF0YS5oIFwK
ICAgICAkKGludGVybWVkaWF0ZXMpL3htbC9KU0RPTVBhcnNlci5oIFwKICAgICAkKGludGVybWVk
aWF0ZXMpL3htbC9KU1hNTEh0dHBSZXF1ZXN0LmggXAogICAgICQoaW50ZXJtZWRpYXRlcykveG1s
L0pTWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJv
aWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rIGIvV2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5k
aW5ncy5tawppbmRleCAxOWE1OTc1Li5mNmE1ZWZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJv
aWQuZGVyaXZlZC52OGJpbmRpbmdzLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4
YmluZGluZ3MubWsKQEAgLTUxMyw2ICs1MTMsNyBAQCAkKHBhdHN1YnN0ICUuaCwlLmNwcCwkKEdF
TikpOiAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzLyUuY3BwIDogJChpbnRlcm1lZGlhdGVzKQog
CiAjIFhNTAogR0VOIDo9IFwKKyAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4RE9NRm9y
bURhdGEuaCBcCiAgICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOERPTVBhcnNlci5oIFwK
ICAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4WE1MSHR0cFJlcXVlc3QuaCBcCiAgICAg
JChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmggXApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9BbmRyb2lkLm1rIGIvV2ViQ29yZS9BbmRyb2lkLm1rCmluZGV4
IGYyNjc1ZTAuLjg3MmU1ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5taworKysgYi9X
ZWJDb3JlL0FuZHJvaWQubWsKQEAgLTg5Miw2ICs4OTIsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0g
JChMT0NBTF9TUkNfRklMRVMpIFwKIAl3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgXAog
CXdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBcCiAJXAorCXhtbC9ET01Gb3JtRGF0YS5jcHAgXAog
CXhtbC9ET01QYXJzZXIuY3BwIFwKIAl4bWwvWE1MSHR0cFJlcXVlc3QuY3BwIFwKIAl4bWwvWE1M
SHR0cFJlcXVlc3RVcGxvYWQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q5MWMyYi4uZDIxMzFmOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAor
MjAxMC0wMy0wMSAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VuZCBmb3JtIGRhdGEgdmlhIFhN
TEh0dHBSZXF1ZXN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjY5NzkKKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gWE1M
SHR0cFJlcXVlc3QgMiBzcGVjOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFw
aS9YTUxIdHRwUmVxdWVzdC0yLyNmb3JtZGF0YQorCisgICAgICAgIFRoZSBkYXRhIGNvbnN0cnVj
dGlvbiBjb2RlIGZvciBtdWx0aS1wYXJ0IGZvcm0gaGFzIGJlZW4gbW92ZWQgZnJvbQorICAgICAg
ICBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZUZvcm1EYXRhIHRvIEZvcm1EYXRhOjphcHBlbmRGb3Jt
RGF0YUxpc3RBc011bHRpUGFydEZvcm0KKyAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVk
IGJ5IGJvdGggSFRNTEZvcm1FbGVtZW50IGFuZCBYTUxIdHRwUmVxdWVzdC4KKworICAgICAgICBU
ZXN0OiBodHRwL3Rlc3RzL2xvY2FsL3NlbmQtZm9ybS1kYXRhLmh0bWwKKworICAgICAgICAqIEFu
ZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5ncy5tazoKKyAgICAgICAgKiBBbmRyb2lkLmRlcml2ZWQu
djhiaW5kaW5ncy5tazoKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnByaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0Rlcml2
ZWRTb3VyY2VzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5kZXguY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5kZXguaDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpjcmVh
dGVGb3JtRGF0YSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6
OmFwcGVuZEZvcm1EYXRhTGlzdEFzTXVsdGlQYXJ0Rm9ybSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHhtbC9ET01Gb3JtRGF0YS5jcHA6IEFkZGVk
LgorICAgICAgICAqIHhtbC9ET01Gb3JtRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiB4bWwvRE9N
Rm9ybURhdGEuaWRsOiBBZGRlZC4KKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5oOgorCiAyMDEwLTAyLTI2ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28u
c2Fra2luZW5AdGlldG8uY29tPgogIAogICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBi
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDE3ZDhhZDkuLjRiMWZlMmQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiSlNEb2N1bWVudFR5cGUuY3Bw
IgogI2luY2x1ZGUgIkpTRE9NQXBwbGljYXRpb25DYWNoZS5jcHAiCiAjaW5jbHVkZSAiSlNET01D
b3JlRXhjZXB0aW9uLmNwcCIKKyNpbmNsdWRlICJKU0RPTUZvcm1EYXRhLmNwcCIKICNpbmNsdWRl
ICJKU0RPTUltcGxlbWVudGF0aW9uLmNwcCIKICNpbmNsdWRlICJKU0RPTVBhcnNlci5jcHAiCiAj
aW5jbHVkZSAiSlNET01TZWxlY3Rpb24uY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ1ZmQyYzEu
LjBlNjk5MDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEwOCw2ICsxMDgsNyBAQCBET01fQ0xBU1NF
UyA9IFwKICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IFwKICAgICBET01BcHBsaWNhdGlvbkNh
Y2hlIFwKICAgICBET01Db3JlRXhjZXB0aW9uIFwKKyAgICBET01Gb3JtRGF0YSBcCiAgICAgRE9N
SW1wbGVtZW50YXRpb24gXAogICAgIERPTVBhcnNlciBcCiAgICAgRE9NU2VsZWN0aW9uIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CmluZGV4IDNlY2M2MzYuLmZlMmJlNTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjkwLDYgKzI5MCw3IEBAIElETF9C
SU5ESU5HUyArPSBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwgXAogCVdlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9u
LmlkbCBcCisJV2ViQ29yZS94bWwvRE9NRm9ybURhdGEuaWRsIFwKIAlXZWJDb3JlL3htbC9ET01Q
YXJzZXIuaWRsIFwKIAlXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwgXAogCVdlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmlkbCBcCkBAIC0xOTUwLDYgKzE5NTEsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNm
b3JtRGF0YS5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuY3Bw
IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaCBcCisJV2ViQ29y
ZS94bWwvRE9NRm9ybURhdGEuY3BwIFwKKwlXZWJDb3JlL3htbC9ET01Gb3JtRGF0YS5oIFwKIAlX
ZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwIFwKIAlXZWJDb3JlL3htbC9ET01QYXJzZXIuaCBcCiAJ
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjhhMjgwZS4uZGQ3YmZhNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTIzMCw2ICsyMzAsNyBAQAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyLmlkbCcs
CiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCcsCiAgICAgICAgICAgICAn
d29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5pZGwnLAorICAgICAgICAgICAgJ3htbC9ET01Gb3JtRGF0
YS5pZGwnLAogICAgICAgICAgICAgJ3htbC9ET01QYXJzZXIuaWRsJywKICAgICAgICAgICAgICd4
bWwvWE1MSHR0cFJlcXVlc3QuaWRsJywKICAgICAgICAgICAgICd4bWwvWE1MSHR0cFJlcXVlc3RF
eGNlcHRpb24uaWRsJywKQEAgLTcwNyw2ICs3MDgsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9t
LmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01TZWxlY3Rpb25D
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1
c3RvbS5jcHAnLApAQCAtMzY1NSw2ICszNjU3LDggQEAKICAgICAgICAgICAgICd3b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlckNsaWVudC5oJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyVGhyZWFkLmgnLAorICAgICAg
ICAgICAgJ3htbC9ET01Gb3JtRGF0YS5jcHAnLAorICAgICAgICAgICAgJ3htbC9ET01Gb3JtRGF0
YS5oJywKICAgICAgICAgICAgICd4bWwvRE9NUGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1s
L0RPTVBhcnNlci5oJywKICAgICAgICAgICAgICd4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNw
cCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvV2ViQ29yZS9XZWJDb3JlLnBy
aQppbmRleCBmYzc5ZjhkLi5jY2ZiYWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJp
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTU1Myw2ICs1NTMsNyBAQCBJRExfQklORElO
R1MgKz0gXAogICAgIHdvcmtlcnMvV29ya2VyLmlkbCBcCiAgICAgd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmlkbCBcCiAgICAgd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5pZGwgXAorICAgIHhtbC9ET01G
b3JtRGF0YS5pZGwgXAogICAgIHhtbC9ET01QYXJzZXIuaWRsIFwKICAgICB4bWwvWE1MSHR0cFJl
cXVlc3QuaWRsIFwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaWRsIFwKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGQw
NjhjMDQuLjQzZGU5ZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwpAQCAtOTc1LDYgKzk3NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJl
bmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5jcHAgXAogICAgIHJlbmRlcmluZy9zdHls
ZS9TdHlsZVRyYW5zZm9ybURhdGEuY3BwIFwKICAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmNwcCBcCisgICAgeG1sL0RPTUZvcm1EYXRhLmNwcCBcCiAgICAgeG1sL0RPTVBhcnNl
ci5jcHAgXAogICAgIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHAgXAogICAgIHhtbC9YTUxIdHRwUmVx
dWVzdFVwbG9hZC5jcHAgXApAQCAtMTk0Nyw2ICsxOTQ4LDcgQEAgSEVBREVSUyArPSBcCiAgICAg
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmggXAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmggXAogICAgIHdvcmtlcnMvV29ya2VyVGhyZWFkLmggXAorICAgIHhtbC9ET01Gb3JtRGF0YS5o
IFwKICAgICB4bWwvRE9NUGFyc2VyLmggXAogICAgIHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIu
aCBcCiAgICAgeG1sL1hNTEh0dHBSZXF1ZXN0LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggOWJmY2IyNy4uOWEwODMxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC0yOTA1LDYgKzI5MDUsNjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0K
IAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUZvcm1EYXRhLmNwcCINCisJCQkJPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8
V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxU
b29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTUZvcm1EYXRhLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NSW1wbGVtZW50YXRpb24uY3Bw
Ig0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTI4MjYzLDYgKzI4MzE5LDE0
IEBACiAJCQlOYW1lPSJ4bWwiDQogCQkJPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5ceG1sXERPTUZvcm1EYXRhLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxET01Gb3JtRGF0YS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXERPTVBhcnNlci5jcHAi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzU4MDgsNiArMzU4NzIsNTggQEAKIAkJCQkJPg0K
IAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTRE9NRm9ybURhdGFDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iRGVidWdfSW50ZXJu
YWx8V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJ
CQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2lu
MzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxU
b29sDQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01HbG9iYWxPYmplY3QuY3BwIg0KIAkJCQkJPg0K
IAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAxOTYwY2Q0Li5jNTcxZjRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE5LDYgKzYxOSwxMiBAQAogCQkyRTQzNDY1ODBG
NTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2NTYwRjU0NkE5OTAwQjBGMUJBIC8q
IENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLzsgfTsKIAkJMkU0MzQ2NTkwRjU0NkE5OTAwQjBGMUJB
IC8qIENyb3NzVGhyZWFkQ29waWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTQzNDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaCAqLzsgfTsKIAkJMkVBNzY4MDQwRkU3MTI2NDAwQUI5QzhBIC8qIFdvcmtlclNjcmlwdExv
YWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkVBNzY4MDMwRkU3MTI2NDAwQUI5QzhBIC8qIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC5o
ICovOyB9OworCQkyRUE5MUM0RTExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVBOTFDNEIxMTM4
NzU5RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmNwcCAqLzsgfTsKKwkJMkVBOTFDNEYxMTM4NzU5
RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRUE5MUM0QzExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEu
aCAqLzsgfTsKKwkJMkVBOTFDNTAxMTM4NzU5RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmlkbCBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVBOTFDNEQx
MTM4NzU5RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmlkbCAqLzsgfTsKKwkJMkVBOTFDNTMxMTM4
Nzc4MzAwRTM3NzBFIC8qIEpTRE9NRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVBOTFDNTExMTM4Nzc4MzAwRTM3NzBFIC8qIEpTRE9N
Rm9ybURhdGEuY3BwICovOyB9OworCQkyRUE5MUM1NDExMzg3NzgzMDBFMzc3MEUgLyogSlNET01G
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkVBOTFDNTIxMTM4Nzc4MzAwRTM3NzBFIC8qIEpTRE9NRm9ybURhdGEuaCAqLzsgfTsKKwkJMkVB
OTFDNTYxMTM4N0M2QjAwRTM3NzBFIC8qIEpTRE9NRm9ybURhdGFDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVBOTFDNTUxMTM4N0M2QjAw
RTM3NzBFIC8qIEpTRE9NRm9ybURhdGFDdXN0b20uY3BwICovOyB9OwogCQkyRUFGQUYwRTEwRTJB
RjJEMDA3RUQzRDYgLyogQmxvYi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRUFGQUYwQjEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5jcHAgKi87IH07
CiAJCTJFQUZBRjBGMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUFGQUYwQzEwRTJBRjJEMDA3RUQzRDYgLyog
QmxvYi5oICovOyB9OwogCQkyRUNGN0FEQzEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQ0Y3
QURBMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vycm9yRXZlbnQuY3BwICovOyB9OwpAQCAtNTk1Myw2
ICs1OTU5LDEyIEBACiAJCTJFNDM0NjU2MEY1NDZBOTkwMEIwRjFCQSAvKiBDcm9zc1RocmVhZENv
cGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcm9zc1RocmVh
ZENvcGllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjU3MEY1NDZB
OTkwMEIwRjFCQSAvKiBDcm9zc1RocmVhZENvcGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRUE3NjgwMzBGRTcxMjY0MDBBQjlDOEEgLyogV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdvcmtlclNjcmlwdExvYWRlckNs
aWVudC5oOyBwYXRoID0gd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVBOTFDNEIxMTM4NzU5RDAwRTM3NzBFIC8qIERPTUZv
cm1EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUZvcm1E
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVBOTFDNEMxMTM4NzU5RDAw
RTM3NzBFIC8qIERPTUZvcm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUZvcm1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQTkxQzREMTEz
ODc1OUQwMEUzNzcwRSAvKiBET01Gb3JtRGF0YS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RE9NRm9ybURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUE5MUM1MTEx
Mzg3NzgzMDBFMzc3MEUgLyogSlNET01Gb3JtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RPTUZvcm1EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkVBOTFDNTIxMTM4Nzc4MzAwRTM3NzBFIC8qIEpTRE9NRm9ybURhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Gb3JtRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRUE5MUM1NTExMzg3QzZCMDBFMzc3MEUgLyogSlNET01Gb3Jt
RGF0YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RP
TUZvcm1EYXRhQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVBRkFG
MEIxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQmxvYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFQUZB
RjBDMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVBRkFGMEQxMEUy
QUYyRDAwN0VEM0Q2IC8qIEJsb2IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJsb2IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4MDMsNiArMTM4MTUsOCBAQAogCQlB
ODNCNzkyMjBDQ0IwMEYwMDAwQjA4MjUgLyogWE1MICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRUE5MUM1MTExMzg3NzgzMDBFMzc3MEUgLyogSlNET01G
b3JtRGF0YS5jcHAgKi8sCisJCQkJMkVBOTFDNTIxMTM4Nzc4MzAwRTM3NzBFIC8qIEpTRE9NRm9y
bURhdGEuaCAqLywKIAkJCQkxQUNFNTNERDBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJzZXIu
Y3BwICovLAogCQkJCTFBQ0U1M0RFMEE4RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5oICov
LAogCQkJCUJDMzQ4QkQxMERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmNwcCAq
LywKQEAgLTE0NzkzLDYgKzE0ODA3LDcgQEAKIAkJCQk0OUM3QkE4QzEwNDJGNUIxMDAwOUQ0NDcg
LyogSlNEb2N1bWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNDRTU4QUUxMDYxRTkwQzAwOEZCMzVB
IC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFDMjI2MTYwREI2OUY3
NDAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAgKi8sCisJCQkJMkVB
OTFDNTUxMTM4N0M2QjAwRTM3NzBFIC8qIEpTRE9NRm9ybURhdGFDdXN0b20uY3BwICovLAogCQkJ
CUJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgKi8sCiAJ
CQkJNjUyRkJCQkIwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggKi8sCiAJ
CQkJQkMyRUQ1NTQwQzZCOUJEMzAwOTIwQkZGIC8qIEpTRWxlbWVudEN1c3RvbS5jcHAgKi8sCkBA
IC0xNTMwOSw2ICsxNTMyNCw5IEBACiAJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4bWwg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJFQTkxQzRC
MTEzODc1OUQwMEUzNzcwRSAvKiBET01Gb3JtRGF0YS5jcHAgKi8sCisJCQkJMkVBOTFDNEMxMTM4
NzU5RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmggKi8sCisJCQkJMkVBOTFDNEQxMTM4NzU5RDAw
RTM3NzBFIC8qIERPTUZvcm1EYXRhLmlkbCAqLywKIAkJCQkxQUNFNTNFMTBBOEQxOEU3MDAyMjk0
N0QgLyogRE9NUGFyc2VyLmNwcCAqLywKIAkJCQkxQUNFNTNFMjBBOEQxOEU3MDAyMjk0N0QgLyog
RE9NUGFyc2VyLmggKi8sCiAJCQkJMUFDRTUzRTMwQThEMThFNzAwMjI5NDdEIC8qIERPTVBhcnNl
ci5pZGwgKi8sCkBAIC0xNzk4Niw3ICsxODAwNCw3IEBACiAJCQkJODUzQ0E5REQwQUVFQzVFOTAw
MjM3MkRDIC8qIFJlbmRlclNWR0lubGluZVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RjVD
MEI4MEY5Mjg1QUMwMDk4RTA2QiAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDgzMTkyQUExMTJCNDMwNTAwODNDM0I5IC8qIFJlbmRlclNWR1Jlc291cmNlLmgg
aW4gSGVhZGVycyAqLywKLSAJCQkJODRCREExNkMxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODRCREExNkMxMTM1OEQyQTAw
REJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDgzMTkyQUMxMTJCNDMwNTAwODNDM0I5IC8qIFJlbmRlclNWR1Jlc291cmNlTWFza2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBQTMxQjVCNTBDMURGRDEwMDBBRTcwODMgLyogUmVuZGVyU1ZHUm9v
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhEQUI5QkIxMTAzRDlBNTAwM0U3QUJBIC8qIFJlbmRl
clNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE4NTc2LDYg
KzE4NTk0LDggQEAKIAkJCQk2NUUwRTk0NDExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTYyMjk3QTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9j
YXRpb25Qb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQkMyQzc3ODExMzRBOEZD
MDAwQjJGNjEgLyogQ2FudmFzU3VyZmFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkVBOTFDNEYx
MTM4NzU5RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRUE5
MUM1NDExMzg3NzgzMDBFMzc3MEUgLyogSlNET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0xODY3OCw2ICsxODY5OCw3IEBACiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdl
c3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRF
MDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFF
N0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywK
KwkJCQkyRUE5MUM1MDExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuaWRsIGluIFJlc291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTIwMjM1LDcgKzIwMjU2LDcgQEAKIAkJCQk4NTNDQTlEQTBBRUVDNUU5MDAy
MzcyREMgLyogUmVuZGVyU1ZHSW5saW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1M0NBOURD
MEFFRUM1RTkwMDIzNzJEQyAvKiBSZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4RjVDMEI5MEY5Mjg1QUMwMDk4RTA2QiAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKLSAJCQkJODRCREExNkIxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NEJEQTE2QjExMzU4
RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA4MzE5MkFCMTEyQjQzMDUwMDgzQzNCOSAvKiBSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTMxQjVCNDBDMURGRDEwMDBBRTcwODMgLyogUmVu
ZGVyU1ZHUm9vdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwOERBQjlCQTExMDNEOUE1MDAzRTdB
QkEgLyogUmVuZGVyU1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yMDc2Myw2ICsyMDc4NCw5IEBACiAJCQkJRTE2OTgyNjQxMTM0NjdGMzAwODk0MTE1IC8q
IEphdmFSdW50aW1lT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5NjIyOTc4MTEzM0VG
RDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEJDMkM3NzcxMTM0QThGQzAwMEIyRjYxIC8qIENhbnZhc1N1cmZhY2UuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMkVBOTFDNEUxMTM4NzU5RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTJFQTkxQzUzMTEzODc3ODMwMEUzNzcwRSAvKiBKU0RPTUZv
cm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJFQTkxQzU2MTEzODdDNkIwMEUzNzcwRSAv
KiBKU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggZTIwYjZkOS4uYjJmZGRh
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVzdC5oIgogCiAjaW5j
bHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtMzcs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTERvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCisjaW5jbHVkZSAiSlNET01Gb3JtRGF0YS5oIgog
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkpTRXZlbnQuaCIKQEAgLTExMSw2ICsxMTMsOCBAQCBKU1ZhbHVlIEpTWE1MSHR0
cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogICAg
ICAgICAgICAgaW1wbCgpLT5zZW5kKHRvRG9jdW1lbnQodmFsKSwgZWMpOwogICAgICAgICBlbHNl
IGlmICh2YWwuaW5oZXJpdHMoJkpTQmxvYjo6c19pbmZvKSkKICAgICAgICAgICAgIGltcGwoKS0+
c2VuZCh0b0Jsb2IodmFsKSwgZWMpOworICAgICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoJkpT
RE9NRm9ybURhdGE6OnNfaW5mbykpCisgICAgICAgICAgICBpbXBsKCktPnNlbmQodG9ET01Gb3Jt
RGF0YSh2YWwpLCBlYyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGltcGwoKS0+c2VuZCh2
YWwudG9TdHJpbmcoZXhlYyksIGVjKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVj
dHNJbmNsdWRlLmgKaW5kZXggN2U1NDBlMi4uNGEyZWEyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NT2JqZWN0c0luY2x1ZGUuaApAQCAtODIsNiArODIsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50
VHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJET01Db3Jl
RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJET01JbXBs
ZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVBhcnNlci5oIgogI2luY2x1ZGUgIkRPTVNlbGVj
dGlvbi5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0Fs
bEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5j
cHAKaW5kZXggYjYyNjQ5OS4uNzZhZDE3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rl
cml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSAiYmlu
ZGluZ3MvVjhEb2N1bWVudEZyYWdtZW50LmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOERvY3Vt
ZW50VHlwZS5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhET01Db3JlRXhjZXB0aW9uLmNwcCIK
KyNpbmNsdWRlICJiaW5kaW5ncy9WOERPTUZvcm1EYXRhLmNwcCIKICNpbmNsdWRlICJiaW5kaW5n
cy9WOERPTUltcGxlbWVudGF0aW9uLmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOERPTVBhcnNl
ci5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhET01TZWxlY3Rpb24uY3BwIgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJbmRleC5jcHAKaW5kZXggZmJhYTQ2MC4uZDQwNDQ2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEluZGV4LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXgu
Y3BwCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogI2luY2x1ZGUg
IlY4RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlY4RG9jdW1lbnRUeXBlLmgiCisjaW5j
bHVkZSAiVjhET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIlY4RWxlbWVudC5oIgogI2luY2x1ZGUg
IlY4RW50aXR5LmgiCiAjaW5jbHVkZSAiVjhFbnRpdHlSZWZlcmVuY2UuaCIKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElu
ZGV4LmgKaW5kZXggNTA3MDEwZS4uNWVmZTAwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEluZGV4LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKQEAgLTM2
Myw2ICszNjMsNyBAQCBzdGF0aWMgY29uc3QgaW50IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgPSAyOwogICAgIFYoQ1NTVkFSSUFCTEVTREVDTEFSQVRJT04sIENTU1ZhcmlhYmxl
c0RlY2xhcmF0aW9uKSAgICAgICAgICAgICAgICAgXAogICAgIFYoQ1NTVkFSSUFCTEVTUlVMRSwg
Q1NTVmFyaWFibGVzUnVsZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYo
RE9NQ09SRUVYQ0VQVElPTiwgRE9NQ29yZUV4Y2VwdGlvbikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIFYoRE9NRk9STURBVEEsIERPTUZvcm1EYXRhKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9NSU1QTEVNRU5UQVRJT04sIERP
TUltcGxlbWVudGF0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9N
UEFSU0VSLCBET01QYXJzZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIFYoRE9NU0VMRUNUSU9OLCBET01TZWxlY3Rpb24pICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lMTYxNWYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOERPTUZvcm1EYXRhLmgiCisKKyNpbmNsdWRlICJE
T01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmxvYi5o
IgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjph
cHBlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFU
UygiRE9NLkZvcm1EYXRhLmFwcGVuZCgpIik7CisgICAgCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBW
OFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAgICBET01Gb3JtRGF0YSogZG9tRm9ybURhdGEgPSBW
OERPTUZvcm1EYXRhOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKworICAgIFN0cmluZyBuYW1l
ID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmdzWzBdKTsKKworICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhcmcgPSBhcmdzWzFdOworICAgIGlmIChWOEJsb2I6Okhhc0luc3RhbmNl
KGFyZykpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CisgICAgICAgIEJsb2IqIGJsb2IgPSBWOEJsb2I6
OnRvTmF0aXZlKG9iamVjdCk7CisgICAgICAgIEFTU0VSVChibG9iKTsKKyAgICAgICAgZG9tRm9y
bURhdGEtPmFwcGVuZChuYW1lLCBibG9iKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZG9tRm9ybURh
dGEtPmFwcGVuZChuYW1lLCB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZykpOworCisg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1
c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcAppbmRleCBhNmEwYzk4Li5iNmFmY2RhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgogI2luY2x1
ZGUgIlY4RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJWOERPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAi
VjhIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGls
aXRpZXMuaCIKQEAgLTEyMCw2ICsxMjEsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1M
SHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAg
ICAgICAgICAgQmxvYiogYmxvYiA9IFY4QmxvYjo6dG9OYXRpdmUob2JqZWN0KTsKICAgICAgICAg
ICAgIEFTU0VSVChibG9iKTsKICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5zZW5kKGJsb2Is
IGVjKTsKKyAgICAgICAgfSBlbHNlIGlmIChWOERPTUZvcm1EYXRhOjpIYXNJbnN0YW5jZShhcmcp
KSB7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnKTsKKyAgICAgICAgICAgIERPTUZvcm1EYXRhKiBkb21G
b3JtRGF0YSA9IFY4RE9NRm9ybURhdGE6OnRvTmF0aXZlKG9iamVjdCk7CisgICAgICAgICAgICBB
U1NFUlQoZG9tRm9ybURhdGEpOworICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoZG9t
Rm9ybURhdGEsIGVjKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB4bWxIdHRwUmVxdWVz
dC0+c2VuZCh0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZyksIGVjKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDJmODg4OTQuLmQzY2JkZDYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJDU1NIZWxwZXIuaCIKLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNp
bmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtNDYsNyArNDQsNiBAQAogI2lu
Y2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiVmFsaWRpdHlTdGF0ZS5oIgog
I2luY2x1ZGUgPGxpbWl0cz4KQEAgLTIxMyw2MiArMjEwLDIwIEBAIFBhc3NSZWZQdHI8Rm9ybURh
dGE+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlRm9ybURhdGEoY29uc3QgQ1N0cmluZyYgYm91bmRh
cnkpCiAgICAgICAgIEZvcm1EYXRhTGlzdCBsaXN0KGVuY29kaW5nKTsKIAogICAgICAgICBpZiAo
IWNvbnRyb2wtPmRpc2FibGVkKCkgJiYgY29udHJvbC0+YXBwZW5kRm9ybURhdGEobGlzdCwgbV9m
b3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpKSB7Ci0gICAgICAgICAgICBzaXplX3Qg
Zm9ybURhdGFMaXN0U2l6ZSA9IGxpc3QubGlzdCgpLnNpemUoKTsKLSAgICAgICAgICAgIEFTU0VS
VChmb3JtRGF0YUxpc3RTaXplICUgMiA9PSAwKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgZm9ybURhdGFMaXN0U2l6ZTsgaiArPSAyKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgRm9ybURhdGFMaXN0OjpJdGVtJiBrZXkgPSBsaXN0Lmxpc3QoKVtqXTsKLSAgICAgICAgICAg
ICAgICBjb25zdCBGb3JtRGF0YUxpc3Q6Okl0ZW0mIHZhbHVlID0gbGlzdC5saXN0KClbaiArIDFd
OwotICAgICAgICAgICAgICAgIGlmICghbV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3Jt
KCkpIHsKKyAgICAgICAgICAgIGlmIChtX2Zvcm1EYXRhQnVpbGRlci5pc011bHRpUGFydEZvcm0o
KSkKKyAgICAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZEZvcm1EYXRhTGlzdEFzTXVsdGlQYXJ0
Rm9ybShsaXN0LCBtX2Zvcm1EYXRhQnVpbGRlciwgZW5jb2RpbmcsIGJvdW5kYXJ5LCBkb2N1bWVu
dCgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNpemVfdCBmb3JtRGF0
YUxpc3RTaXplID0gbGlzdC5saXN0KCkuc2l6ZSgpOworICAgICAgICAgICAgICAgIEFTU0VSVChm
b3JtRGF0YUxpc3RTaXplICUgMiA9PSAwKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZvcm1EYXRhTGlzdFNpemU7IGkgKz0gMikgeworICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGb3JtRGF0YUxpc3Q6Okl0ZW0mIGtleSA9IGxpc3QubGlzdCgpW2ldOworICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUxpc3Q6Okl0ZW0mIHZhbHVlID0gbGlzdC5saXN0
KClbaSArIDFdOwogICAgICAgICAgICAgICAgICAgICAvLyBPbWl0IHRoZSBuYW1lICJpc2luZGV4
IiBpZiBpdCdzIHRoZSBmaXJzdCBmb3JtIGRhdGEgZWxlbWVudC4KICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGEgZ29vZCBydWxlPyBJcyB0aGlzIG9ic29sZXRlIG5v
dz8KICAgICAgICAgICAgICAgICAgICAgaWYgKGVuY29kZWREYXRhLmlzRW1wdHkoKSAmJiBrZXku
ZGF0YSgpID09ICJpc2luZGV4IikKICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1EYXRhQnVp
bGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShlbmNvZGVkRGF0YSwgdmFsdWUuZGF0YSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgbV9mb3Jt
RGF0YUJ1aWxkZXIuYWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YShlbmNvZGVkRGF0YSwga2V5LmRh
dGEoKSwgdmFsdWUuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBWZWN0b3I8Y2hhcj4gaGVhZGVyOwotICAgICAgICAgICAgICAgICAgICBtX2Zv
cm1EYXRhQnVpbGRlci5iZWdpbk11bHRpUGFydEhlYWRlcihoZWFkZXIsIGJvdW5kYXJ5LCBrZXku
ZGF0YSgpKTsKLQotICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9
IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY3VycmVudCB0eXBlIGlzIEZJ
TEUsIHRoZW4gd2UgYWxzbyBuZWVkIHRvIGluY2x1ZGUgdGhlIGZpbGVuYW1lCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZS5maWxlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgcGF0aCA9IHZhbHVlLmZpbGUoKS0+cGF0aCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgU3RyaW5nIGZpbGVOYW1lID0gdmFsdWUuZmlsZSgpLT5maWxlTmFtZSgpOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIGFwcGxpY2F0aW9uIHNwZWNpZnkgYSBm
aWxlbmFtZSBpZiBpdCdzIGdvaW5nIHRvIGdlbmVyYXRlIGEgcmVwbGFjZW1lbnQgZmlsZSBmb3Ig
dGhlIHVwbG9hZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50
KCktPnBhZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZ2Vu
ZXJhdGVkRmlsZU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEdl
bmVyYXRlRmlsZSA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c2hvdWxkUmVwbGFjZVdpdGhH
ZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKHBhdGgsIGdlbmVyYXRlZEZpbGVOYW1lKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEdlbmVyYXRlRmlsZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZ2VuZXJhdGVkRmlsZU5hbWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGluY2x1ZGUgdGhlIGZp
bGVuYW1lPSIuLiIgcGFydCBpbiB0aGUgaGVhZGVyLCBldmVuIGlmIHRoZSBmaWxlbmFtZSBpcyBl
bXB0eQotICAgICAgICAgICAgICAgICAgICAgICAgbV9mb3JtRGF0YUJ1aWxkZXIuYWRkRmlsZW5h
bWVUb011bHRpUGFydEhlYWRlcihoZWFkZXIsIGVuY29kaW5nLCBmaWxlTmFtZSk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBNSU1FVHlwZVJlZ2lzdHJ5IGZ1bmN0aW9u
J3MgbmFtZSBtYWtlcyBpdCBzb3VuZCBsaWtlIGl0IHRha2VzIGEgcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBub3QganVzdCBhIGJhc2VuYW1lLiBCdXQgZmlsZW5hbWUgaXMg
bm90IHRoZSBwYXRoLiBCdXQgbm90ZSB0aGF0IGl0J3Mgbm90IHNhZmUgdG8KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBqdXN0IHVzZSBwYXRoIGluc3RlYWQgc2luY2UgaW4gdGhlIGdl
bmVyYXRlZC1maWxlIGNhc2UgaXQgd2lsbCBub3QgcmVmbGVjdCB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBNSU1FIHR5cGUgb2YgdGhlIGdlbmVyYXRlZCBmaWxlLgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yUGF0aChmaWxlTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZm9ybURhdGFCdWlsZGVyLmFkZENvbnRlbnRUeXBlVG9NdWx0aVBhcnRIZWFkZXIoaGVh
ZGVyLCBtaW1lVHlwZS5sYXRpbjEoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBtX2Zvcm1EYXRhQnVpbGRl
ci5maW5pc2hNdWx0aVBhcnRIZWFkZXIoaGVhZGVyKTsKLQotICAgICAgICAgICAgICAgICAgICAv
LyBBcHBlbmQgYm9keQotICAgICAgICAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZERhdGEoaGVh
ZGVyLmRhdGEoKSwgaGVhZGVyLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaXpl
X3QgZGF0YVNpemUgPSB2YWx1ZS5kYXRhKCkubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHQtPmFwcGVuZERhdGEodmFsdWUuZGF0YSgpLmRhdGEoKSwgZGF0YVNpemUpOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5maWxlKCkgJiYgIXZhbHVlLmZpbGUo
KS0+cGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+YXBw
ZW5kRmlsZSh2YWx1ZS5maWxlKCktPnBhdGgoKSwgc2hvdWxkR2VuZXJhdGVGaWxlKTsKLQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZERhdGEoIlxyXG4iLCAyKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggMDY2
OWFjNy4uODdlZjNmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysr
IGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTcxMiw2ICs3MTIsOCBAQCBtb2R1bGUg
d2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFRvdWNoRXZlbnRDb25zdHJ1Y3RvciBUb3VjaEV2
ZW50OwogI2VuZGlmCiAKKyAgICAgICAgYXR0cmlidXRlIERPTUZvcm1EYXRhQ29uc3RydWN0b3Ig
Rm9ybURhdGE7CisKICNlbmRpZiAvLyBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCiAKICNp
ZiBkZWZpbmVkKFY4X0JJTkRJTkcpICYmIFY4X0JJTkRJTkcKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCmluZGV4IGFmM2I3ZjAuLjU5NGFiMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjIsOCArMjIsMTQgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5o
IgogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgIkZvcm1EYXRhQnVpbGRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRh
TGlzdC5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4
OSw0ICsxOTUsNTcgQEAgdm9pZCBGb3JtRGF0YTo6cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRl
ZCgpCiAgICAgbV9oYXNHZW5lcmF0ZWRGaWxlcyA9IGZhbHNlOwogfQogCit2b2lkIEZvcm1EYXRh
OjphcHBlbmRGb3JtRGF0YUxpc3RBc011bHRpUGFydEZvcm0oY29uc3QgRm9ybURhdGFMaXN0JiBs
aXN0LCBGb3JtRGF0YUJ1aWxkZXImIGZvcm1EYXRhQnVpbGRlciwgY29uc3QgVGV4dEVuY29kaW5n
JiBlbmNvZGluZywgY29uc3QgQ1N0cmluZyYgYm91bmRhcnksIERvY3VtZW50KiBkb2N1bWVudCkg
eworICAgIEFTU0VSVChmb3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpOworICAgIHNp
emVfdCBmb3JtRGF0YUxpc3RTaXplID0gbGlzdC5saXN0KCkuc2l6ZSgpOworICAgIEFTU0VSVChm
b3JtRGF0YUxpc3RTaXplICUgMiA9PSAwKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZv
cm1EYXRhTGlzdFNpemU7IGkgKz0gMikgeworICAgICAgICBjb25zdCBGb3JtRGF0YUxpc3Q6Okl0
ZW0mIGtleSA9IGxpc3QubGlzdCgpW2ldOworICAgICAgICBjb25zdCBGb3JtRGF0YUxpc3Q6Okl0
ZW0mIHZhbHVlID0gbGlzdC5saXN0KClbaSArIDFdOworICAgICAgICBWZWN0b3I8Y2hhcj4gaGVh
ZGVyOworICAgICAgICBmb3JtRGF0YUJ1aWxkZXIuYmVnaW5NdWx0aVBhcnRIZWFkZXIoaGVhZGVy
LCBib3VuZGFyeSwga2V5LmRhdGEoKSk7CisKKyAgICAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZUZp
bGUgPSBmYWxzZTsKKyAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgdHlwZSBpcyBGSUxFLCB0aGVu
IHdlIGFsc28gbmVlZCB0byBpbmNsdWRlIHRoZSBmaWxlbmFtZQorICAgICAgICBpZiAodmFsdWUu
ZmlsZSgpKSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSB2YWx1ZS5maWxlKCkt
PnBhdGgoKTsKKyAgICAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IHZhbHVlLmZpbGUoKS0+Zmls
ZU5hbWUoKTsKKworICAgICAgICAgICAgLy8gTGV0IHRoZSBhcHBsaWNhdGlvbiBzcGVjaWZ5IGEg
ZmlsZW5hbWUgaWYgaXQncyBnb2luZyB0byBnZW5lcmF0ZSBhIHJlcGxhY2VtZW50IGZpbGUgZm9y
IHRoZSB1cGxvYWQuCisgICAgICAgICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIFN0cmluZyBnZW5lcmF0ZWRGaWxlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAg
c2hvdWxkR2VuZXJhdGVGaWxlID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zaG91bGRSZXBs
YWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQocGF0aCwgZ2VuZXJhdGVkRmlsZU5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkR2VuZXJhdGVGaWxlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgZmlsZU5hbWUgPSBnZW5lcmF0ZWRGaWxlTmFtZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gaW5jbHVkZSB0
aGUgZmlsZW5hbWU9Ii4uIiBwYXJ0IGluIHRoZSBoZWFkZXIsIGV2ZW4gaWYgdGhlIGZpbGVuYW1l
IGlzIGVtcHR5CisgICAgICAgICAgICBmb3JtRGF0YUJ1aWxkZXIuYWRkRmlsZW5hbWVUb011bHRp
UGFydEhlYWRlcihoZWFkZXIsIGVuY29kaW5nLCBmaWxlTmFtZSk7CisKKyAgICAgICAgICAgIGlm
ICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBN
SU1FVHlwZVJlZ2lzdHJ5IGZ1bmN0aW9uJ3MgbmFtZSBtYWtlcyBpdCBzb3VuZCBsaWtlIGl0IHRh
a2VzIGEgcGF0aCwKKyAgICAgICAgICAgICAgICAvLyBub3QganVzdCBhIGJhc2VuYW1lLiBCdXQg
ZmlsZW5hbWUgaXMgbm90IHRoZSBwYXRoLiBCdXQgbm90ZSB0aGF0IGl0J3Mgbm90IHNhZmUgdG8K
KyAgICAgICAgICAgICAgICAvLyBqdXN0IHVzZSBwYXRoIGluc3RlYWQgc2luY2UgaW4gdGhlIGdl
bmVyYXRlZC1maWxlIGNhc2UgaXQgd2lsbCBub3QgcmVmbGVjdCB0aGUKKyAgICAgICAgICAgICAg
ICAvLyBNSU1FIHR5cGUgb2YgdGhlIGdlbmVyYXRlZCBmaWxlLgorICAgICAgICAgICAgICAgIFN0
cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChmaWxl
TmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgICAgIGZvcm1EYXRhQnVpbGRlci5hZGRDb250ZW50VHlwZVRvTXVsdGlQYXJ0SGVh
ZGVyKGhlYWRlciwgbWltZVR5cGUubGF0aW4xKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZm9ybURhdGFCdWlsZGVyLmZpbmlzaE11bHRpUGFydEhlYWRlcihoZWFkZXIp
OworCisgICAgICAgIC8vIEFwcGVuZCBib2R5CisgICAgICAgIGFwcGVuZERhdGEoaGVhZGVyLmRh
dGEoKSwgaGVhZGVyLnNpemUoKSk7CisgICAgICAgIGlmIChzaXplX3QgZGF0YVNpemUgPSB2YWx1
ZS5kYXRhKCkubGVuZ3RoKCkpCisgICAgICAgICAgICBhcHBlbmREYXRhKHZhbHVlLmRhdGEoKS5k
YXRhKCksIGRhdGFTaXplKTsKKyAgICAgICAgZWxzZSBpZiAodmFsdWUuZmlsZSgpICYmICF2YWx1
ZS5maWxlKCktPnBhdGgoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBhcHBlbmRGaWxlKHZhbHVl
LmZpbGUoKS0+cGF0aCgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpOworCisgICAgICAgIGFwcGVuZERh
dGEoIlxyXG4iLCAyKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNzI3OGYyZS4uNzY5OGRlMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTI3LDYgKzI3LDEwIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENocm9tZUNsaWVudDsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRm9y
bURhdGFCdWlsZGVyOworY2xhc3MgRm9ybURhdGFMaXN0OworY2xhc3MgVGV4dEVuY29kaW5nOwog
CiBjbGFzcyBGb3JtRGF0YUVsZW1lbnQgewogcHVibGljOgpAQCAtNzMsNiArNzcsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCk7
CiAgICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgc2hvdWxk
R2VuZXJhdGVGaWxlID0gZmFsc2UpOworICAgIHZvaWQgYXBwZW5kRm9ybURhdGFMaXN0QXNNdWx0
aVBhcnRGb3JtKGNvbnN0IEZvcm1EYXRhTGlzdCYsIEZvcm1EYXRhQnVpbGRlciYsIGNvbnN0IFRl
eHRFbmNvZGluZyYsIGNvbnN0IENTdHJpbmcmIGJvdW5kYXJ5LCBEb2N1bWVudCopOwogCiAgICAg
dm9pZCBmbGF0dGVuKFZlY3RvcjxjaGFyPiYpIGNvbnN0OyAvLyBvbWl0cyBmaWxlcwogICAgIFN0
cmluZyBmbGF0dGVuVG9TdHJpbmcoKSBjb25zdDsgLy8gb21pdHMgZmlsZXMKZGlmZiAtLWdpdCBh
L1dlYkNvcmUveG1sL0RPTUZvcm1EYXRhLmNwcCBiL1dlYkNvcmUveG1sL0RPTUZvcm1EYXRhLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGVkYTc3Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS94bWwvRE9NRm9ybURhdGEuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKKworI2luY2x1ZGUgIkJs
b2IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0RPTUZvcm1EYXRhOjpET01Gb3JtRGF0YSgpIDogbV9saXN0KGVuY29kaW5nKCkpCit7Cit9
CisKK3ZvaWQgRE9NRm9ybURhdGE6OmFwcGVuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpIHsKKyAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKQorICAgICAgICBtX2xpc3Qu
YXBwZW5kRGF0YShuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgRE9NRm9ybURhdGE6OmFwcGVuZChj
b25zdCBTdHJpbmcmIG5hbWUsIEJsb2IqIGJsb2IpIHsKKyAgICBpZiAoIW5hbWUuaXNFbXB0eSgp
ICYmICFibG9iLT5wYXRoKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxGaWxlPiBmaWxl
ID0gc3RhdGljX2Nhc3Q8RmlsZSo+KGJsb2IpOworICAgICAgICBtX2xpc3QuYXBwZW5kRmlsZShu
YW1lLCBmaWxlLnJlbGVhc2UoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9ET01Gb3JtRGF0YS5oIGIvV2ViQ29yZS94bWwvRE9N
Rm9ybURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmU0ZGMyCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS94bWwvRE9NRm9ybURhdGEuaApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBET01Gb3JtRGF0YV9oCisjZGVmaW5lIERPTUZvcm1EYXRhX2gKKworI2luY2x1
ZGUgIkZvcm1EYXRhTGlzdC5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgU3RyaW5nOworCitjbGFzcyBET01G
b3JtRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUZvcm1EYXRhPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RE9NRm9ybURhdGE+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IERPTUZvcm1EYXRhKCkpOworICAgIH0KKworICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBCbG9iKiBibG9iKTsKKworICAgIGNvbnN0IEZvcm1E
YXRhTGlzdCYgbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdDsgfQorICAgIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBVVEY4RW5jb2RpbmcoKTsgfQorCitw
cml2YXRlOgorICAgIERPTUZvcm1EYXRhKCk7CisKKyAgICBGb3JtRGF0YUxpc3QgbV9saXN0Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NRm9ybURhdGFfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvRE9NRm9ybURhdGEuaWRsIGIvV2ViQ29yZS94bWwvRE9N
Rm9ybURhdGEuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YjFiZjkK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3htbC9ET01Gb3JtRGF0YS5pZGwKQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK21vZHVsZSB4bWwgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ2FuQmVDb25z
dHJ1Y3RlZCwKKyAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCisgICAgICAgIEdlbmVy
YXRlVG9KUworICAgIF0gRE9NRm9ybURhdGEgeworICAgICAgICAvLyB2b2lkIGFwcGVuZChET01T
dHJpbmcgbmFtZSwgQmxvYiB2YWx1ZSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgYXBwZW5kKGlu
IERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmFsdWUpOworICAgIH07CisKK30KZGlmZiAt
LWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAppbmRleCAzMjgxOGRmLi5jODVkYWY0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCkBAIC0yNiwxMiArMjYsMTQgQEAKICNpbmNsdWRlICJDYWNoZS5oIgogI2luY2x1ZGUgIkNT
dHJpbmcuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKKyNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0
aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKyNpbmNsdWRlICJGb3JtRGF0YUJ1aWxkZXIuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCkBAIC00NTAsNiArNDUyLDM0IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQo
QmxvYiogYm9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgY3JlYXRlUmVxdWVzdChlYyk7CiB9
CiAKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRE9NRm9ybURhdGEqIGJvZHksIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghaW5pdFNlbmQoZWMpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9tZXRob2QgIT0gIkdFVCIgJiYgbV9tZXRob2QgIT0gIkhFQUQiICYmIG1fdXJs
LnByb3RvY29sSW5IVFRQRmFtaWx5KCkpIHsKKyAgICAgICAgRm9ybURhdGFCdWlsZGVyIGZvcm1E
YXRhQnVpbGRlcjsKKyAgICAgICAgZm9ybURhdGFCdWlsZGVyLnNldElzTXVsdGlQYXJ0Rm9ybSh0
cnVlKTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IGJvdW5kYXJ5ID0gZm9ybURhdGFCdWlsZGVyLmdl
bmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcoKTsKKworICAgICAgICBTdHJpbmcgY29udGVudFR5
cGUgPSBnZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiKTsKKyAgICAgICAgaWYgKGNvbnRl
bnRUeXBlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY29udGVudFR5cGUgPSAibXVsdGlwYXJ0
L2Zvcm0tZGF0YTsgYm91bmRhcnk9IjsKKyAgICAgICAgICAgIGNvbnRlbnRUeXBlICs9IGJvdW5k
YXJ5LmRhdGEoKTsKKyAgICAgICAgICAgIHNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCgiQ29udGVu
dC1UeXBlIiwgY29udGVudFR5cGUpOworICAgICAgICB9CisKKyAgICAgICAgbV9yZXF1ZXN0RW50
aXR5Qm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9k
eS0+YXBwZW5kRm9ybURhdGFMaXN0QXNNdWx0aVBhcnRGb3JtKGJvZHktPmxpc3QoKSwgZm9ybURh
dGFCdWlsZGVyLCBib2R5LT5lbmNvZGluZygpLCBib3VuZGFyeS5kYXRhKCksIGRvY3VtZW50KCkp
OworCisgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CisgICAgICAgIGZvcm1EYXRhQnVpbGRl
ci5hZGRCb3VuZGFyeVRvTXVsdGlQYXJ0SGVhZGVyKGJ1ZmZlciwgYm91bmRhcnkuZGF0YSgpLCB0
cnVlKTsKKyAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keS0+YXBwZW5kRGF0YShidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICB9CisKKyAgICBjcmVhdGVSZXF1ZXN0KGVjKTsKK30K
Kwogdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICAvLyBUaGUgcHJlc2VuY2Ugb2YgdXBsb2FkIGV2ZW50IGxpc3RlbmVycyBmb3JjZXMg
dXMgdG8gdXNlIHByZWZsaWdodGluZyBiZWNhdXNlIFBPU1RpbmcgdG8gYW4gVVJMIHRoYXQgZG9l
cyBub3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDJjZWE1YzYuLjQ3ZmI2NzcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJs
b2I7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2Fk
ZXI7CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmQoRG9jdW1lbnQqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHNlbmQoQmxvYiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNl
bmQoRE9NRm9ybURhdGEqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogICAg
IHZvaWQgc2V0UmVxdWVzdEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG92ZXJyaWRlTWltZVR5cGUo
Y29uc3QgU3RyaW5nJiBvdmVycmlkZSk7Cg==
</data>
<flag name="commit-queue"
          id="32683"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49761</attachid>
            <date>2010-03-01 15:55:53 -0800</date>
            <delta_ts>2010-03-02 13:22:16 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>26979_2</filename>
            <type>text/plain</type>
            <size>64046</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YTdiM2ZlLi5iNDBiMWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDMt
MDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlbmQgZm9ybSBkYXRhIHZpYSBYTUxIdHRwUmVx
dWVzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2
OTc5CisKKyAgICAgICAgQWRkIGEgbGF5b3V0IHRlc3QgdG8gdGVzdCBzZW5kaW5nIEZvcm1EYXRh
IHZpYSBYTUxIdHRwUmVxdWVzdC4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0eS1kZXNjcmlwdG9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20v
Y29uc3RydWN0ZWQtb2JqZWN0cy1wcm90b3R5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
dGVzdHMvbG9jYWwvcmVzb3VyY2VzL3NlbmQtZm9ybS1kYXRhLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2xvY2FsL3NlbmQtZm9ybS1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWZvcm0tZGF0YS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9tdWx0aXBhcnQtcG9z
dC1lY2hvLnBocDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5LWRlc2NyaXB0b3Jz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2RvbS9wcm90b3R5cGUt
aW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvanMv
Z2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDItMjcgIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBh
dmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCA4MzZkMzY3Li5mZmFlODY3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJv
cGVydGllcy1leHBlY3RlZC50eHQKQEAgLTkwMSw2ICs5MDEsOSBAQCB3aW5kb3cuRmlsZS5wcm90
b3R5cGUgW3ByaW50ZWQgYWJvdmUgYXMgd2luZG93LkJsb2IucHJvdG90eXBlXQogd2luZG93LkZp
bGVMaXN0IFtvYmplY3QgRmlsZUxpc3RDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5GaWxlTGlzdC5wcm90
b3R5cGUgW29iamVjdCBGaWxlTGlzdFByb3RvdHlwZV0KIHdpbmRvdy5GaWxlTGlzdC5wcm90b3R5
cGUuaXRlbSBbZnVuY3Rpb25dCit3aW5kb3cuRm9ybURhdGEgW29iamVjdCBGb3JtRGF0YUNvbnN0
cnVjdG9yXQord2luZG93LkZvcm1EYXRhLnByb3RvdHlwZSBbb2JqZWN0IEZvcm1EYXRhUHJvdG90
eXBlXQord2luZG93LkZvcm1EYXRhLnByb3RvdHlwZS5hcHBlbmQgW2Z1bmN0aW9uXQogd2luZG93
LkhUTUxBbGxDb2xsZWN0aW9uIFtvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25Db25zdHJ1Y3Rvcl0K
IHdpbmRvdy5IVE1MQWxsQ29sbGVjdGlvbi5wcm90b3R5cGUgW29iamVjdCBIVE1MQWxsQ29sbGVj
dGlvblByb3RvdHlwZV0KIHdpbmRvdy5IVE1MQWxsQ29sbGVjdGlvbi5wcm90b3R5cGUuaXRlbSBb
ZnVuY3Rpb25dCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXByb3BlcnR5LWRlc2NyaXB0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0CmluZGV4IGU4
Njk1NDkuLjU0ZmMxNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktZGVzY3JpcHRvcnMtZXhwZWN0ZWQudHh0
CkBAIC00OSw2ICs0OSw3IEBAIFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iod2luZG93LCAnRXZlbnRFeGNlcHRpb24nKSBpcyAnb2JqZWN0CiBQQVNTIHR5cGVvZiBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ0V2ZW50U291cmNlJykgaXMg
J29iamVjdCcKIFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2lu
ZG93LCAnRmlsZScpIGlzICdvYmplY3QnCiBQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHdpbmRvdywgJ0ZpbGVMaXN0JykgaXMgJ29iamVjdCcKK1BBU1MgdHlwZW9m
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnRm9ybURhdGEnKSBpcyAn
b2JqZWN0JwogUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5k
b3csICdGdW5jdGlvbicpIGlzICdvYmplY3QnCiBQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ0hUTUxBbGxDb2xsZWN0aW9uJykgaXMgJ29iamVjdCcK
IFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnSFRN
TEFuY2hvckVsZW1lbnQnKSBpcyAnb2JqZWN0JwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vY29uc3RydWN0ZWQtb2JqZWN0cy1wcm90b3R5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2NvbnN0cnVjdGVkLW9iamVjdHMtcHJvdG90eXBlcy1leHBlY3RlZC50
eHQKaW5kZXggMjYzOWQzZC4uNjUwOWYzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vY29uc3RydWN0ZWQtb2JqZWN0cy1wcm90b3R5cGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3RlZC1vYmplY3RzLXByb3RvdHlwZXMtZXhwZWN0ZWQu
dHh0CkBAIC03LDYgKzcsOCBAQCBQQVNTIChuZXcgaW5uZXIuQXVkaW8oKSkuaXNJbm5lciBpcyB0
cnVlCiBQQVNTIChuZXcgaW5uZXIuQXVkaW8oKSkuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVl
CiBQQVNTIChuZXcgaW5uZXIuRE9NUGFyc2VyKCkpLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyAobmV3
IGlubmVyLkRPTVBhcnNlcigpKS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKK1BBU1MgKG5l
dyBpbm5lci5Gb3JtRGF0YSgpKS5pc0lubmVyIGlzIHRydWUKK1BBU1MgKG5ldyBpbm5lci5Gb3Jt
RGF0YSgpKS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgKG5ldyBpbm5lci5JbWFn
ZSgpKS5pc0lubmVyIGlzIHRydWUKIFBBU1MgKG5ldyBpbm5lci5JbWFnZSgpKS5jb25zdHJ1Y3Rv
ci5pc0lubmVyIGlzIHRydWUKIFBBU1MgKG5ldyBpbm5lci5NZXNzYWdlQ2hhbm5lbCgpKS5pc0lu
bmVyIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1p
bmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlw
ZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dAppbmRleCA1ODNkODY1Li5jY2NmZDdhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNl
LTItZXhwZWN0ZWQudHh0CkBAIC0yMjEsNiArMjIxLDcgQEAgTmV2ZXIgZm91bmQgRW50aXR5CiBO
ZXZlciBmb3VuZCBFbnRpdHlSZWZlcmVuY2UKIE5ldmVyIGZvdW5kIEZpbGUKIE5ldmVyIGZvdW5k
IEZpbGVMaXN0CitOZXZlciBmb3VuZCBGb3JtRGF0YQogTmV2ZXIgZm91bmQgSFRNTEFsbENvbGxl
Y3Rpb24KIE5ldmVyIGZvdW5kIEhUTUxCYXNlRWxlbWVudAogTmV2ZXIgZm91bmQgSFRNTEJhc2VG
b250RWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWlu
aGVyaXRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1p
bmhlcml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggNGZhYTcxNS4uNTM0NzgzZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0
ZWQudHh0CkBAIC04Nyw2ICs4Nyw4IEBAIFBBU1MgaW5uZXIuRmlsZS5pc0lubmVyIGlzIHRydWUK
IFBBU1MgaW5uZXIuRmlsZS5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIu
RmlsZUxpc3QuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLkZpbGVMaXN0LmNvbnN0cnVjdG9y
LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5Gb3JtRGF0YS5pc0lubmVyIGlzIHRydWUKK1BB
U1MgaW5uZXIuRm9ybURhdGEuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVy
LkhUTUxBbGxDb2xsZWN0aW9uLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5IVE1MQWxsQ29s
bGVjdGlvbi5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuSFRNTEFuY2hv
ckVsZW1lbnQuaXNJbm5lciBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pz
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9n
bG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAppbmRleCAxZDFjMmRjLi44ZmM4NTA0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBl
Y3RlZC50eHQKQEAgLTQzLDYgKzQzLDcgQEAgUEFTUyBFdmVudC50b1N0cmluZygpIGlzICdbb2Jq
ZWN0IEV2ZW50Q29uc3RydWN0b3JdJwogUEFTUyBFdmVudEV4Y2VwdGlvbi50b1N0cmluZygpIGlz
ICdbb2JqZWN0IEV2ZW50RXhjZXB0aW9uQ29uc3RydWN0b3JdJwogUEFTUyBGaWxlLnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3QgRmlsZUNvbnN0cnVjdG9yXScKIFBBU1MgRmlsZUxpc3QudG9TdHJpbmco
KSBpcyAnW29iamVjdCBGaWxlTGlzdENvbnN0cnVjdG9yXScKK1BBU1MgRm9ybURhdGEudG9TdHJp
bmcoKSBpcyAnW29iamVjdCBGb3JtRGF0YUNvbnN0cnVjdG9yXScKIFBBU1MgSFRNTEFsbENvbGxl
Y3Rpb24udG9TdHJpbmcoKSBpcyAnW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbkNvbnN0cnVjdG9y
XScKIFBBU1MgSFRNTEFuY2hvckVsZW1lbnQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBIVE1MQW5j
aG9yRWxlbWVudENvbnN0cnVjdG9yXScKIFBBU1MgSFRNTEFwcGxldEVsZW1lbnQudG9TdHJpbmco
KSBpcyAnW29iamVjdCBIVE1MQXBwbGV0RWxlbWVudENvbnN0cnVjdG9yXScKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvcmVzb3VyY2VzL3NlbmQtZm9ybS1kYXRhLmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2VuZC1mb3JtLWRhdGEu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVmN2M0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvcmVzb3VyY2VzL3NlbmQtZm9y
bS1kYXRhLmpzCkBAIC0wLDAgKzEsMTE1IEBACitkZXNjcmlwdGlvbigiVGVzdCBmb3Igc2VuZGlu
ZyBGb3JtRGF0YSB2aWEgWE1MSHR0cFJlcXVlc3QuIik7CisKK3ZhciBmaWxlSW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworZmlsZUlucHV0LnR5cGUgPSAnZmlsZSc7Citm
aWxlSW5wdXQuc3R5bGUud2lkdGggPSAiMTAwJSI7IC8vIFNvIHRoYXQgYW55IG1hbnVhbCB0ZXN0
aW5nIHdpbGwgc2hvdyBmdWxsIGZpbGUgbmFtZXMKKy8vIEltcG9ydGFudCB0aGF0IHdlIHB1dCB0
aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2Ug
aXQgdG8gZ28gb3V0IG9mIHZpZXcgKHdoZXJlIGl0IGNhbid0IGJlIGRyYWdnZWQgdG8pCitkb2N1
bWVudC5ib2R5Lmluc2VydEJlZm9yZShmaWxlSW5wdXQsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGls
ZCk7CisKK2Z1bmN0aW9uIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpCit7Cisg
ICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRo
IC8gMjsKKyAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZz
ZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRl
clkpOworfQorCitmdW5jdGlvbiBnZXRGaWxlTmFtZShmaWxlUGF0aCkKK3sKKyAgICB2YXIgaW5k
ZXggPSBmaWxlUGF0aC5sYXN0SW5kZXhPZignLycpOworICAgIGlmIChpbmRleCA9PSAtMSkKKyAg
ICAgICAgcmV0dXJuIGZpbGVQYXRoOworICAgIHJldHVybiBmaWxlUGF0aC5zdWJzdHIoaW5kZXgg
KyAxKTsKK30KKworZnVuY3Rpb24gc2VuZEZvcm1EYXRhKGZvcm1EYXRhTGlzdCkKK3sKKyAgICB2
YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZv
cm1EYXRhTGlzdC5sZW5ndGg7IGkrKykKKyAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZvcm1EYXRh
TGlzdFtpXVsnbmFtZSddLCBmb3JtRGF0YUxpc3RbaV1bJ3ZhbHVlJ10pOworCisgICAgdmFyIHho
ciA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVuKCJQT1NUIiwgImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvbXVsdGlwYXJ0LXBvc3QtZWNo
by5waHAiLCBmYWxzZSk7CisgICAgeGhyLnNlbmQoZm9ybURhdGEpOworCisgICAgZGVidWcoeGhy
LnJlc3BvbnNlVGV4dCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTZW5kaW5nRm9ybURhdGEoZGF0YUxp
c3QpCit7CisgICAgdmFyIGZpbGVzVG9EcmFnID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkYXRhTGlzdC5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoZGF0YUxpc3RbaV1bJ3R5cGUn
XSA9PSAnZmlsZScpCisgICAgICAgICAgICBmaWxlc1RvRHJhZy5wdXNoKGRhdGFMaXN0W2ldWyd2
YWx1ZSddKTsKKyAgICB9CisKKyAgICBpZiAoZmlsZXNUb0RyYWcpIHsKKyAgICAgICAgZXZlbnRT
ZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzVG9EcmFnKTsKKyAgICAgICAgbW92ZU1vdXNl
VG9DZW50ZXJPZkVsZW1lbnQoZmlsZUlucHV0KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgIH0KKworICAgIHZhciBmaWxlcyA9IGZpbGVJbnB1dC5maWxlczsKKyAgICB2YXIg
Zm9ybURhdGFMaXN0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhTGlzdC5sZW5n
dGg7IGkrKykgeworICAgICAgICBpZiAoZGF0YUxpc3RbaV1bJ3R5cGUnXSA9PSAnZmlsZScpIHsK
KyAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IGdldEZpbGVOYW1lKGRhdGFMaXN0W2ldWyd2YWx1
ZSddKTsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZmlsZXMubGVuZ3RoOyBqKysp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZmlsZU5hbWUgPT0gZmlsZXNbal0ubmFtZSkgeworICAg
ICAgICAgICAgICAgICAgICBmb3JtRGF0YUxpc3QucHVzaCh7J25hbWUnOiBkYXRhTGlzdFtpXVsn
bmFtZSddLCAndmFsdWUnOiBmaWxlc1tqXX0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBmb3JtRGF0YUxpc3QucHVzaCh7J25hbWUnOiBkYXRhTGlzdFtpXVsnbmFtZSddLCAn
dmFsdWUnOiBkYXRhTGlzdFtpXVsndmFsdWUnXX0pOworICAgICAgICB9CisgICAgfQorCisgICAg
c2VuZEZvcm1EYXRhKGZvcm1EYXRhTGlzdCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIGRlYnVnKCJTZW5kaW5nIEZvcm1EYXRhIGNvbnRhaW5pbmcgb25lIHN0cmluZyB3aXRoIGVt
cHR5IG5hbWU6Iik7CisgICAgdGVzdFNlbmRpbmdGb3JtRGF0YShbCisgICAgICAgIHsgJ3R5cGUn
OiAnc3RyaW5nJywgJ25hbWUnOiAnJywgJ3ZhbHVlJzogJ2ZvbycgfQorICAgIF0pOworCisgICAg
ZGVidWcoIlNlbmRpbmcgRm9ybURhdGEgY29udGFpbmluZyBvbmUgZmlsZSB3aXRoIGVtcHR5IG5h
bWU6Iik7CisgICAgdGVzdFNlbmRpbmdGb3JtRGF0YShbCisgICAgICAgIHsgJ3R5cGUnOiAnZmls
ZScsICduYW1lJzogJycsICd2YWx1ZSc6ICdyZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5k
LnR4dCcgfQorICAgIF0pOworCisgICAgZGVidWcoIlNlbmRpbmcgRm9ybURhdGEgY29udGFpbmlu
ZyBvbmUgc3RyaW5nOiIpOworICAgIHRlc3RTZW5kaW5nRm9ybURhdGEoWworICAgICAgICB7ICd0
eXBlJzogJ3N0cmluZycsICduYW1lJzogJ3N0cmluZycsICd2YWx1ZSc6ICdmb28nIH0KKyAgICBd
KTsKKworICAgIGRlYnVnKCJTZW5kaW5nIEZvcm1EYXRhIGNvbnRhaW5pbmcgb25lIGZpbGU6Iik7
CisgICAgdGVzdFNlbmRpbmdGb3JtRGF0YShbCisgICAgICAgIHsgJ3R5cGUnOiAnZmlsZScsICdu
YW1lJzogJ2ZpbGUnLCAndmFsdWUnOiAncmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50
eHQnIH0KKyAgICBdKTsKKworICAgIGRlYnVnKCJTZW5kaW5nIEZvcm1EYXRhIGNvbnRhaW5pbmcg
b25lIHN0cmluZyBhbmQgb25lIGZpbGU6Iik7CisgICAgdGVzdFNlbmRpbmdGb3JtRGF0YShbCisg
ICAgICAgIHsgJ3R5cGUnOiAnc3RyaW5nJywgJ25hbWUnOiAnc3RyaW5nMScsICd2YWx1ZSc6ICdm
b28nIH0sCisgICAgICAgIHsgJ3R5cGUnOiAnZmlsZScsICduYW1lJzogJ2ZpbGUxJywgJ3ZhbHVl
JzogJ3Jlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0JyB9CisgICAgXSk7CisKKyAg
ICBkZWJ1ZygiU2VuZGluZyBGb3JtRGF0YSBjb250YWluaW5nIHR3byBzdHJpbmdzIGFuZCB0d28g
ZmlsZXM6Iik7CisgICAgdGVzdFNlbmRpbmdGb3JtRGF0YShbCisgICAgICAgIHsgJ3R5cGUnOiAn
c3RyaW5nJywgJ25hbWUnOiAnc3RyaW5nMScsICd2YWx1ZSc6ICdmb28nIH0sCisgICAgICAgIHsg
J3R5cGUnOiAnZmlsZScsICduYW1lJzogJ2ZpbGUxJywgJ3ZhbHVlJzogJ3Jlc291cmNlcy9maWxl
LWZvci1kcmFnLXRvLXNlbmQudHh0JyB9LAorICAgICAgICB7ICd0eXBlJzogJ3N0cmluZycsICdu
YW1lJzogJ3N0cmluZzInLCAndmFsdWUnOiAnYmFyJyB9LAorICAgICAgICB7ICd0eXBlJzogJ2Zp
bGUnLCAnbmFtZSc6ICdmaWxlMicsICd2YWx1ZSc6ICdyZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10
by1zZW5kLnR4dCcgfQorICAgIF0pOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgcnVuVGVzdCgpOworICAgIC8vIENsZWFuIHVwIGFmdGVyIG91cnNlbHZlcworICAgIGZpbGVJ
bnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZpbGVJbnB1dCk7Cit9IGVsc2UgeworICAgIHRl
c3RGYWlsZWQoIlRoaXMgdGVzdCBpcyBub3QgaW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcg
RHVtcFJlbmRlclRyZWUiKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3NlbmQtZm9ybS1kYXRhLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1mb3JtLWRhdGEt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNmUxZDkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3NlbmQtZm9y
bS1kYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0IGZvciBzZW5kaW5nIEZv
cm1EYXRhIHZpYSBYTUxIdHRwUmVxdWVzdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1NlbmRpbmcgRm9ybURhdGEgY29udGFpbmluZyBvbmUgc3RyaW5nIHdpdGggZW1wdHkgbmFt
ZToKKworU2VuZGluZyBGb3JtRGF0YSBjb250YWluaW5nIG9uZSBmaWxlIHdpdGggZW1wdHkgbmFt
ZToKKworU2VuZGluZyBGb3JtRGF0YSBjb250YWluaW5nIG9uZSBzdHJpbmc6CitzdHJpbmc9Zm9v
CitTZW5kaW5nIEZvcm1EYXRhIGNvbnRhaW5pbmcgb25lIGZpbGU6CitmaWxlPWZpbGUtZm9yLWRy
YWctdG8tc2VuZC50eHQ6SGVsbG8KK1NlbmRpbmcgRm9ybURhdGEgY29udGFpbmluZyBvbmUgc3Ry
aW5nIGFuZCBvbmUgZmlsZToKK3N0cmluZzE9Zm9vJmZpbGUxPWZpbGUtZm9yLWRyYWctdG8tc2Vu
ZC50eHQ6SGVsbG8KK1NlbmRpbmcgRm9ybURhdGEgY29udGFpbmluZyB0d28gc3RyaW5ncyBhbmQg
dHdvIGZpbGVzOgorc3RyaW5nMT1mb28mc3RyaW5nMj1iYXImZmlsZTE9ZmlsZS1mb3ItZHJhZy10
by1zZW5kLnR4dDpIZWxsbyZmaWxlMj1maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0OkhlbGxvCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWZvcm0tZGF0YS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWZvcm0tZGF0YS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4YzcwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3NlbmQtZm9ybS1kYXRhLmh0bWwKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2VuZC1mb3JtLWRhdGEuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9tdWx0aXBhcnQtcG9zdC1lY2hvLnBocCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL211bHRpcGFydC1w
b3N0LWVjaG8ucGhwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY0M2I1ODgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9tdWx0aXBhcnQtcG9zdC1lY2hvLnBocApAQCAtMCwwICsxLDI5IEBACis8P3Bo
cAoraWYgKHN0cnBvcygkX1NFUlZFUlsnQ09OVEVOVF9UWVBFJ10sICdtdWx0aXBhcnQvZm9ybS1k
YXRhOyBib3VuZGFyeT0nKSAhPSAwKSB7CisgICAgZWNobyAnSW52YWxpZCBDb250ZW50LVR5cGVz
Lic7CisgICAgcmV0dXJuOworfQorCiskdmFsdWVzID0gYXJyYXkoKTsKKworZm9yZWFjaCAoJF9Q
T1NUIGFzICRrZXkgPT4gJHZhbHVlKSB7CisgICAgJHZhbHVlc1tdID0gIiRrZXk9JHZhbHVlIjsK
K30KKworZm9yZWFjaCAoJF9GSUxFUyBhcyAka2V5ID0+ICR2YWx1ZSkgeworICAgICRmaWxlID0g
JF9GSUxFU1ska2V5XTsKKyAgICBpZiAoJGZpbGVbJ2Vycm9yJ10pIHsKKyAgICAgICAgZWNobyAn
VXBsb2FkIGZpbGUgZXJyb3I6ICcgLiAkZmlsZVsnZXJyb3InXTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0gZWxzZSB7CisgICAgICAgICRmcCA9IGZvcGVuKCRmaWxlWyd0bXBfbmFtZSddLCAncicp
OworICAgICAgICBpZiAoJGZwKSB7CisgICAgICAgICAgICAkY29udGVudCA9IGZyZWFkKCRmcCwg
JGZpbGVbJ3NpemUnXSk7CisgICAgICAgICAgICBmY2xvc2UoJGZwKTsKKyAgICAgICAgfQorICAg
ICAgICAkdmFsdWVzW10gPSAka2V5IC4gJz0nIC4gJGZpbGVbJ25hbWUnXSAuICc6JyAuICRjb250
ZW50OworICAgIH0KK30KKworZWNobyBqb2luKCcmJywgJHZhbHVlcyk7Cis/PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAyMzZhOTE1Li5jYTNmOGJl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtODcy
LDYgKzg3Miw5IEBAIHdpbmRvdy5GaWxlLnByb3RvdHlwZSBbb2JqZWN0IEZpbGVQcm90b3R5cGVd
CiB3aW5kb3cuRmlsZUxpc3QgW29iamVjdCBGaWxlTGlzdENvbnN0cnVjdG9yXQogd2luZG93LkZp
bGVMaXN0LnByb3RvdHlwZSBbb2JqZWN0IEZpbGVMaXN0UHJvdG90eXBlXQogd2luZG93LkZpbGVM
aXN0LnByb3RvdHlwZS5pdGVtIFtmdW5jdGlvbl0KK3dpbmRvdy5Gb3JtRGF0YSBbb2JqZWN0IERP
TUZvcm1EYXRhQ29uc3RydWN0b3JdCit3aW5kb3cuRm9ybURhdGEucHJvdG90eXBlIFtvYmplY3Qg
RE9NRm9ybURhdGFQcm90b3R5cGVdCit3aW5kb3cuRm9ybURhdGEucHJvdG90eXBlLmFwcGVuZCBb
ZnVuY3Rpb25dCiB3aW5kb3cuSFRNTEFuY2hvckVsZW1lbnQgW29iamVjdCBIVE1MQW5jaG9yRWxl
bWVudENvbnN0cnVjdG9yXQogd2luZG93LkhUTUxBbmNob3JFbGVtZW50LnByb3RvdHlwZSBbcHJp
bnRlZCBhYm92ZSBhcyB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGVdCiB3aW5kb3cuSFRNTEFwcGxl
dEVsZW1lbnQgW29iamVjdCBIVE1MQXBwbGV0RWxlbWVudENvbnN0cnVjdG9yXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggYWQyMTg3MC4uYjhkZjk3ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC05MDEsNiAr
OTAxLDkgQEAgd2luZG93LkZpbGUucHJvdG90eXBlIFtwcmludGVkIGFib3ZlIGFzIHdpbmRvdy5C
bG9iLnByb3RvdHlwZV0KIHdpbmRvdy5GaWxlTGlzdCBbb2JqZWN0IEZpbGVMaXN0Q29uc3RydWN0
b3JdCiB3aW5kb3cuRmlsZUxpc3QucHJvdG90eXBlIFtvYmplY3QgRmlsZUxpc3RQcm90b3R5cGVd
CiB3aW5kb3cuRmlsZUxpc3QucHJvdG90eXBlLml0ZW0gW2Z1bmN0aW9uXQord2luZG93LkZvcm1E
YXRhIFtvYmplY3QgRE9NRm9ybURhdGFDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5Gb3JtRGF0YS5wcm90
b3R5cGUgW29iamVjdCBET01Gb3JtRGF0YVByb3RvdHlwZV0KK3dpbmRvdy5Gb3JtRGF0YS5wcm90
b3R5cGUuYXBwZW5kIFtmdW5jdGlvbl0KIHdpbmRvdy5IVE1MQWxsQ29sbGVjdGlvbiBbb2JqZWN0
IEhUTUxBbGxDb2xsZWN0aW9uQ29uc3RydWN0b3JdCiB3aW5kb3cuSFRNTEFsbENvbGxlY3Rpb24u
cHJvdG90eXBlIFtvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25Qcm90b3R5cGVdCiB3aW5kb3cuSFRN
TEFsbENvbGxlY3Rpb24ucHJvdG90eXBlLml0ZW0gW2Z1bmN0aW9uXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1kZXNj
cmlwdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnR5LWRlc2NyaXB0b3JzLWV4cGVjdGVkLnR4dAppbmRleCBiMTll
MmI3Li5mNjVjMWM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXByb3BlcnR5LWRlc2NyaXB0b3JzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5LWRl
c2NyaXB0b3JzLWV4cGVjdGVkLnR4dApAQCAtNDksNiArNDksNyBAQCBQQVNTIHR5cGVvZiBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ0V2ZW50RXhjZXB0aW9uJykgaXMg
J29iamVjdAogUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5k
b3csICdFdmVudFNvdXJjZScpIGlzICdvYmplY3QnCiBQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgJ0ZpbGUnKSBpcyAnb2JqZWN0JwogUEFTUyB0eXBl
b2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdGaWxlTGlzdCcpIGlz
ICdvYmplY3QnCitQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdp
bmRvdywgJ0Zvcm1EYXRhJykgaXMgJ29iamVjdCcKIFBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAnRnVuY3Rpb24nKSBpcyAnb2JqZWN0JwogUEFTUyB0
eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdIVE1MQWxsQ29s
bGVjdGlvbicpIGlzICdvYmplY3QnCiBQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHdpbmRvdywgJ0hUTUxBbmNob3JFbGVtZW50JykgaXMgJ29iamVjdCcKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0
YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2RvbS9wcm90
b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDM4NGMwYTEuLmIxMDQ3ZTcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhl
cml0YW5jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9k
b20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApAQCAtODcsNiArODcsOCBAQCBQ
QVNTIGlubmVyLkZpbGUuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLkZpbGUuY29uc3RydWN0
b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLkZpbGVMaXN0LmlzSW5uZXIgaXMgdHJ1ZQog
UEFTUyBpbm5lci5GaWxlTGlzdC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5u
ZXIuRm9ybURhdGEuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLkZvcm1EYXRhLmNvbnN0cnVj
dG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5IVE1MQWxsQ29sbGVjdGlvbi5pc0lubmVy
IGlzIHRydWUKIFBBU1MgaW5uZXIuSFRNTEFsbENvbGxlY3Rpb24uY29uc3RydWN0b3IuaXNJbm5l
ciBpcyB0cnVlCiBQQVNTIGlubmVyLkhUTUxBbmNob3JFbGVtZW50LmlzSW5uZXIgaXMgdHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9qcy9nbG9iYWwtY29uc3Ry
dWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvanMvZ2xv
YmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKaW5kZXggMzM2NDkyOC4uMTUwZDUwZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0
b3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2pzL2ds
b2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CkBAIC00Myw2ICs0Myw3IEBAIFBBU1MgRXZl
bnQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBFdmVudENvbnN0cnVjdG9yXScKIFBBU1MgRXZlbnRF
eGNlcHRpb24udG9TdHJpbmcoKSBpcyAnW29iamVjdCBFdmVudEV4Y2VwdGlvbkNvbnN0cnVjdG9y
XScKIFBBU1MgRmlsZS50b1N0cmluZygpIGlzICdbb2JqZWN0IEZpbGVDb25zdHJ1Y3Rvcl0nCiBQ
QVNTIEZpbGVMaXN0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRmlsZUxpc3RDb25zdHJ1Y3Rvcl0n
CitQQVNTIEZvcm1EYXRhLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgRm9ybURhdGFDb25zdHJ1Y3Rv
cl0nCiBQQVNTIEhUTUxBbGxDb2xsZWN0aW9uLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgSFRNTEFs
bENvbGxlY3Rpb25Db25zdHJ1Y3Rvcl0nCiBQQVNTIEhUTUxBbmNob3JFbGVtZW50LnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3QgSFRNTEFuY2hvckVsZW1lbnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIEhUTUxB
cHBsZXRFbGVtZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgSFRNTEFwcGxldEVsZW1lbnRDb25z
dHJ1Y3Rvcl0nCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC5qc2NiaW5kaW5n
cy5tayBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rCmluZGV4IDg2NmE2
YWMuLmEwNGZjZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRp
bmdzLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLmpzY2JpbmRpbmdzLm1rCkBAIC01
MjAsNiArNTIwLDcgQEAgJChwYXRzdWJzdCAlLmgsJS5jcHAsJChHRU4pKTogJChpbnRlcm1lZGlh
dGVzKS93b3JrZXJzLyUuY3BwIDogJChpbnRlcm1lZGlhdGVzKS8KIAogIyBYTUwKIEdFTiA6PSBc
CisgICAgJChpbnRlcm1lZGlhdGVzKS94bWwvSlNET01Gb3JtRGF0YS5oIFwKICAgICAkKGludGVy
bWVkaWF0ZXMpL3htbC9KU0RPTVBhcnNlci5oIFwKICAgICAkKGludGVybWVkaWF0ZXMpL3htbC9K
U1hNTEh0dHBSZXF1ZXN0LmggXAogICAgICQoaW50ZXJtZWRpYXRlcykveG1sL0pTWE1MSHR0cFJl
cXVlc3RFeGNlcHRpb24uaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC52
OGJpbmRpbmdzLm1rIGIvV2ViQ29yZS9BbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5tawppbmRl
eCAxOWE1OTc1Li5mNmE1ZWZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQuZGVyaXZlZC52
OGJpbmRpbmdzLm1rCisrKyBiL1dlYkNvcmUvQW5kcm9pZC5kZXJpdmVkLnY4YmluZGluZ3MubWsK
QEAgLTUxMyw2ICs1MTMsNyBAQCAkKHBhdHN1YnN0ICUuaCwlLmNwcCwkKEdFTikpOiAkKGludGVy
bWVkaWF0ZXMpL2JpbmRpbmdzLyUuY3BwIDogJChpbnRlcm1lZGlhdGVzKQogCiAjIFhNTAogR0VO
IDo9IFwKKyAgICAkKGludGVybWVkaWF0ZXMpL2JpbmRpbmdzL1Y4RE9NRm9ybURhdGEuaCBcCiAg
ICAgJChpbnRlcm1lZGlhdGVzKS9iaW5kaW5ncy9WOERPTVBhcnNlci5oIFwKICAgICAkKGludGVy
bWVkaWF0ZXMpL2JpbmRpbmdzL1Y4WE1MSHR0cFJlcXVlc3QuaCBcCiAgICAgJChpbnRlcm1lZGlh
dGVzKS9iaW5kaW5ncy9WOFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmggXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9BbmRyb2lkLm1rIGIvV2ViQ29yZS9BbmRyb2lkLm1rCmluZGV4IGYyNjc1ZTAuLjg3
MmU1ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5taworKysgYi9XZWJDb3JlL0FuZHJv
aWQubWsKQEAgLTg5Miw2ICs4OTIsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNf
RklMRVMpIFwKIAl3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgXAogCXdvcmtlcnMvV29y
a2VyVGhyZWFkLmNwcCBcCiAJXAorCXhtbC9ET01Gb3JtRGF0YS5jcHAgXAogCXhtbC9ET01QYXJz
ZXIuY3BwIFwKIAl4bWwvWE1MSHR0cFJlcXVlc3QuY3BwIFwKIAl4bWwvWE1MSHR0cFJlcXVlc3RV
cGxvYWQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMzMwMDgxYS4uNDFhZjBkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMC0wMy0wMSAg
SmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2VuZCBmb3JtIGRhdGEgdmlhIFhNTEh0dHBSZXF1ZXN0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5NzkK
KworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gWE1MSHR0cFJlcXVlc3Qg
MiBzcGVjOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9YTUxIdHRwUmVx
dWVzdC0yLyNmb3JtZGF0YQorCisgICAgICAgIFRoZSBkYXRhIGNvbnN0cnVjdGlvbiBjb2RlIGZv
ciBtdWx0aS1wYXJ0IGZvcm0gaGFzIGJlZW4gbW92ZWQgZnJvbQorICAgICAgICBIVE1MRm9ybUVs
ZW1lbnQ6OmNyZWF0ZUZvcm1EYXRhIHRvIEZvcm1EYXRhOjphcHBlbmRGb3JtRGF0YUxpc3RBc011
bHRpUGFydEZvcm0KKyAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGJ5IGJvdGggSFRN
TEZvcm1FbGVtZW50IGFuZCBYTUxIdHRwUmVxdWVzdC4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL2xvY2FsL3NlbmQtZm9ybS1kYXRhLmh0bWwKKworICAgICAgICAqIEFuZHJvaWQuZGVyaXZl
ZC5qc2NiaW5kaW5ncy5tazoKKyAgICAgICAgKiBBbmRyb2lkLmRlcml2ZWQudjhiaW5kaW5ncy5t
azoKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNYTUxIdHRwUmVxdWVzdDo6c2VuZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1
ZGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEluZGV4Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFD
dXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0Ojpz
ZW5kQ2FsbGJhY2spOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlRm9ybURhdGEpOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRGb3JtRGF0YUxpc3RBc011
bHRpUGFydEZvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKiB4bWwvRE9NRm9ybURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB4bWwvRE9NRm9y
bURhdGEuaDogQWRkZWQuCisgICAgICAgICogeG1sL0RPTUZvcm1EYXRhLmlkbDogQWRkZWQuCisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKwogMjAx
MC0wMy0wMSAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggMTdkOGFkOS4uNGIx
ZmUyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJKU0RvY3Vt
ZW50VHlwZS5jcHAiCiAjaW5jbHVkZSAiSlNET01BcHBsaWNhdGlvbkNhY2hlLmNwcCIKICNpbmNs
dWRlICJKU0RPTUNvcmVFeGNlcHRpb24uY3BwIgorI2luY2x1ZGUgIkpTRE9NRm9ybURhdGEuY3Bw
IgogI2luY2x1ZGUgIkpTRE9NSW1wbGVtZW50YXRpb24uY3BwIgogI2luY2x1ZGUgIkpTRE9NUGFy
c2VyLmNwcCIKICNpbmNsdWRlICJKU0RPTVNlbGVjdGlvbi5jcHAiCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggZDVmZDJjMS4uMGU2OTkwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTA4LDYgKzEwOCw3IEBA
IERPTV9DTEFTU0VTID0gXAogICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQgXAogICAgIERPTUFw
cGxpY2F0aW9uQ2FjaGUgXAogICAgIERPTUNvcmVFeGNlcHRpb24gXAorICAgIERPTUZvcm1EYXRh
IFwKICAgICBET01JbXBsZW1lbnRhdGlvbiBcCiAgICAgRE9NUGFyc2VyIFwKICAgICBET01TZWxl
Y3Rpb24gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggM2VjYzYzNi4uZmUyYmU1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yOTAsNiArMjkw
LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbCBcCiAJ
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsIFwKIAlXZWJDb3JlL3dvcmtlcnMvV29y
a2VyTG9jYXRpb24uaWRsIFwKKwlXZWJDb3JlL3htbC9ET01Gb3JtRGF0YS5pZGwgXAogCVdlYkNv
cmUveG1sL0RPTVBhcnNlci5pZGwgXAogCVdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbCBc
CiAJV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaWRsIFwKQEAgLTE5NTAsNiAr
MTk1MSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVUcmFuc2Zvcm1EYXRhLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlz
dWFsRGF0YS5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5o
IFwKKwlXZWJDb3JlL3htbC9ET01Gb3JtRGF0YS5jcHAgXAorCVdlYkNvcmUveG1sL0RPTUZvcm1E
YXRhLmggXAogCVdlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAgXAogCVdlYkNvcmUveG1sL0RPTVBh
cnNlci5oIFwKIAlXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmOGEyODBl
Li5kZDdiZmE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMjMwLDYgKzIzMCw3IEBACiAgICAgICAgICAgICAnd29ya2Vycy9X
b3JrZXIuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsJywKICAg
ICAgICAgICAgICd3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbCcsCisgICAgICAgICAgICAneG1s
L0RPTUZvcm1EYXRhLmlkbCcsCiAgICAgICAgICAgICAneG1sL0RPTVBhcnNlci5pZGwnLAogICAg
ICAgICAgICAgJ3htbC9YTUxIdHRwUmVxdWVzdC5pZGwnLAogICAgICAgICAgICAgJ3htbC9YTUxI
dHRwUmVxdWVzdEV4Y2VwdGlvbi5pZGwnLApAQCAtNzA3LDYgKzcwOCw3IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9j
YXRpb25DdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01G
b3JtRGF0YUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVNlbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERvY3VtZW50Q3VzdG9tLmNwcCcsCkBAIC0zNjU1LDYgKzM2NTcsOCBAQAogICAgICAgICAgICAg
J3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJUaHJlYWQu
aCcsCisgICAgICAgICAgICAneG1sL0RPTUZvcm1EYXRhLmNwcCcsCisgICAgICAgICAgICAneG1s
L0RPTUZvcm1EYXRhLmgnLAogICAgICAgICAgICAgJ3htbC9ET01QYXJzZXIuY3BwJywKICAgICAg
ICAgICAgICd4bWwvRE9NUGFyc2VyLmgnLAogICAgICAgICAgICAgJ3htbC9OYXRpdmVYUGF0aE5T
UmVzb2x2ZXIuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9XZWJDb3Jl
L1dlYkNvcmUucHJpCmluZGV4IGZjNzlmOGQuLmNjZmJhYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5wcmkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtNTUzLDYgKzU1Myw3IEBA
IElETF9CSU5ESU5HUyArPSBcCiAgICAgd29ya2Vycy9Xb3JrZXIuaWRsIFwKICAgICB3b3JrZXJz
L1dvcmtlckNvbnRleHQuaWRsIFwKICAgICB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbCBcCisg
ICAgeG1sL0RPTUZvcm1EYXRhLmlkbCBcCiAgICAgeG1sL0RPTVBhcnNlci5pZGwgXAogICAgIHht
bC9YTUxIdHRwUmVxdWVzdC5pZGwgXAogICAgIHhtbC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5p
ZGwgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggZDA2OGMwNC4uNDNkZTllOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBy
bworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC05NzUsNiArOTc1LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmNwcCBcCiAgICAgcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5jcHAgXAogICAgIHJlbmRlcmluZy9zdHls
ZS9TdHlsZVZpc3VhbERhdGEuY3BwIFwKKyAgICB4bWwvRE9NRm9ybURhdGEuY3BwIFwKICAgICB4
bWwvRE9NUGFyc2VyLmNwcCBcCiAgICAgeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBcCiAgICAgeG1s
L1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcCBcCkBAIC0xOTQ3LDYgKzE5NDgsNyBAQCBIRUFERVJT
ICs9IFwKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBcCisgICAgeG1sL0RP
TUZvcm1EYXRhLmggXAogICAgIHhtbC9ET01QYXJzZXIuaCBcCiAgICAgeG1sL05hdGl2ZVhQYXRo
TlNSZXNvbHZlci5oIFwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3QuaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5YmZjYjI3Li45YTA4MzE5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5MDUsNiArMjkwNSw2MiBAQAogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRm9ybURhdGEuY3BwIg0K
KwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIi
DQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRv
b2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1
Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NRm9ybURhdGEuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNET01JbXBsZW1l
bnRhdGlvbi5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMjgyNjMs
NiArMjgzMTksMTQgQEAKIAkJCU5hbWU9InhtbCINCiAJCQk+DQogCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlx4bWxcRE9NRm9ybURhdGEuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXERPTUZvcm1EYXRhLmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxcRE9N
UGFyc2VyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0zNTgwOCw2ICszNTg3Miw1OCBA
QAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIi
DQorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29s
DQorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJE
ZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJ
CQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJ
CQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiIN
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wN
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRl
YnVnX0FsbHxXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQk+
DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkv
Pg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0K
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTUdsb2JhbE9iamVjdC5jcHAi
DQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ3MGU2ZDYuLjRjZjBhNmEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTksNiArNjE5LDEyIEBACiAJ
CTJFNDM0NjU4MEY1NDZBOTkwMEIwRjFCQSAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDY1NjBGNTQ2QTk5
MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQkyRTQzNDY1OTBGNTQ2
QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNDM0NjU3MEY1NDZBOTkwMEIwRjFCQSAvKiBDcm9z
c1RocmVhZENvcGllci5oICovOyB9OwogCQkyRUE3NjgwNDBGRTcxMjY0MDBBQjlDOEEgLyogV29y
a2VyU2NyaXB0TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRUE3NjgwMzBGRTcxMjY0MDBBQjlDOEEgLyogV29ya2VyU2NyaXB0TG9h
ZGVyQ2xpZW50LmggKi87IH07CisJCTJFQTkxQzRFMTEzODc1OUQwMEUzNzcwRSAvKiBET01Gb3Jt
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RUE5MUM0QjExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuY3BwICovOyB9OworCQkyRUE5
MUM0RjExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQTkxQzRDMTEzODc1OUQwMEUzNzcwRSAvKiBE
T01Gb3JtRGF0YS5oICovOyB9OworCQkyRUE5MUM1MDExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9y
bURhdGEuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRUE5MUM0RDExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuaWRsICovOyB9OworCQky
RUE5MUM1MzExMzg3NzgzMDBFMzc3MEUgLyogSlNET01Gb3JtRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUE5MUM1MTExMzg3NzgzMDBFMzc3
MEUgLyogSlNET01Gb3JtRGF0YS5jcHAgKi87IH07CisJCTJFQTkxQzU0MTEzODc3ODMwMEUzNzcw
RSAvKiBKU0RPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRUE5MUM1MjExMzg3NzgzMDBFMzc3MEUgLyogSlNET01Gb3JtRGF0YS5oICov
OyB9OworCQkyRUE5MUM1NjExMzg3QzZCMDBFMzc3MEUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUE5MUM1
NTExMzg3QzZCMDBFMzc3MEUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgKi87IH07CiAJCTJF
QUZBRjBFMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQUZBRjBCMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9i
LmNwcCAqLzsgfTsKIAkJMkVBRkFGMEYxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFQUZBRjBDMTBFMkFGMkQw
MDdFRDNENiAvKiBCbG9iLmggKi87IH07CiAJCTJFQ0Y3QURDMTAxNjJCMzgwMDQyN0RFNyAvKiBK
U0Vycm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkVDRjdBREExMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5jcHAgKi87IH07
CkBAIC01OTU1LDYgKzU5NjEsMTIgQEAKIAkJMkU0MzQ2NTYwRjU0NkE5OTAwQjBGMUJBIC8qIENy
b3NzVGhyZWFkQ29waWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU0
MzQ2NTcwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkQ29waWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFQTc2ODAzMEZFNzEyNjQwMEFCOUM4QSAvKiBXb3JrZXJTY3JpcHRM
b2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29ya2VyU2Ny
aXB0TG9hZGVyQ2xpZW50Lmg7IHBhdGggPSB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUE5MUM0QjExMzg3NTlEMDBFMzc3
MEUgLyogRE9NRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRE9NRm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUE5MUM0
QzExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NRm9ybURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkVBOTFDNEQxMTM4NzU5RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBET01Gb3JtRGF0YS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJFQTkxQzUxMTEzODc3ODMwMEUzNzcwRSAvKiBKU0RPTUZvcm1EYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRm9ybURhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRUE5MUM1MjExMzg3NzgzMDBFMzc3MEUgLyogSlNET01Gb3Jt
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUZvcm1EYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFQTkxQzU1MTEzODdDNkIwMEUzNzcwRSAv
KiBKU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRE9NRm9ybURhdGFDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRUFGQUYwQjEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9iLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkVBRkFGMEMxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RUFGQUYwRDEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQmxvYi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgwNyw2ICsxMzgx
OSw4IEBACiAJCUE4M0I3OTIyMENDQjAwRjAwMDBCMDgyNSAvKiBYTUwgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJFQTkxQzUxMTEzODc3ODMwMEUzNzcw
RSAvKiBKU0RPTUZvcm1EYXRhLmNwcCAqLywKKwkJCQkyRUE5MUM1MjExMzg3NzgzMDBFMzc3MEUg
LyogSlNET01Gb3JtRGF0YS5oICovLAogCQkJCTFBQ0U1M0REMEE4RDE4ODEwMDIyOTQ3RCAvKiBK
U0RPTVBhcnNlci5jcHAgKi8sCiAJCQkJMUFDRTUzREUwQThEMTg4MTAwMjI5NDdEIC8qIEpTRE9N
UGFyc2VyLmggKi8sCiAJCQkJQkMzNDhCRDEwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJl
cXVlc3QuY3BwICovLApAQCAtMTQ3OTcsNiArMTQ4MTEsNyBAQAogCQkJCTQ5QzdCQThDMTA0MkY1
QjEwMDA5RDQ0NyAvKiBKU0RvY3VtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0NFNThBRTEwNjFF
OTBDMDA4RkIzNUEgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkxQUMy
MjYxNjBEQjY5Rjc0MDA4OUI2NjkgLyogSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcCAq
LywKKwkJCQkyRUE5MUM1NTExMzg3QzZCMDBFMzc3MEUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5j
cHAgKi8sCiAJCQkJQkNEOUMyNUUwQzE3QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9t
LmNwcCAqLywKIAkJCQk2NTJGQkJCQjBERTI3Q0I2MDAwMUQzODYgLyogSlNET01XaW5kb3dDdXN0
b20uaCAqLywKIAkJCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9t
LmNwcCAqLywKQEAgLTE1MzEzLDYgKzE1MzI4LDkgQEAKIAkJRTFGMDQyNDMwOTgzOTM4OTAwNjY5
NEVBIC8qIHhtbCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMkVBOTFDNEIxMTM4NzU5RDAwRTM3NzBFIC8qIERPTUZvcm1EYXRhLmNwcCAqLywKKwkJCQky
RUE5MUM0QzExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuaCAqLywKKwkJCQkyRUE5MUM0
RDExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuaWRsICovLAogCQkJCTFBQ0U1M0UxMEE4
RDE4RTcwMDIyOTQ3RCAvKiBET01QYXJzZXIuY3BwICovLAogCQkJCTFBQ0U1M0UyMEE4RDE4RTcw
MDIyOTQ3RCAvKiBET01QYXJzZXIuaCAqLywKIAkJCQkxQUNFNTNFMzBBOEQxOEU3MDAyMjk0N0Qg
LyogRE9NUGFyc2VyLmlkbCAqLywKQEAgLTE4NTgzLDYgKzE4NjAxLDggQEAKIAkJCQk2NUUwRTk0
NDExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
OTYyMjk3QTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwQkMyQzc3ODExMzRBOEZDMDAwQjJGNjEgLyogQ2FudmFzU3VyZmFj
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkVBOTFDNEYxMTM4NzU5RDAwRTM3NzBFIC8qIERPTUZv
cm1EYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRUE5MUM1NDExMzg3NzgzMDBFMzc3MEUgLyog
SlNET01Gb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODY4NSw2ICsxODcwNSw3IEBACiAJ
CQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJl
c291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29y
LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpv
b21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQkyRUE5MUM1MDExMzg3NTlEMDBF
Mzc3MEUgLyogRE9NRm9ybURhdGEuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwNzcxLDYgKzIw
NzkyLDkgQEAKIAkJCQlFMTY5ODI2NDExMzQ2N0YzMDA4OTQxMTUgLyogSmF2YVJ1bnRpbWVPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTk2MjI5NzgxMTMzRUZENzAwREM0Q0JCIC8qIEdl
b2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQkMyQzc3NzEx
MzRBOEZDMDAwQjJGNjEgLyogQ2FudmFzU3VyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
RUE5MUM0RTExMzg3NTlEMDBFMzc3MEUgLyogRE9NRm9ybURhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMkVBOTFDNTMxMTM4Nzc4MzAwRTM3NzBFIC8qIEpTRE9NRm9ybURhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMkVBOTFDNTYxMTM4N0M2QjAwRTM3NzBFIC8qIEpTRE9NRm9ybURhdGFD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NRm9ybURhdGFDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1E
YXRhQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjk5YmZm
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3Vz
dG9tLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
RE9NRm9ybURhdGEuaCIKKworI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCisjaW5jbHVkZSAiSlNC
bG9iLmgiCisjaW5jbHVkZSAiSlNET01Gb3JtRGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitK
U1ZhbHVlIEpTRE9NRm9ybURhdGE6OmFwcGVuZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOworCisg
ICAgU3RyaW5nIG5hbWUgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIEpTVmFsdWUg
dmFsdWUgPSBhcmdzLmF0KDEpOworICAgIGlmICh2YWx1ZS5pbmhlcml0cygmSlNCbG9iOjpzX2lu
Zm8pKQorICAgICAgICBpbXBsKCktPmFwcGVuZChuYW1lLCB0b0Jsb2IodmFsdWUpKTsKKyAgICBl
bHNlCisgICAgICAgIGltcGwoKS0+YXBwZW5kKG5hbWUsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpKTsK
KworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRl
eCBlMjBiNmQ5Li5iMmZkZGFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJKU1hNTEh0dHBS
ZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCkBAIC0zNyw2ICszOCw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKKyNpbmNsdWRlICJK
U0RPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRl
ICJKU0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudC5oIgpAQCAtMTExLDYgKzExMyw4IEBA
IEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCiAgICAgICAgICAgICBpbXBsKCktPnNlbmQodG9Eb2N1bWVudCh2YWwpLCBl
Yyk7CiAgICAgICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cygmSlNCbG9iOjpzX2luZm8pKQogICAg
ICAgICAgICAgaW1wbCgpLT5zZW5kKHRvQmxvYih2YWwpLCBlYyk7CisgICAgICAgIGVsc2UgaWYg
KHZhbC5pbmhlcml0cygmSlNET01Gb3JtRGF0YTo6c19pbmZvKSkKKyAgICAgICAgICAgIGltcGwo
KS0+c2VuZCh0b0RPTUZvcm1EYXRhKHZhbCksIGVjKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgaW1wbCgpLT5zZW5kKHZhbC50b1N0cmluZyhleGVjKSwgZWMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDg1YTg0YjIuLjdjNDlh
ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
MTQ0LDYgKzE0NCw3IEBAIHN1YiBHZXRWaXNpYmxlQ2xhc3NOYW1lCiAgICAgbXkgJGNsYXNzTmFt
ZSA9IHNoaWZ0OwogCiAgICAgcmV0dXJuICJET01FeGNlcHRpb24iIGlmICRjbGFzc05hbWUgZXEg
IkRPTUNvcmVFeGNlcHRpb24iOworICAgIHJldHVybiAiRm9ybURhdGEiIGlmICRjbGFzc05hbWUg
ZXEgIkRPTUZvcm1EYXRhIjsKICAgICByZXR1cm4gJGNsYXNzTmFtZTsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCmluZGV4IDdlNTQwZTIuLjRhMmVhMjAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKQEAgLTgyLDYgKzgyLDcgQEAKICNp
bmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAj
aW5jbHVkZSAiRE9NQ29yZUV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCiAj
aW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01QYXJzZXIuaCIKICNp
bmNsdWRlICJET01TZWxlY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRT
b3VyY2VzQWxsSW5PbmUuY3BwCmluZGV4IGI2MjY0OTkuLjc2YWQxNzIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcApAQCAtOTQsNiArOTQsNyBA
QAogI2luY2x1ZGUgImJpbmRpbmdzL1Y4RG9jdW1lbnRGcmFnbWVudC5jcHAiCiAjaW5jbHVkZSAi
YmluZGluZ3MvVjhEb2N1bWVudFR5cGUuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4RE9NQ29y
ZUV4Y2VwdGlvbi5jcHAiCisjaW5jbHVkZSAiYmluZGluZ3MvVjhET01Gb3JtRGF0YS5jcHAiCiAj
aW5jbHVkZSAiYmluZGluZ3MvVjhET01JbXBsZW1lbnRhdGlvbi5jcHAiCiAjaW5jbHVkZSAiYmlu
ZGluZ3MvVjhET01QYXJzZXIuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4RE9NU2VsZWN0aW9u
LmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCmluZGV4IGZiYWE0NjAuLmQ0MDQ0NjMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEluZGV4LmNwcApAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgIlY4RG9jdW1l
bnQuaCIKICNpbmNsdWRlICJWOERvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJWOERvY3Vt
ZW50VHlwZS5oIgorI2luY2x1ZGUgIlY4RE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJWOEVsZW1l
bnQuaCIKICNpbmNsdWRlICJWOEVudGl0eS5oIgogI2luY2x1ZGUgIlY4RW50aXR5UmVmZXJlbmNl
LmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaCBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhJbmRleC5oCmluZGV4IDUwNzAxMGUuLjVlZmUwMDUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJbmRleC5oCkBAIC0zNjMsNiArMzYzLDcgQEAgc3RhdGljIGNvbnN0IGludCB2OERlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ID0gMjsKICAgICBWKENTU1ZBUklBQkxFU0RFQ0xBUkFU
SU9OLCBDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbikgICAgICAgICAgICAgICAgIFwKICAgICBWKENT
U1ZBUklBQkxFU1JVTEUsIENTU1ZhcmlhYmxlc1J1bGUpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBWKERPTUNPUkVFWENFUFRJT04sIERPTUNvcmVFeGNlcHRpb24pICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKERPTUZPUk1EQVRBLCBET01Gb3JtRGF0
YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKERPTUlN
UExFTUVOVEFUSU9OLCBET01JbXBsZW1lbnRhdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICBWKERPTVBBUlNFUiwgRE9NUGFyc2VyKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKERPTVNFTEVDVElPTiwgRE9NU2VsZWN0aW9u
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEzOTMzMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhET01Gb3JtRGF0YS5oIgorCisj
aW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJWOEJsb2IuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhVdGlsaXRpZXMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01G
b3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5Gb3JtRGF0YS5hcHBlbmQoKSIpOworICAgIAorICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJn
dW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgRE9NRm9ybURhdGEqIGRvbUZv
cm1EYXRhID0gVjhET01Gb3JtRGF0YTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisKKyAgICBT
dHJpbmcgbmFtZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1swXSk7CisKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJnID0gYXJnc1sxXTsKKyAgICBpZiAoVjhCbG9iOjpI
YXNJbnN0YW5jZShhcmcpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcpOworICAgICAgICBCbG9iKiBibG9i
ID0gVjhCbG9iOjp0b05hdGl2ZShvYmplY3QpOworICAgICAgICBBU1NFUlQoYmxvYik7CisgICAg
ICAgIGRvbUZvcm1EYXRhLT5hcHBlbmQobmFtZSwgYmxvYik7CisgICAgfSBlbHNlCisgICAgICAg
IGRvbUZvcm1EYXRhLT5hcHBlbmQobmFtZSwgdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhh
cmcpKTsKKworICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggYTZhMGM5OC4uYjZhZmNkYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJsb2Iu
aCIKICNpbmNsdWRlICJWOERvY3VtZW50LmgiCisjaW5jbHVkZSAiVjhET01Gb3JtRGF0YS5oIgog
I2luY2x1ZGUgIlY4SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1
ZGUgIlY4VXRpbGl0aWVzLmgiCkBAIC0xMjAsNiArMTIxLDExIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKICAgICAgICAgICAgIEJsb2IqIGJsb2IgPSBWOEJsb2I6OnRvTmF0aXZlKG9iamVjdCk7
CiAgICAgICAgICAgICBBU1NFUlQoYmxvYik7CiAgICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+
c2VuZChibG9iLCBlYyk7CisgICAgICAgIH0gZWxzZSBpZiAoVjhET01Gb3JtRGF0YTo6SGFzSW5z
dGFuY2UoYXJnKSkgeworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qg
PSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CisgICAgICAgICAgICBET01Gb3Jt
RGF0YSogZG9tRm9ybURhdGEgPSBWOERPTUZvcm1EYXRhOjp0b05hdGl2ZShvYmplY3QpOworICAg
ICAgICAgICAgQVNTRVJUKGRvbUZvcm1EYXRhKTsKKyAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0
LT5zZW5kKGRvbUZvcm1EYXRhLCBlYyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgeG1s
SHR0cFJlcXVlc3QtPnNlbmQodG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmcpLCBlYyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAyZjg4ODk0Li5kM2NiZGQ2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgIkhU
TUxGb3JtRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCi0jaW5jbHVkZSAiQ2hy
b21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTQ2LDcgKzQ0
LDYgQEAKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlZhbGlkaXR5
U3RhdGUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0yMTMsNjIgKzIxMCwyMCBAQCBQYXNzUmVm
UHRyPEZvcm1EYXRhPiBIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZUZvcm1EYXRhKGNvbnN0IENTdHJp
bmcmIGJvdW5kYXJ5KQogICAgICAgICBGb3JtRGF0YUxpc3QgbGlzdChlbmNvZGluZyk7CiAKICAg
ICAgICAgaWYgKCFjb250cm9sLT5kaXNhYmxlZCgpICYmIGNvbnRyb2wtPmFwcGVuZEZvcm1EYXRh
KGxpc3QsIG1fZm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpKSkgewotICAgICAgICAg
ICAgc2l6ZV90IGZvcm1EYXRhTGlzdFNpemUgPSBsaXN0Lmxpc3QoKS5zaXplKCk7Ci0gICAgICAg
ICAgICBBU1NFUlQoZm9ybURhdGFMaXN0U2l6ZSAlIDIgPT0gMCk7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IGZvcm1EYXRhTGlzdFNpemU7IGogKz0gMikgewotICAgICAgICAg
ICAgICAgIGNvbnN0IEZvcm1EYXRhTGlzdDo6SXRlbSYga2V5ID0gbGlzdC5saXN0KClbal07Ci0g
ICAgICAgICAgICAgICAgY29uc3QgRm9ybURhdGFMaXN0OjpJdGVtJiB2YWx1ZSA9IGxpc3QubGlz
dCgpW2ogKyAxXTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fZm9ybURhdGFCdWlsZGVyLmlzTXVs
dGlQYXJ0Rm9ybSgpKSB7CisgICAgICAgICAgICBpZiAobV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0
aVBhcnRGb3JtKCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmRGb3JtRGF0YUxpc3RB
c011bHRpUGFydEZvcm0obGlzdCwgbV9mb3JtRGF0YUJ1aWxkZXIsIGVuY29kaW5nLCBib3VuZGFy
eSwgZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzaXpl
X3QgZm9ybURhdGFMaXN0U2l6ZSA9IGxpc3QubGlzdCgpLnNpemUoKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoZm9ybURhdGFMaXN0U2l6ZSAlIDIgPT0gMCk7CisgICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmb3JtRGF0YUxpc3RTaXplOyBpICs9IDIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRm9ybURhdGFMaXN0OjpJdGVtJiBrZXkgPSBsaXN0Lmxpc3QoKVtp
XTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9ybURhdGFMaXN0OjpJdGVtJiB2YWx1ZSA9
IGxpc3QubGlzdCgpW2kgKyAxXTsKICAgICAgICAgICAgICAgICAgICAgLy8gT21pdCB0aGUgbmFt
ZSAiaXNpbmRleCIgaWYgaXQncyB0aGUgZmlyc3QgZm9ybSBkYXRhIGVsZW1lbnQuCiAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhIGdvb2QgcnVsZT8gSXMgdGhpcyBv
YnNvbGV0ZSBub3c/CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbmNvZGVkRGF0YS5pc0VtcHR5
KCkgJiYga2V5LmRhdGEoKSA9PSAiaXNpbmRleCIpCiAgICAgICAgICAgICAgICAgICAgICAgICBG
b3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoZW5jb2RlZERhdGEsIHZhbHVl
LmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZm9ybURhdGFCdWlsZGVyLmFkZEtleVZhbHVlUGFpckFzRm9ybURhdGEoZW5jb2RlZERh
dGEsIGtleS5kYXRhKCksIHZhbHVlLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGhlYWRlcjsKLSAgICAgICAgICAgICAg
ICAgICAgbV9mb3JtRGF0YUJ1aWxkZXIuYmVnaW5NdWx0aVBhcnRIZWFkZXIoaGVhZGVyLCBib3Vu
ZGFyeSwga2V5LmRhdGEoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRHZW5l
cmF0ZUZpbGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQg
dHlwZSBpcyBGSUxFLCB0aGVuIHdlIGFsc28gbmVlZCB0byBpbmNsdWRlIHRoZSBmaWxlbmFtZQot
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuZmlsZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSB2YWx1ZS5maWxlKCktPnBhdGgoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IHZhbHVlLmZpbGUoKS0+ZmlsZU5h
bWUoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBhcHBsaWNhdGlvbiBz
cGVjaWZ5IGEgZmlsZW5hbWUgaWYgaXQncyBnb2luZyB0byBnZW5lcmF0ZSBhIHJlcGxhY2VtZW50
IGZpbGUgZm9yIHRoZSB1cGxvYWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhdGgu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3RyaW5nIGdlbmVyYXRlZEZpbGVOYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaG91bGRHZW5lcmF0ZUZpbGUgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnNob3VsZFJl
cGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChwYXRoLCBnZW5lcmF0ZWRGaWxlTmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRHZW5lcmF0ZUZpbGUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSA9IGdlbmVyYXRl
ZEZpbGVOYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBpbmNs
dWRlIHRoZSBmaWxlbmFtZT0iLi4iIHBhcnQgaW4gdGhlIGhlYWRlciwgZXZlbiBpZiB0aGUgZmls
ZW5hbWUgaXMgZW1wdHkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZm9ybURhdGFCdWlsZGVy
LmFkZEZpbGVuYW1lVG9NdWx0aVBhcnRIZWFkZXIoaGVhZGVyLCBlbmNvZGluZywgZmlsZU5hbWUp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVOYW1lLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgTUlNRVR5cGVSZWdpc3Ry
eSBmdW5jdGlvbidzIG5hbWUgbWFrZXMgaXQgc291bmQgbGlrZSBpdCB0YWtlcyBhIHBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IGp1c3QgYSBiYXNlbmFtZS4gQnV0IGZp
bGVuYW1lIGlzIG5vdCB0aGUgcGF0aC4gQnV0IG5vdGUgdGhhdCBpdCdzIG5vdCBzYWZlIHRvCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ganVzdCB1c2UgcGF0aCBpbnN0ZWFkIHNpbmNl
IGluIHRoZSBnZW5lcmF0ZWQtZmlsZSBjYXNlIGl0IHdpbGwgbm90IHJlZmxlY3QgdGhlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTUlNRSB0eXBlIG9mIHRoZSBnZW5lcmF0ZWQgZmls
ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoZmlsZU5hbWUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2Zvcm1EYXRhQnVpbGRlci5hZGRDb250ZW50VHlwZVRvTXVsdGlQYXJ0
SGVhZGVyKGhlYWRlciwgbWltZVR5cGUubGF0aW4xKCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgbV9mb3Jt
RGF0YUJ1aWxkZXIuZmluaXNoTXVsdGlQYXJ0SGVhZGVyKGhlYWRlcik7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgLy8gQXBwZW5kIGJvZHkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBl
bmREYXRhKGhlYWRlci5kYXRhKCksIGhlYWRlci5zaXplKCkpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoc2l6ZV90IGRhdGFTaXplID0gdmFsdWUuZGF0YSgpLmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmREYXRhKHZhbHVlLmRhdGEoKS5kYXRhKCksIGRh
dGFTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUuZmlsZSgpICYmICF2
YWx1ZS5maWxlKCktPnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQtPmFwcGVuZEZpbGUodmFsdWUuZmlsZSgpLT5wYXRoKCksIHNob3VsZEdlbmVyYXRlRmls
ZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmREYXRhKCJcclxuIiwgMik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CmluZGV4IDA2NjlhYzcuLjg3ZWYzZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC03MTIsNiArNzEyLDgg
QEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBUb3VjaEV2ZW50Q29uc3RydWN0
b3IgVG91Y2hFdmVudDsKICNlbmRpZgogCisgICAgICAgIGF0dHJpYnV0ZSBET01Gb3JtRGF0YUNv
bnN0cnVjdG9yIEZvcm1EYXRhOworCiAjZW5kaWYgLy8gZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NS
SVBUKQogCiAjaWYgZGVmaW5lZChWOF9CSU5ESU5HKSAmJiBWOF9CSU5ESU5HCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBhZjNiN2YwLi41OTRhYjEwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTIyLDggKzIyLDE0IEBACiAjaW5jbHVkZSAi
Rm9ybURhdGEuaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGb3JtRGF0YUJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJGb3JtRGF0YUxpc3QuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xODksNCArMTk1LDU3IEBAIHZvaWQgRm9ybURhdGE6OnJlbW92ZUdlbmVyYXRlZEZp
bGVzSWZOZWVkZWQoKQogICAgIG1faGFzR2VuZXJhdGVkRmlsZXMgPSBmYWxzZTsKIH0KIAordm9p
ZCBGb3JtRGF0YTo6YXBwZW5kRm9ybURhdGFMaXN0QXNNdWx0aVBhcnRGb3JtKGNvbnN0IEZvcm1E
YXRhTGlzdCYgbGlzdCwgRm9ybURhdGFCdWlsZGVyJiBmb3JtRGF0YUJ1aWxkZXIsIGNvbnN0IFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IENTdHJpbmcmIGJvdW5kYXJ5LCBEb2N1bWVudCog
ZG9jdW1lbnQpIHsKKyAgICBBU1NFUlQoZm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgp
KTsKKyAgICBzaXplX3QgZm9ybURhdGFMaXN0U2l6ZSA9IGxpc3QubGlzdCgpLnNpemUoKTsKKyAg
ICBBU1NFUlQoZm9ybURhdGFMaXN0U2l6ZSAlIDIgPT0gMCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmb3JtRGF0YUxpc3RTaXplOyBpICs9IDIpIHsKKyAgICAgICAgY29uc3QgRm9ybURh
dGFMaXN0OjpJdGVtJiBrZXkgPSBsaXN0Lmxpc3QoKVtpXTsKKyAgICAgICAgY29uc3QgRm9ybURh
dGFMaXN0OjpJdGVtJiB2YWx1ZSA9IGxpc3QubGlzdCgpW2kgKyAxXTsKKyAgICAgICAgVmVjdG9y
PGNoYXI+IGhlYWRlcjsKKyAgICAgICAgZm9ybURhdGFCdWlsZGVyLmJlZ2luTXVsdGlQYXJ0SGVh
ZGVyKGhlYWRlciwgYm91bmRhcnksIGtleS5kYXRhKCkpOworCisgICAgICAgIGJvb2wgc2hvdWxk
R2VuZXJhdGVGaWxlID0gZmFsc2U7CisgICAgICAgIC8vIGlmIHRoZSBjdXJyZW50IHR5cGUgaXMg
RklMRSwgdGhlbiB3ZSBhbHNvIG5lZWQgdG8gaW5jbHVkZSB0aGUgZmlsZW5hbWUKKyAgICAgICAg
aWYgKHZhbHVlLmZpbGUoKSkgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gdmFs
dWUuZmlsZSgpLT5wYXRoKCk7CisgICAgICAgICAgICBTdHJpbmcgZmlsZU5hbWUgPSB2YWx1ZS5m
aWxlKCktPmZpbGVOYW1lKCk7CisKKyAgICAgICAgICAgIC8vIExldCB0aGUgYXBwbGljYXRpb24g
c3BlY2lmeSBhIGZpbGVuYW1lIGlmIGl0J3MgZ29pbmcgdG8gZ2VuZXJhdGUgYSByZXBsYWNlbWVu
dCBmaWxlIGZvciB0aGUgdXBsb2FkLgorICAgICAgICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKSkgewor
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZ2VuZXJhdGVkRmlsZU5hbWU7CisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEdlbmVyYXRlRmlsZSA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
c2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKHBhdGgsIGdlbmVyYXRlZEZp
bGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEdlbmVyYXRlRmlsZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZ2VuZXJhdGVkRmlsZU5hbWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBoYXZlIHRv
IGluY2x1ZGUgdGhlIGZpbGVuYW1lPSIuLiIgcGFydCBpbiB0aGUgaGVhZGVyLCBldmVuIGlmIHRo
ZSBmaWxlbmFtZSBpcyBlbXB0eQorICAgICAgICAgICAgZm9ybURhdGFCdWlsZGVyLmFkZEZpbGVu
YW1lVG9NdWx0aVBhcnRIZWFkZXIoaGVhZGVyLCBlbmNvZGluZywgZmlsZU5hbWUpOworCisgICAg
ICAgICAgICBpZiAoIWZpbGVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgTUlNRVR5cGVSZWdpc3RyeSBmdW5jdGlvbidzIG5hbWUgbWFrZXMgaXQgc291bmQg
bGlrZSBpdCB0YWtlcyBhIHBhdGgsCisgICAgICAgICAgICAgICAgLy8gbm90IGp1c3QgYSBiYXNl
bmFtZS4gQnV0IGZpbGVuYW1lIGlzIG5vdCB0aGUgcGF0aC4gQnV0IG5vdGUgdGhhdCBpdCdzIG5v
dCBzYWZlIHRvCisgICAgICAgICAgICAgICAgLy8ganVzdCB1c2UgcGF0aCBpbnN0ZWFkIHNpbmNl
IGluIHRoZSBnZW5lcmF0ZWQtZmlsZSBjYXNlIGl0IHdpbGwgbm90IHJlZmxlY3QgdGhlCisgICAg
ICAgICAgICAgICAgLy8gTUlNRSB0eXBlIG9mIHRoZSBnZW5lcmF0ZWQgZmlsZS4KKyAgICAgICAg
ICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
clBhdGgoZmlsZU5hbWUpOworICAgICAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YUJ1aWxkZXIuYWRkQ29udGVudFR5cGVUb011
bHRpUGFydEhlYWRlcihoZWFkZXIsIG1pbWVUeXBlLmxhdGluMSgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGZvcm1EYXRhQnVpbGRlci5maW5pc2hNdWx0aVBhcnRIZWFk
ZXIoaGVhZGVyKTsKKworICAgICAgICAvLyBBcHBlbmQgYm9keQorICAgICAgICBhcHBlbmREYXRh
KGhlYWRlci5kYXRhKCksIGhlYWRlci5zaXplKCkpOworICAgICAgICBpZiAoc2l6ZV90IGRhdGFT
aXplID0gdmFsdWUuZGF0YSgpLmxlbmd0aCgpKQorICAgICAgICAgICAgYXBwZW5kRGF0YSh2YWx1
ZS5kYXRhKCkuZGF0YSgpLCBkYXRhU2l6ZSk7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlLmZpbGUo
KSAmJiAhdmFsdWUuZmlsZSgpLT5wYXRoKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgYXBwZW5k
RmlsZSh2YWx1ZS5maWxlKCktPnBhdGgoKSwgc2hvdWxkR2VuZXJhdGVGaWxlKTsKKworICAgICAg
ICBhcHBlbmREYXRhKCJcclxuIiwgMik7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDcyNzhmMmUuLjc2OThkZTMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yNyw2ICsyNywxMCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaHJvbWVDbGllbnQ7CitjbGFzcyBEb2N1bWVudDsK
K2NsYXNzIEZvcm1EYXRhQnVpbGRlcjsKK2NsYXNzIEZvcm1EYXRhTGlzdDsKK2NsYXNzIFRleHRF
bmNvZGluZzsKIAogY2xhc3MgRm9ybURhdGFFbGVtZW50IHsKIHB1YmxpYzoKQEAgLTczLDYgKzc3
LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBi
b29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGFwcGVuZEZvcm1EYXRh
TGlzdEFzTXVsdGlQYXJ0Rm9ybShjb25zdCBGb3JtRGF0YUxpc3QmLCBGb3JtRGF0YUJ1aWxkZXIm
LCBjb25zdCBUZXh0RW5jb2RpbmcmLCBjb25zdCBDU3RyaW5nJiBib3VuZGFyeSwgRG9jdW1lbnQq
KTsKIAogICAgIHZvaWQgZmxhdHRlbihWZWN0b3I8Y2hhcj4mKSBjb25zdDsgLy8gb21pdHMgZmls
ZXMKICAgICBTdHJpbmcgZmxhdHRlblRvU3RyaW5nKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVzCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3htbC9ET01Gb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3htbC9ET01G
b3JtRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlZGE3Nwot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUveG1sL0RPTUZvcm1EYXRhLmNwcApAQCAtMCwwICsx
LDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCisKKyNp
bmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitET01Gb3JtRGF0YTo6RE9NRm9ybURhdGEoKSA6IG1fbGlzdChlbmNvZGlu
ZygpKQoreworfQorCit2b2lkIERPTUZvcm1EYXRhOjphcHBlbmQoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7CisgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9saXN0LmFwcGVuZERhdGEobmFtZSwgdmFsdWUpOworfQorCit2b2lkIERPTUZvcm1EYXRh
OjphcHBlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBCbG9iKiBibG9iKSB7CisgICAgaWYgKCFuYW1l
LmlzRW1wdHkoKSAmJiAhYmxvYi0+cGF0aCgpLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8
RmlsZT4gZmlsZSA9IHN0YXRpY19jYXN0PEZpbGUqPihibG9iKTsKKyAgICAgICAgbV9saXN0LmFw
cGVuZEZpbGUobmFtZSwgZmlsZS5yZWxlYXNlKCkpOworICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvRE9NRm9ybURhdGEuaCBiL1dlYkNv
cmUveG1sL0RPTUZvcm1EYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzZlNGRjMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUveG1sL0RPTUZvcm1EYXRhLmgKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRE9NRm9ybURhdGFfaAorI2RlZmluZSBET01Gb3JtRGF0YV9o
CisKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmxvYjsKK2NsYXNzIFN0cmluZzsKKwor
Y2xhc3MgRE9NRm9ybURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxET01Gb3JtRGF0YT4geworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZvcm1EYXRhPiBjcmVhdGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01Gb3JtRGF0YSgpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwor
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgbmFtZSwgQmxvYiogYmxvYik7CisKKyAgICBj
b25zdCBGb3JtRGF0YUxpc3QmIGxpc3QoKSBjb25zdCB7IHJldHVybiBtX2xpc3Q7IH0KKyAgICBj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gVVRGOEVuY29kaW5n
KCk7IH0KKworcHJpdmF0ZToKKyAgICBET01Gb3JtRGF0YSgpOworCisgICAgRm9ybURhdGFMaXN0
IG1fbGlzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERPTUZv
cm1EYXRhX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL0RPTUZvcm1EYXRhLmlkbCBiL1dlYkNv
cmUveG1sL0RPTUZvcm1EYXRhLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NGIxYmY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS94bWwvRE9NRm9ybURhdGEuaWRs
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgeG1sIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAg
IENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAorICAg
ICAgICBHZW5lcmF0ZVRvSlMKKyAgICBdIERPTUZvcm1EYXRhIHsKKyAgICAgICAgLy8gdm9pZCBh
cHBlbmQoRE9NU3RyaW5nIG5hbWUsIEJsb2IgdmFsdWUpOworICAgICAgICBbQ3VzdG9tXSB2b2lk
IGFwcGVuZChpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZhbHVlKTsKKyAgICB9Owor
Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMzI4MThkZi4uYzg1ZGFmNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtMjYsMTIgKzI2LDE0IEBACiAjaW5jbHVkZSAiQ2FjaGUuaCIKICNp
bmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgi
CisjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJF
dmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRm9ybURhdGFCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSFRU
UFBhcnNlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgpAQCAtNDUwLDYgKzQ1MiwzNCBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpzZW5kKEJsb2IqIGJvZHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGNyZWF0ZVJlcXVl
c3QoZWMpOwogfQogCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kKERPTUZvcm1EYXRhKiBib2R5
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWluaXRTZW5kKGVjKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKG1fbWV0aG9kICE9ICJHRVQiICYmIG1fbWV0aG9kICE9ICJIRUFE
IiAmJiBtX3VybC5wcm90b2NvbEluSFRUUEZhbWlseSgpKSB7CisgICAgICAgIEZvcm1EYXRhQnVp
bGRlciBmb3JtRGF0YUJ1aWxkZXI7CisgICAgICAgIGZvcm1EYXRhQnVpbGRlci5zZXRJc011bHRp
UGFydEZvcm0odHJ1ZSk7CisgICAgICAgIFZlY3RvcjxjaGFyPiBib3VuZGFyeSA9IGZvcm1EYXRh
QnVpbGRlci5nZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKCk7CisKKyAgICAgICAgU3RyaW5n
IGNvbnRlbnRUeXBlID0gZ2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIik7CisgICAgICAg
IGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNvbnRlbnRUeXBlID0g
Im11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSI7CisgICAgICAgICAgICBjb250ZW50VHlw
ZSArPSBib3VuZGFyeS5kYXRhKCk7CisgICAgICAgICAgICBzZXRSZXF1ZXN0SGVhZGVySW50ZXJu
YWwoIkNvbnRlbnQtVHlwZSIsIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgfQorCisgICAgICAgIG1f
cmVxdWVzdEVudGl0eUJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIG1fcmVxdWVz
dEVudGl0eUJvZHktPmFwcGVuZEZvcm1EYXRhTGlzdEFzTXVsdGlQYXJ0Rm9ybShib2R5LT5saXN0
KCksIGZvcm1EYXRhQnVpbGRlciwgYm9keS0+ZW5jb2RpbmcoKSwgYm91bmRhcnkuZGF0YSgpLCBk
b2N1bWVudCgpKTsKKworICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICAgICBmb3Jt
RGF0YUJ1aWxkZXIuYWRkQm91bmRhcnlUb011bHRpUGFydEhlYWRlcihidWZmZXIsIGJvdW5kYXJ5
LmRhdGEoKSwgdHJ1ZSk7CisgICAgICAgIG1fcmVxdWVzdEVudGl0eUJvZHktPmFwcGVuZERhdGEo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgfQorCisgICAgY3JlYXRlUmVxdWVz
dChlYyk7Cit9CisKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHByZXNlbmNlIG9mIHVwbG9hZCBldmVudCBsaXN0ZW5l
cnMgZm9yY2VzIHVzIHRvIHVzZSBwcmVmbGlnaHRpbmcgYmVjYXVzZSBQT1NUaW5nIHRvIGFuIFVS
TCB0aGF0IGRvZXMgbm90CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
IGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAyY2VhNWM2Li40N2ZiNjc3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJl
YWRhYmxlTG9hZGVyOwpAQCAtNzMsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kKERv
Y3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBzZW5kKERPTUZvcm1EYXRhKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgYWJv
cnQoKTsKICAgICB2b2lkIHNldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBvdmVycmlk
ZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpOwo=
</data>
<flag name="review"
          id="32723"
          type_id="1"
          status="-"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="32724"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>