<?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>121378</bug_id>
          
          <creation_ts>2013-09-15 00:14:27 -0700</creation_ts>
          <short_desc>Shrink factory functions</short_desc>
          <delta_ts>2013-09-16 18:29:10 -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>WebKit Misc.</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>buildbot</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>929369</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 00:14:27 -0700</bug_when>
    <thetext>Shrink factory functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929377</commentid>
    <comment_count>1</comment_count>
      <attachid>211691</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 00:55:02 -0700</bug_when>
    <thetext>Created attachment 211691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929379</commentid>
    <comment_count>2</comment_count>
      <attachid>211693</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 01:07:56 -0700</bug_when>
    <thetext>Created attachment 211693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929382</commentid>
    <comment_count>3</comment_count>
      <attachid>211693</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-15 01:10:39 -0700</bug_when>
    <thetext>Comment on attachment 211693
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=211693&amp;action=review

r=me

&gt; Source/WebCore/ChangeLog:55
&gt; +        * html/HTMLElement.cpp:
&gt; +        (WebCore::populateEventNameForAttributeLocalNameMap): Changed to use an
&gt; +        AtomicStringImpl* as the key instead of AtomicString, since all the strings
&gt; +        come from the local names of tags, and so don&apos;t need to be ref&apos;d. This saves
&gt; +        a bit of reference count churn when building the map and is the same pattern
&gt; +        used in some maps in the make_names.pl script above.

Clever.

&gt; Source/WebCore/ChangeLog:84
&gt; +        (WebCore::WebVTTParser::constructTreeFromToken): Pass docuemnt reference rather than

Typo, document.

&gt; Source/WebCore/dom/make_names.pl:999
&gt; -        print F &quot;        if (PassRefPtr&lt;$parameters{namespace}Element&gt; element = function(qName, document, formElement, createdByParser))\n&quot;;
&gt; -        print F &quot;            return element;\n&quot;;
&gt; +        print F &quot;        if (RefPtr&lt;$parameters{namespace}Element&gt; element = function(name, document, formElement, createdByParser))\n&quot;;
&gt; +        print F &quot;            return element.release();\n&quot;;

Heh, I resisted telling Sam to make this change just a few hours ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929388</commentid>
    <comment_count>4</comment_count>
      <attachid>211695</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 01:24:34 -0700</bug_when>
    <thetext>Created attachment 211695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929389</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 01:33:35 -0700</bug_when>
    <thetext>I’ll land this once either EWS or my local build is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929390</commentid>
    <comment_count>6</comment_count>
      <attachid>211695</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-15 01:38:07 -0700</bug_when>
    <thetext>Comment on attachment 211695
Patch

Attachment 211695 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1801789</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929391</commentid>
    <comment_count>7</comment_count>
      <attachid>211695</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-15 01:45:06 -0700</bug_when>
    <thetext>Comment on attachment 211695
Patch

Attachment 211695 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1808554</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929392</commentid>
    <comment_count>8</comment_count>
      <attachid>211695</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-15 01:45:39 -0700</bug_when>
    <thetext>Comment on attachment 211695
Patch

Attachment 211695 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1916277</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929393</commentid>
    <comment_count>9</comment_count>
      <attachid>211696</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 01:48:41 -0700</bug_when>
    <thetext>Created attachment 211696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929394</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 01:49:01 -0700</bug_when>
    <thetext>Committed r155801: &lt;http://trac.webkit.org/changeset/155801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929537</commentid>
    <comment_count>11</comment_count>
      <attachid>211696</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-15 19:35:35 -0700</bug_when>
    <thetext>Comment on attachment 211696
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=211696&amp;action=review

&gt; Source/WebCore/dom/make_names.pl:755
&gt; +    print(F &quot;    new (NotNull, static_cast&lt;void*&gt;(&amp;${lowerNamespace}NamespaceURI)) AtomicString(${lowerNamespace}NS);\n&quot;);

This change breaks the Windows build:

10&gt;C:\Projects\WebKit\OpenSource\WebKitBuild\Release\obj32\WebCore\DerivedSources\WebKitFontFamilyNames.cpp(143): error C2440: &apos;static_cast&apos; : cannot convert from &apos;const WTF::AtomicString *&apos; to &apos;void *&apos;
10&gt;          Conversion loses qualifiers

Perhaps this was doing the wrong thing, and the C-style cast was masking the problem. But the build is now broken.

This may be related to the declaration of SKIP_STATIC_CONSTRUCTORS_ON_GCC, which is not active on Windows.

Any ideas for resolving this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929547</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-15 22:37:01 -0700</bug_when>
    <thetext>Seems fine to change it back to a C-style cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930008</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-16 18:29:10 -0700</bug_when>
    <thetext>According to http://andreaskling.com/~kling/sizes/r155849/WebCore.txt, this patch actually made HTMLNames::init bigger. Something is going wrong.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211691</attachid>
            <date>2013-09-15 00:55:02 -0700</date>
            <delta_ts>2013-09-15 01:07:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121378-20130915005502.patch</filename>
            <type>text/plain</type>
            <size>44492</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM2ODEzMmUyODhjMDQ1
MTI0ODFhMjQ2YWE4ZDAyYmM0ODJhYjA5OC4uZjllODNhNGE1YzBhMTMzMDY4YTM0OWM3NzhmY2My
MjU4OWJkNWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEzLTA5LTE1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgZmFjdG9yeSBmdW5j
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MTM3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgbWFrZXMgdGhlIGZ1bmN0aW9ucyB0aGF0IGJ1aWxkcyBmb3VyIGRpZmZlcmVudCB0eXBlcyBv
ZiBwZXItZWxlbWVudCB0YWJsZXMKKyAgICAgICAgYWxsIGhhdmUgc21hbGxlciBjb2RlIHNpemUu
CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBUd2Vha2VkIGhvdyBIVE1MIGFuZCBT
Vkcgd3JhcHBlciBmYWN0b3JpZXMgYXJlIG1hZGUgYSBiaXQuCisgICAgICAgIEl0IHdhcyBPSywg
YnV0IGEgbGl0dGxlIHNsb3BweS4gCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOiBDaGFuZ2VkIHRvIGNhbGwg
dGhlIGNyZWF0ZUVsZW1lbnQgZnVuY3Rpb25zCisgICAgICAgIGluIHRoZSBmYWN0b3JpZXMuIEFs
c28gZGlkIHNvbWUgc3R5bGUgaW1wcm92ZW1lbnQuCisKKyAgICAgICAgKiBkb20vbWFrZV9uYW1l
cy5wbDoKKyAgICAgICAgKHByaW50Q29uc3RydWN0b3JTaWduYXR1cmUpOiBNYWtlIGNvbnN0cnVj
dG9ycyB0YWtlIGEgRG9jdW1lbnQmIGluc3RlYWQgb2YgCisgICAgICAgIGEgRG9jdW1lbnQqLgor
ICAgICAgICAocHJpbnRDb25zdHJ1Y3RvckludGVyaW9yKTogVXBkYXRlZCBmb3IgRG9jdW1lbnQm
IGluc3RlYWQgb2YgRG9jdW1lbnQqLgorICAgICAgICAocHJpbnRGdW5jdGlvblRhYmxlKTogUmVu
YW1lZCBmcm9tIHByaW50RnVuY3Rpb25Jbml0cywgYmVjYXVzZSB0aGlzIG5vdworICAgICAgICBj
cmVhdGVzIHRhYmxlIGVudHJpZXMuIFRoZSBhY3R1YWwgY29kZSB0byBhZGQgZWFjaCBmdW5jdGlv
biBpcyBub3cgZG9uZQorICAgICAgICBpbiBhIGxvb3AgaW5zdGVhZC4KKyAgICAgICAgKHByaW50
TmFtZXNIZWFkZXJGaWxlKTogTWFkZSB0aGUgdGFibGUgY29uc3QuCisgICAgICAgIChwcmludE5h
bWVzQ3BwRmlsZSk6IE1hZGUgdGhlIHRhYmxlIGNvbnN0LgorICAgICAgICAocHJpbnREZWZpbml0
aW9ucyk6IEdlbmVyYXRlIGEgdGFibGUsIHRhYmxlIGVudHJpZXMsIGFuZCBhIGxvb3AgdGhhdCBj
YWxscworICAgICAgICBjcmVhdGVRdWFsaWZpZWROYW1lLCByYXRoZXIgdGhhbiBhbiAidW5yb2xs
ZWQgbG9vcCIuCisgICAgICAgIChwcmludEZhY3RvcnlDcHBGaWxlKTogVHdlYWtlZCBpbmRlbnRh
dGlvbi4gVXBkYXRlZCB0byB0YWtlIERvY3VtZW50JiBpbnN0ZWFkCisgICAgICAgIG9mIERvY3Vt
ZW50Ki4gR2VuZXJhdGUgYSB0YWJsZSwgdGFibGUgZW50cmllcywgYW5kIGEgbG9vcCB0aGF0IGJ1
aWxkcyBhIG1hcCwKKyAgICAgICAgcmF0aGVyIHRoYW4gYW4gInVucm9sbGVkIiBsb29wLgorICAg
ICAgICAocHJpbnRGYWN0b3J5SGVhZGVyRmlsZSk6IEVsaW1pbmF0ZWQgdGhlIHVudXNlZCBjcmVh
dGVFbGVtZW50IG1lbWJlciBmdW5jdGlvbgorICAgICAgICB0aGF0IHdhcyBwYXJ0IG9mIGEgZHJl
YW0gb2YgZmFjdG9yeSBvYmplY3RzIGluIGEgbmFtZXNwYWNlIHJlZ2lzdHJ5LCBnaXZpbmcKKyAg
ICAgICAgdGhlIG5hbWUgY3JlYXRlRWxlbWVudCB0byB0aGUgc3RhdGljIG1lbWJlciBmdW5jdGlv
biBzbyBpdCB3b3VsZCBiZSBsZXNzCisgICAgICAgIHJlZHVuZGFudC4gQWxzbyBtYWRlIHRoZSBm
dW5jdGlvbiB0YWtlcyBhIERvY3VtZW50JiBpbnN0ZWFkIG9mIERvY3VtZW50Ki4KKyAgICAgICAg
QWxzbyBtYWRlIHRoZSBkZWZhdWx0ICJub3QgY3JlYXRlZCBieSBwYXJzZXIiLCBzaW5jZSB0aGUg
cGFyc2VyIGlzIHRoZSBzaW1wbGVyCisgICAgICAgIHVzZSBjYXNlLCBvdXRudW1iZXJlZCBieSB0
aGUgbm9uLXBhcnNlciB1c2VzLCBhdCBsZWFzdCBhdCB0aGUgbW9tZW50LiBBbHNvLAorICAgICAg
ICB1c2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5
Q3BwRmlsZSk6IEdlbmVyYXRlIGEgdGFibGUsIHRhYmxlIGVudHJpZXMsIGFuZCBhIGxvb3AKKyAg
ICAgICAgdGhhdCBidWlsZHMgYSBtYXAgcmF0aGVyIHRoYW4gYW4gInVucm9sbGVkIiBsb29wLgor
CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVIVE1MRWxlbWVudCk6IFB1dCB0aGUgbnVsbCBjaGVjayBoZXJlIHRoYXQgdXNlZCB0byBi
ZSBpbgorICAgICAgICBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQsIGFuZCBjYWxs
IHdpdGggYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhCisgICAgICAgIHBvaW50ZXIuIEFsc28gZG9u
J3QgbmVlZCB0byBwYXNzICIwLCBmYWxzZSIgc2luY2UgIm5vdCBjcmVhdGVkIGJ5IHRoZSBwYXJz
ZXIiCisgICAgICAgIGlzIG5vdyB0aGUgZGVmYXVsdC4KKyAgICAgICAgKiBodG1sL0hUTUxEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQp
OiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cG9wdWxhdGVFdmVudE5hbWVGb3JBdHRyaWJ1dGVMb2NhbE5hbWVNYXApOiBDaGFuZ2Vk
IHRvIHVzZSBhbgorICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhcyB0aGUga2V5IGluc3RlYWQg
b2YgQXRvbWljU3RyaW5nLCBzaW5jZSBhbGwgdGhlIHN0cmluZ3MKKyAgICAgICAgY29tZSBmcm9t
IHRoZSBsb2NhbCBuYW1lcyBvZiB0YWdzLCBhbmQgc28gZG9uJ3QgbmVlZCB0byBiZSByZWYnZC4g
VGhpcyBzYXZlcworICAgICAgICBhIGJpdCBvZiByZWZlcmVuY2UgY291bnQgY2h1cm4gd2hlbiBi
dWlsZGluZyB0aGUgbWFwIGFuZCBpcyB0aGUgc2FtZSBwYXR0ZXJuCisgICAgICAgIHVzZWQgaW4g
c29tZSBtYXBzIGluIHRoZSBtYWtlX25hbWVzLnBsIHNjcmlwdCBhYm92ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IFVwZGF0ZWQgZm9yIGNoYW5nZSBh
Ym92ZS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dCk6IENoYW5nZWQgdG8gY2FsbCB0aGUKKyAgICAgICAgSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVh
dGVFbGVtZW50IGZ1bmN0aW9uIHVuZGVyIGl0cyBuZXcgbmFtZSB3aXRoIGEgcmVmZXJlbmNlCisg
ICAgICAgIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVGb3JJbmRleCk6IE1vcmUg
Y29uc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6YWRkTmFtZXMpOiBNb3Jl
IGNvbnN0LgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6IFBhc3Mg
YSByZWZlcmVuY2UgdG8KKyAgICAgICAgV2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhU
TUxFbGVtZW50LgorCisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQpOiBUYWtlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxl
bWVudDo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50Ojpj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKTogUGFzcyBhCisgICAgICAg
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlciB0byBjcmVhdGUuCisgICAgICAgIChXZWJD
b3JlOjpXZWJWVFRFbGVtZW50OjpjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQpOiBUYWtlIGEg
cmVmZXJlbmNlIGluc3RlYWQKKyAgICAgICAgb2YgYSBwb2ludGVyLCBhbmQgdXBkYXRlIHVzZXMg
b2YgSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50LiBBbHNvIG1hZGUKKyAgICAgICAg
dGhpcyByZXR1cm4gbnVsbCB3aGVuIGEgYmFkIG5vZGUgdHlwZSBpcyBwYXNzZWQgaW4sIHdoaWNo
IHNob3VsZCBuZXZlciBoYXBwZW4uCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1l
bnQuaDogVXNlIERvY3VtZW50JiBpbnN0ZWFkIG9mIERvY3VtZW50Ki4gUmVtb3ZlZCB1bnVzZWQK
KyAgICAgICAgYW5kIHVuZGVmaW5lZCBjcmVhdGUvY29uc3RydWN0b3Igb3ZlcmxvYWRzLgorCisg
ICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKTogUGFzcyBkb2N1ZW1udCByZWZl
cmVuY2UgcmF0aGVyIHRoYW4KKyAgICAgICAgcG9pbnRlciB0byBXZWJWVFRFbGVtZW50OjpjcmVh
dGUuCisKIDIwMTMtMDktMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ1RURV0gTm9kZSBzdWJjbGFzc2VzIHNob3VsZCB0YWtlIGEgRG9jdW1lbnQgYnkgcmVmZXJl
bmNlIGluIHRoZWlyIGNvbnN0cnVjdG9yIChQYXJ0IDUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCBjZDBhZDFiMzQ3OGIwZGRjYTkyYjcxZmNiYTA2NTgwN2JhN2M3NDM0Li4xNjc2
MTkwMzQzMThmNzE3OGNlMTdjMjQzMmQwY2IzZmY0YmVmZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTY4NCw2ICs2ODQsNyBAQCBhbGwgOiBcCiAgICAgSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcCBcCiAgICAgSFRNTEVudGl0eVRhYmxlLmNwcCBcCiAgICAgSFRNTE5hbWVzLmNw
cCBcCisgICAgSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCBcCiAgICAgSlNTVkdFbGVt
ZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKICAgICBQbHVnSW5zUmVzb3VyY2VzLmggXAogICAgIFNW
R0VsZW1lbnRGYWN0b3J5LmNwcCBcCkBAIC05MDEsMTggKzkwMiwxNiBAQCBlbmRpZgogCiBpZmRl
ZiBIVE1MX0ZMQUdTCiAKLUhUTUxFbGVtZW50RmFjdG9yeS5jcHAgSFRNTE5hbWVzLmNwcCA6IGRv
bS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtIGJpbmRpbmdzL3Njcmlw
dHMvU3RhdGljU3RyaW5nLnBtIGh0bWwvSFRNTFRhZ05hbWVzLmluIGh0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluCitIVE1MRWxlbWVudEZhY3RvcnkuY3BwIEhUTUxOYW1lcy5jcHAgSlNIVE1MRWxl
bWVudFdyYXBwZXJGYWN0b3J5LmNwcCA6IGRvbS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3Njcmlw
dHMvSGFzaGVyLnBtIGJpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtIGh0bWwvSFRNTFRh
Z05hbWVzLmluIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCiAJcGVybCAtSSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvaHRtbC9IVE1MVGFnTmFtZXMu
aW4gLS1hdHRycyAkKFdlYkNvcmUpL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIC0tZmFjdG9y
eSAtLXdyYXBwZXJGYWN0b3J5IC0tZXh0cmFEZWZpbmVzICIkKEhUTUxfRkxBR1MpIgogCiBlbHNl
CiAKLUhUTUxFbGVtZW50RmFjdG9yeS5jcHAgSFRNTE5hbWVzLmNwcCA6IGRvbS9tYWtlX25hbWVz
LnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtIGJpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3Ry
aW5nLnBtIGh0bWwvSFRNTFRhZ05hbWVzLmluIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCitI
VE1MRWxlbWVudEZhY3RvcnkuY3BwIEhUTUxOYW1lcy5jcHAgSlNIVE1MRWxlbWVudFdyYXBwZXJG
YWN0b3J5LmNwcCA6IGRvbS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBt
IGJpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtIGh0bWwvSFRNTFRhZ05hbWVzLmluIGh0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCiAJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvaHRtbC9IVE1MVGFnTmFtZXMuaW4gLS1hdHRycyAk
KFdlYkNvcmUpL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIC0tZmFjdG9yeSAtLXdyYXBwZXJG
YWN0b3J5CiAKIGVuZGlmCiAKLUpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgOiBIVE1M
TmFtZXMuY3BwCi0KIFhNTE5TTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mv
c2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0geG1sL3ht
bG5zYXR0cnMuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLWF0
dHJzICQoV2ViQ29yZSkveG1sL3htbG5zYXR0cnMuaW4KIApAQCAtOTM1LDE3ICs5MzQsMTUgQEAg
ZW5kaWYKIAogaWZkZWYgU1ZHX0ZMQUdTCiAKLVNWR0VsZW1lbnRGYWN0b3J5LmNwcCBTVkdOYW1l
cy5jcHAgOiBkb20vbWFrZV9uYW1lcy5wbCBiaW5kaW5ncy9zY3JpcHRzL0hhc2hlci5wbSBiaW5k
aW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSBzdmcvc3ZndGFncy5pbiBzdmcvc3ZnYXR0cnMu
aW4KK0pTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCBTVkdFbGVtZW50RmFjdG9yeS5jcHAg
U1ZHTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIu
cG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gc3ZnL3N2Z3RhZ3MuaW4gc3ZnL3N2
Z2F0dHJzLmluCiAJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdz
ICQoV2ViQ29yZSkvc3ZnL3N2Z3RhZ3MuaW4gLS1hdHRycyAkKFdlYkNvcmUpL3N2Zy9zdmdhdHRy
cy5pbiAtLWV4dHJhRGVmaW5lcyAiJChTVkdfRkxBR1MpIiAtLWZhY3RvcnkgLS13cmFwcGVyRmFj
dG9yeQogZWxzZQogCi1TVkdFbGVtZW50RmFjdG9yeS5jcHAgU1ZHTmFtZXMuY3BwIDogZG9tL21h
a2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9T
dGF0aWNTdHJpbmcucG0gc3ZnL3N2Z3RhZ3MuaW4gc3ZnL3N2Z2F0dHJzLmluCitKU1NWR0VsZW1l
bnRXcmFwcGVyRmFjdG9yeS5jcHAgU1ZHRWxlbWVudEZhY3RvcnkuY3BwIFNWR05hbWVzLmNwcCA6
IGRvbS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtIGJpbmRpbmdzL3Nj
cmlwdHMvU3RhdGljU3RyaW5nLnBtIHN2Zy9zdmd0YWdzLmluIHN2Zy9zdmdhdHRycy5pbgogCXBl
cmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tdGFncyAkKFdlYkNvcmUpL3N2
Zy9zdmd0YWdzLmluIC0tYXR0cnMgJChXZWJDb3JlKS9zdmcvc3ZnYXR0cnMuaW4gLS1mYWN0b3J5
IC0td3JhcHBlckZhY3RvcnkKIAogZW5kaWYKIAotSlNTVkdFbGVtZW50V3JhcHBlckZhY3Rvcnku
Y3BwIDogU1ZHTmFtZXMuY3BwCi0KIFhMaW5rTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwg
YmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcu
cG0gc3ZnL3hsaW5rYXR0cnMuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0
cyAkPCAtLWF0dHJzICQoV2ViQ29yZSkvc3ZnL3hsaW5rYXR0cnMuaW4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggZGU4ZWE4NGIyYTk5ZDNkZmMxMDk5MDczYmJhMzRlNDUyMDdhYWU3Yi4u
NzlmZjYwNmUwOGRmZTM4MDA3NmUxYTdiODEwNGUzYzdhYWVlOTkwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC04MjAsNyArODIwLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkMKICAg
ICB9CiAKICAgICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBIVE1MRWxl
bWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG5h
bWUsIHhodG1sTmFtZXNwYWNlVVJJKSwgdGhpcywgMCwgZmFsc2UpOworICAgICAgICByZXR1cm4g
SFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IG5hbWUsIHhodG1sTmFtZXNwYWNlVVJJKSwgKnRoaXMpOwogCiAgICAgcmV0dXJuIGNyZWF0ZUVs
ZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgbnVsbEF0b20pLCBmYWxzZSk7CiB9
CkBAIC0xMTEyLDMyICsxMTEyLDMyIEBAIGJvb2wgRG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNl
Rm9yQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKICAgICByZXR1cm4gaGFz
VmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhxTmFtZSk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHNo
b3VsZCByZWFsbHkgYmUgaW4gYSBwb3NzaWJsZSBFbGVtZW50RmFjdG9yeSBjbGFzcwotUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiBxTmFtZSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCisvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVh
bGx5IGJlIGluIGEgcG9zc2libGUgRWxlbWVudEZhY3RvcnkgY2xhc3MuCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIFJlZlB0cjxFbGVtZW50PiBlOworICAgIFJl
ZlB0cjxFbGVtZW50PiBlbGVtZW50OwogCiAgICAgLy8gRklYTUU6IFVzZSByZWdpc3RlcmVkIG5h
bWVzcGFjZXMgYW5kIGxvb2sgdXAgaW4gYSBoYXNoIHRvIGZpbmQgdGhlIHJpZ2h0IGZhY3Rvcnku
Ci0gICAgaWYgKHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IHhodG1sTmFtZXNwYWNlVVJJKQotICAg
ICAgICBlID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChxTmFtZSwgdGhp
cywgMCwgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4
aHRtbE5hbWVzcGFjZVVSSSkKKyAgICAgICAgZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6
Y3JlYXRlRWxlbWVudChuYW1lLCAqdGhpcywgbnVsbHB0ciwgY3JlYXRlZEJ5UGFyc2VyKTsKICNp
ZiBFTkFCTEUoU1ZHKQotICAgIGVsc2UgaWYgKHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IFNWR05h
bWVzOjpzdmdOYW1lc3BhY2VVUkkpCi0gICAgICAgIGUgPSBTVkdFbGVtZW50RmFjdG9yeTo6Y3Jl
YXRlU1ZHRWxlbWVudChxTmFtZSwgdGhpcywgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBlbHNlIGlm
IChuYW1lLm5hbWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAg
ICAgIGVsZW1lbnQgPSBTVkdFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChuYW1lLCAqdGhp
cywgY3JlYXRlZEJ5UGFyc2VyKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgZWxz
ZSBpZiAocU5hbWUubmFtZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFj
ZVVSSSkKLSAgICAgICAgZSA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVNYXRoTUxFbGVt
ZW50KHFOYW1lLCB0aGlzLCBjcmVhdGVkQnlQYXJzZXIpOworICAgIGVsc2UgaWYgKG5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKKyAgICAgICAg
ZWxlbWVudCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KG5hbWUsICp0aGlz
LCBjcmVhdGVkQnlQYXJzZXIpOwogI2VuZGlmCiAKLSAgICBpZiAoZSkKKyAgICBpZiAoZWxlbWVu
dCkKICAgICAgICAgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzID0gdHJ1ZTsKICAgICBl
bHNlCi0gICAgICAgIGUgPSBFbGVtZW50OjpjcmVhdGUocU5hbWUsICZkb2N1bWVudCgpKTsKKyAg
ICAgICAgZWxlbWVudCA9IEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCAmZG9jdW1lbnQoKSk7CiAKICAg
ICAvLyA8aW1hZ2U+IHVzZXMgaW1nVGFnIHNvIHdlIG5lZWQgYSBzcGVjaWFsIHJ1bGUuCi0gICAg
QVNTRVJUKChxTmFtZS5tYXRjaGVzKGltYWdlVGFnKSAmJiBlLT50YWdRTmFtZSgpLm1hdGNoZXMo
aW1nVGFnKSAmJiBlLT50YWdRTmFtZSgpLnByZWZpeCgpID09IHFOYW1lLnByZWZpeCgpKSB8fCBx
TmFtZSA9PSBlLT50YWdRTmFtZSgpKTsKKyAgICBBU1NFUlQoKG5hbWUubWF0Y2hlcyhpbWFnZVRh
ZykgJiYgZWxlbWVudC0+dGFnUU5hbWUoKS5tYXRjaGVzKGltZ1RhZykgJiYgZWxlbWVudC0+dGFn
UU5hbWUoKS5wcmVmaXgoKSA9PSBuYW1lLnByZWZpeCgpKSB8fCBuYW1lID09IGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwogCi0gICAgcmV0dXJuIGUucmVsZWFzZSgpOworICAgIHJldHVybiBlbGVtZW50
LnJlbGVhc2UoKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6cmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IGFjMzFlNmY4ZGJiZmE3MTY0
ODI2YTJiZWM5ZDgyMzExZTBiNDNlMzkuLjBjNDc5MjRlZmI1MDJhNzZhM2JmZWIyM2RmZGFlOWM2
NmY5M2E1ZTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xMjcsNyArMTI3LDcgQEAg
aWYgKGxlbmd0aCgkZm9udE5hbWVzSW4pKSB7CiAgICAgcHJpbnQgRiBTdGF0aWNTdHJpbmc6Okdl
bmVyYXRlU3RyaW5nQXNzZXJ0cyhcJXBhcmFtZXRlcnMpOwogCiAgICAgd2hpbGUgKCBteSAoJG5h
bWUsICRpZGVudGlmaWVyKSA9IGVhY2ggJXBhcmFtZXRlcnMgKSB7Ci0gICAgICAgIHByaW50IEYg
IiAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmJG5hbWUpIEF0b21pY1N0cmluZygke25hbWV9SW1w
bCk7XG4iOworICAgICAgICBwcmludCBGICIgICAgbmV3IChOb3ROdWxsLCBzdGF0aWNfY2FzdDx2
b2lkKj4oJiRuYW1lKSkgQXRvbWljU3RyaW5nKCR7bmFtZX1JbXBsKTtcbiI7CiAgICAgfQogCiAg
ICAgcHJpbnQgRiAifVxufVxufVxuIjsKQEAgLTM3OSw3ICszNzksNyBAQCBzdWIgcHJpbnRDb25z
dHJ1Y3RvclNpZ25hdHVyZQogewogICAgIG15ICgkRiwgJHRhZ05hbWUsICRjb25zdHJ1Y3Rvck5h
bWUsICRjb25zdHJ1Y3RvclRhZ05hbWUpID0gQF87CiAKLSAgICBwcmludCBGICJzdGF0aWMgUGFz
c1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHtjb25zdHJ1Y3Rvck5hbWV9
Q29uc3RydWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgJGNvbnN0cnVjdG9yVGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50IjsKKyAgICBwcmludCBGICJzdGF0aWMgUGFzc1JlZlB0cjwkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHtjb25zdHJ1Y3Rvck5hbWV9Q29uc3RydWN0b3IoY29u
c3QgUXVhbGlmaWVkTmFtZSYgJGNvbnN0cnVjdG9yVGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
IjsKICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsKICAgICAgICAg
cHJpbnQgRiAiLCBIVE1MRm9ybUVsZW1lbnQqIjsKICAgICAgICAgcHJpbnQgRiAiIGZvcm1FbGVt
ZW50IiBpZiAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVu
dH07CkBAIC0zOTksNyArMzk5LDcgQEAgc3ViIHByaW50Q29uc3RydWN0b3JJbnRlcmlvcgogICAg
ICMgSGFuZGxlIG1lZGlhIGVsZW1lbnRzLgogICAgIGlmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9
e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewogICAgICAgICBwcmludCBGIDw8RU5E
Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsKICAgICBpZiAoIU1lZGlhUGxh
eWVyOjppc0F2YWlsYWJsZSgpIHx8IChzZXR0aW5ncyAmJiAhc2V0dGluZ3MtPm1lZGlhRW5hYmxl
ZCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCkBAIC00MjcsNyArNDI3LDcgQEAgRU5ECiAK
ICAgICAjIENhbGwgdGhlIGNvbnN0cnVjdG9yIHdpdGggdGhlIHJpZ2h0IHBhcmFtZXRlcnMuCiAg
ICAgcHJpbnQgRiAiICAgIHJldHVybiAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoJGNvbnN0cnVj
dG9yVGFnTmFtZSI7Ci0gICAgcHJpbnQgRiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25zdHJ1
Y3RvclRha2VzRG9jdW1lbnRSZWZlcmVuY2V9ID8gIiwgKmRvY3VtZW50IiA6ICIsIGRvY3VtZW50
Iik7CisgICAgcHJpbnQgRiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25zdHJ1Y3RvclRha2Vz
RG9jdW1lbnRSZWZlcmVuY2V9ID8gIiwgZG9jdW1lbnQiIDogIiwgJmRvY3VtZW50Iik7CiAgICAg
cHJpbnQgRiAiLCBmb3JtRWxlbWVudCIgaWYgJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25zdHJ1
Y3Rvck5lZWRzRm9ybUVsZW1lbnR9OwogICAgIHByaW50IEYgIiwgY3JlYXRlZEJ5UGFyc2VyIiBp
ZiAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXJ9
OwogICAgIHByaW50IEYgIik7XG59XG4iOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHN1YiBwcmludENv
bnN0cnVjdG9ycwogICAgIH0KIH0KIAotc3ViIHByaW50RnVuY3Rpb25Jbml0cworc3ViIHByaW50
RnVuY3Rpb25UYWJsZQogewogICAgIG15ICgkRiwgJHRhZ0NvbnN0cnVjdG9yTWFwKSA9IEBfOwog
ICAgIG15ICV0YWdDb25zdHJ1Y3Rvck1hcCA9ICUkdGFnQ29uc3RydWN0b3JNYXA7CkBAIC00OTQs
OSArNDk0LDkgQEAgc3ViIHByaW50RnVuY3Rpb25Jbml0cwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfSkgewotICAgICAgICAgICAg
cHJpbnQgRiAiICAgIGFkZFRhZygke3RhZ05hbWV9VGFnLCAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9
e21hcFRvVGFnTmFtZX1UbyR7dGFnTmFtZX1Db25zdHJ1Y3Rvcik7XG4iOworICAgICAgICAgICAg
cHJpbnQgRiAiICAgICAgICB7ICR7dGFnTmFtZX1UYWcsICRlbmFibGVkVGFnc3skdGFnTmFtZX17
bWFwVG9UYWdOYW1lfVRvJHt0YWdOYW1lfUNvbnN0cnVjdG9yIH0sXG4iOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcHJpbnQgRiAiICAgIGFkZFRhZygke3RhZ05hbWV9VGFnLCAkdGFn
Q29uc3RydWN0b3JNYXB7JHRhZ05hbWV9Q29uc3RydWN0b3IpO1xuIjsKKyAgICAgICAgICAgIHBy
aW50IEYgIiAgICAgICAgeyAke3RhZ05hbWV9VGFnLCAkdGFnQ29uc3RydWN0b3JNYXB7JHRhZ05h
bWV9Q29uc3RydWN0b3IgfSxcbiI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGNvbmRpdGlv
bmFsKSB7CkBAIC02ODksMTIgKzY4OSwxMiBAQCBzdWIgcHJpbnROYW1lc0hlYWRlckZpbGUKIAog
ICAgIGlmIChrZXlzICVhbGxUYWdzKSB7CiAgICAgICAgIHByaW50IEYgImNvbnN0IHVuc2lnbmVk
ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzQ291bnQgPSAiLCBzY2FsYXIoa2V5cyAlYWxsVGFn
cyksICI7XG4iOwotICAgICAgICBwcmludCBGICJXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiogZ2V0
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3MoKTtcbiI7CisgICAgICAgIHByaW50IEYgImNvbnN0
IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0ICogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fVRhZ3MoKTtcbiI7CiAgICAgfQogCiAgICAgaWYgKGtleXMgJWFsbEF0dHJzKSB7CiAgICAgICAg
IHByaW50IEYgImNvbnN0IHVuc2lnbmVkICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyc0NvdW50
ID0gIiwgc2NhbGFyKGtleXMgJWFsbEF0dHJzKSwgIjtcbiI7Ci0gICAgICAgIHByaW50IEYgIldl
YkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoKTtc
biI7CisgICAgICAgIHByaW50IEYgImNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0
ICogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzKCk7XG4iOwogICAgIH0KIAogICAgIHBy
aW50SW5pdCgkRiwgMSk7CkBAIC03MjIsMTAgKzcyMiwxMCBAQCBzdWIgcHJpbnROYW1lc0NwcEZp
bGUKICAgICAgICAgICAgIHByaW50IEYgIkRFRklORV9HTE9CQUwoUXVhbGlmaWVkTmFtZSwgIiwg
JG5hbWUsICJUYWcpXG4iOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBwcmludCBGICJc
blxuV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdz
KClcbiI7Ci0gICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29yZTo6UXVhbGlmaWVk
TmFtZSogJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3NbXSA9IHtcbiI7CisgICAgICAgIHByaW50
IEYgIlxuXG5jb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiBjb25zdCAqIGdldCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1UYWdzKClcbiI7CisgICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMg
Y29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSogY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fVRhZ3NbXSA9IHtcbiI7CiAgICAgICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICVhbGxUYWdz
KSB7Ci0gICAgICAgICAgICBwcmludCBGICIgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1l
KikmJHtuYW1lfVRhZyxcbiI7CisgICAgICAgICAgICBwcmludCBGICIgICAgICAgIHN0YXRpY19j
YXN0PFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqPigmJHtuYW1lfVRhZyksXG4iOwogICAgICAgICB9
CiAgICAgICAgIHByaW50IEYgIiAgICB9O1xuIjsKICAgICAgICAgcHJpbnQgRiAiICAgIHJldHVy
biAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncztcbiI7CkBAIC03MzcsMTMgKzczNywxMyBAQCBz
dWIgcHJpbnROYW1lc0NwcEZpbGUKICAgICAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtleXMgJWFs
bEF0dHJzKSB7CiAgICAgICAgICAgICBwcmludCBGICJERUZJTkVfR0xPQkFMKFF1YWxpZmllZE5h
bWUsICIsICRuYW1lLCAiQXR0cilcbiI7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnQgRiAiXG5c
bldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMo
KVxuIjsKLSAgICAgICAgcHJpbnQgRiAie1xuICAgIHN0YXRpYyBXZWJDb3JlOjpRdWFsaWZpZWRO
YW1lKiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cltdID0ge1xuIjsKKyAgICAgICAgcHJpbnQg
RiAiXG5cbmNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0ICogZ2V0JHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUF0dHJzKClcbiI7CisgICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMg
Y29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSogY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUF0dHJzW10gPSB7XG4iOwogICAgICAgICBmb3IgbXkgJG5hbWUgKHNvcnQga2V5cyAlYWxsQXR0
cnMpIHsKLSAgICAgICAgICAgIHByaW50IEYgIiAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5h
bWUqKSYke25hbWV9QXR0cixcbiI7CisgICAgICAgICAgICBwcmludCBGICIgICAgICAgIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqPigmJHtuYW1lfUF0dHIpLFxuIjsKICAgICAg
ICAgfQogICAgICAgICBwcmludCBGICIgICAgfTtcbiI7Ci0gICAgICAgIHByaW50IEYgIiAgICBy
ZXR1cm4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHI7XG4iOworICAgICAgICBwcmludCBGICIg
ICAgcmV0dXJuICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycztcbiI7CiAgICAgICAgIHByaW50
IEYgIn1cbiI7CiAgICAgfQogCkBAIC03NTIsNyArNzUyLDcgQEAgc3ViIHByaW50TmFtZXNDcHBG
aWxlCiAgICAgcHJpbnQoRiAiICAgIEF0b21pY1N0cmluZyAke2xvd2VyTmFtZXNwYWNlfU5TKFwi
JHBhcmFtZXRlcnN7bmFtZXNwYWNlVVJJfVwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTtcblxuIik7CiAKICAgICBwcmludChGICIgICAgLy8gTmFtZXNwYWNlXG4iKTsKLSAg
ICBwcmludChGICIgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJiR7bG93ZXJOYW1lc3BhY2V9TmFt
ZXNwYWNlVVJJKSBBdG9taWNTdHJpbmcoJHtsb3dlck5hbWVzcGFjZX1OUyk7XG4iKTsKKyAgICBw
cmludChGICIgICAgbmV3IChOb3ROdWxsLCBzdGF0aWNfY2FzdDx2b2lkKj4oJiR7bG93ZXJOYW1l
c3BhY2V9TmFtZXNwYWNlVVJJKSkgQXRvbWljU3RyaW5nKCR7bG93ZXJOYW1lc3BhY2V9TlMpO1xu
Iik7CiAgICAgcHJpbnQoRiAiXG4iKTsKICAgICBwcmludCBGIFN0YXRpY1N0cmluZzo6R2VuZXJh
dGVTdHJpbmdBc3NlcnRzKFwlYWxsU3RyaW5ncyk7CiAKQEAgLTg0OCwyMCArODQ4LDM0IEBAIHN1
YiBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzCiBzdWIgcHJpbnREZWZpbml0aW9ucwog
ewogICAgIG15ICgkRiwgJG5hbWVzUmVmLCAkdHlwZSwgJG5hbWVzcGFjZVVSSSkgPSBAXzsKLSAg
ICBteSAkc2luZ3VsYXJUeXBlID0gc3Vic3RyKCR0eXBlLCAwLCAtMSk7Ci0gICAgbXkgJHNob3J0
VHlwZSA9IHN1YnN0cigkc2luZ3VsYXJUeXBlLCAwLCA0KTsKLSAgICBteSAkc2hvcnRDYW1lbFR5
cGUgPSB1Y2ZpcnN0KCRzaG9ydFR5cGUpOwotICAgIG15ICRzaG9ydFVwcGVyVHlwZSA9IHVjKCRz
aG9ydFR5cGUpOworCisgICAgbXkgJHNob3J0Q2FtZWxUeXBlID0gdWNmaXJzdChzdWJzdHIoc3Vi
c3RyKCR0eXBlLCAwLCAtMSksIDAsIDQpKTsKKyAgICBteSAkY2FwaXRhbGl6ZWRUeXBlID0gdWNm
aXJzdCgkdHlwZSk7CiAgICAgCi0gICAgcHJpbnQgRiAiICAgIC8vICIgLiB1Y2ZpcnN0KCR0eXBl
KSAuICJcbiI7CitwcmludCBGIDw8RU5ECiAKKyAgICBzdHJ1Y3QgJHtjYXBpdGFsaXplZFR5cGV9
VGFibGVFbnRyeSB7CisgICAgICAgIHZvaWQqIHRhcmdldEFkZHJlc3M7CisgICAgICAgIFN0cmlu
Z0ltcGwmIG5hbWU7CisgICAgfTsKKworICAgIGNvbnN0ICR7Y2FwaXRhbGl6ZWRUeXBlfVRhYmxl
RW50cnkgJHt0eXBlfVRhYmxlW10gPSB7CitFTkQKKzsKICAgICBmb3IgbXkgJG5hbWUgKHNvcnQg
a2V5cyAlJG5hbWVzUmVmKSB7Ci0gICAgICAgICMgVG8gZ2VuZXJhdGUgbGVzcyBjb2RlIGluIGlu
aXQoKSwgdGhlIGNvbW1vbiBjYXNlIG9mIG51bGxBdG9tIGZvciB0aGUgbmFtZXNwYWNlLCB3ZSBj
YWxsIGNyZWF0ZVF1YWxpZmllZE5hbWUoKSB3aXRob3V0IHBhc3NpbmcgJG5hbWVzcGFjZVVSSS4K
LSAgICAgICAgaWYgKCRuYW1lc3BhY2VVUkkgZXEgIm51bGxBdG9tIikgewotICAgICAgICAgICAg
cHJpbnQgRiAiICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoKHZvaWQqKSYkbmFtZSIsIiR7c2hvcnRD
YW1lbFR5cGV9LCAke25hbWV9SW1wbCk7XG4iOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcHJpbnQgRiAiICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoKHZvaWQqKSYkbmFtZSIsIiR7c2hv
cnRDYW1lbFR5cGV9LCAke25hbWV9SW1wbCwgJG5hbWVzcGFjZVVSSSk7XG4iOwotICAgICAgICB9
CisgICAgICAgIHByaW50IEYgIiAgICAgICAgeyAmJG5hbWUkc2hvcnRDYW1lbFR5cGUsICoke25h
bWV9SW1wbCB9LFxuIjsKKyAgICB9CisKK3ByaW50IEYgPDxFTkQKKyAgICB9OworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoJHt0eXBlfVRhYmxlKTsgKytp
KQorRU5ECis7CisgICAgaWYgKCRuYW1lc3BhY2VVUkkgZXEgIm51bGxBdG9tIikgeworICAgICAg
ICBwcmludCBGICIgICAgICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoJHt0eXBlfVRhYmxlW2ldLnRh
cmdldEFkZHJlc3MsICYke3R5cGV9VGFibGVbaV0ubmFtZSk7XG4iOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHByaW50IEYgIiAgICAgICAgY3JlYXRlUXVhbGlmaWVkTmFtZSgke3R5cGV9VGFibGVb
aV0udGFyZ2V0QWRkcmVzcywgJiR7dHlwZX1UYWJsZVtpXS5uYW1lLCAkbmFtZXNwYWNlVVJJKTtc
biI7CiAgICAgfQogfQogCkBAIC04NzMsMTEzICs4ODcsOTkgQEAgc3ViIHByaW50RmFjdG9yeUNw
cEZpbGUKICAgICBteSAkRjsKICAgICBvcGVuIEYsICI+JGNwcFBhdGgiOwogCi1wcmludExpY2Vu
c2VIZWFkZXIoJEYpOworICAgIG15ICRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVjbGFyYXRpb24g
PSAiIjsKKyAgICBteSAkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRlZmluaXRpb24gPSAiIjsKKyAg
ICAkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRlY2xhcmF0aW9uID0gIiwgSFRNTEZvcm1FbGVtZW50
KiIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CisgICAgJGZvcm1FbGVtZW50
QXJndW1lbnRGb3JEZWZpbml0aW9uID0gIiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCIg
aWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CiAKLXByaW50IEYgPDxFTkQKKyAg
ICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOworCisgICAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogRU5ECi07CisgICAgOwogCi1wcmludCBGICJcbiNpZiAkcGFyYW1ldGVyc3tn
dWFyZEZhY3RvcnlXaXRofVxuXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9Owor
ICAgIHByaW50IEYgIlxuI2lmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9XG5cbiIgaWYg
JHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKLXByaW50IEYgPDxFTkQKKyAgICBwcmlu
dCBGIDw8RU5ECiAjaW5jbHVkZSAiJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5
LmgiCi0jaW5jbHVkZSAiJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzLmgiCi1FTkQKLTsKIAot
cHJpbnRFbGVtZW50SW5jbHVkZXMoJEYpOworI2luY2x1ZGUgIiRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1OYW1lcy5oIgogCi1wcmludCBGICJcbiNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPlxuIjsKK0VO
RAorICAgIDsKIAotcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcygkRiwgMCk7CisgICAg
cHJpbnRFbGVtZW50SW5jbHVkZXMoJEYpOworICAgIHByaW50Q29uZGl0aW9uYWxFbGVtZW50SW5j
bHVkZXMoJEYsIDApOwogCi1wcmludCBGIDw8RU5ECisgICAgcHJpbnQgRiA8PEVORAogCiAjaW5j
bHVkZSAiQ29udGV4dEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAj
aWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKICNpbmNsdWRlICJDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczsK
IAotRU5ECi07Ci0KLXByaW50IEYgInR5cGVkZWYgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudD4gKCpDb25zdHJ1Y3RvckZ1bmN0aW9uKShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqIjsKLXByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiIgaWYgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7Ci1wcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTtcbiI7Ci1wcmludCBGIDw8RU5ECi10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IENvbnN0cnVjdG9yRnVuY3Rpb24+IEZ1bmN0aW9uTWFwOwotCi1zdGF0aWMgRnVuY3Rpb25NYXAq
IGdGdW5jdGlvbk1hcCA9IDA7Cit0eXBlZGVmIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+ICgqJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24p
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRl
Y2xhcmF0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKIEVORAotOwotCi1teSAldGFnQ29u
c3RydWN0b3JNYXAgPSBidWlsZENvbnN0cnVjdG9yTWFwKCk7CisgICAgOwogCi1wcmludENvbnN0
cnVjdG9ycygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7CisgICAgbXkgJXRhZ0NvbnN0cnVjdG9y
TWFwID0gYnVpbGRDb25zdHJ1Y3Rvck1hcCgpOwogCi1wcmludCBGIDw8RU5ECi1zdGF0aWMgdm9p
ZCBhZGRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnLCBDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1
bmMpCi17Ci0gICAgZ0Z1bmN0aW9uTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgZnVu
Yyk7Ci19CisgICAgcHJpbnRDb25zdHJ1Y3RvcnMoJEYsIFwldGFnQ29uc3RydWN0b3JNYXApOwog
Ci1zdGF0aWMgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcCgpCisgICAgcHJpbnQgRiA8PEVORAorc3Rh
dGljIHZvaWQgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5j
dGlvbj4mIG1hcCkKIHsKLSAgICBBU1NFUlQoIWdGdW5jdGlvbk1hcCk7CisgICAgc3RydWN0IFRh
YmxlRW50cnkgeworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lOworICAgICAgICAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbiBmdW5jdGlvbjsKKyAgICB9
OwogCi0gICAgLy8gQ3JlYXRlIHRoZSB0YWJsZS4KLSAgICBnRnVuY3Rpb25NYXAgPSBuZXcgRnVu
Y3Rpb25NYXA7Ci0gICAgCi0gICAgLy8gUG9wdWxhdGUgaXQgd2l0aCBjb25zdHJ1Y3RvciBmdW5j
dGlvbnMuCisgICAgY29uc3QgVGFibGVFbnRyeSB0YWJsZVtdID0gewogRU5ECi07Ci0KLXByaW50
RnVuY3Rpb25Jbml0cygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7Ci0KLXByaW50IEYgIn1cbiI7
CisgICAgOwogCisgICAgcHJpbnRGdW5jdGlvblRhYmxlKCRGLCBcJXRhZ0NvbnN0cnVjdG9yTWFw
KTsKIAotcHJpbnQgRiAiXG5QYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZSRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQiOwotcHJpbnQgRiAiLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50IiBpZiAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKLXByaW50IEYgIiwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpXG57XG4iOworICAgIHByaW50IEYgPDxFTkQKKyAgICB9OwogCi1wcmludCBGIDw8
RU5ECi0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpCisgICAgICAgIG1h
cC5hZGQodGFibGVbaV0ubmFtZS5sb2NhbE5hbWUoKS5pbXBsKCksIHRhYmxlW2ldLmZ1bmN0aW9u
KTsKK30KIAorUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9y
RGVmaW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCit7CiBFTkQKLTsKKyAgICA7CiAKLWlm
ICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IG5lICJIVE1MIiBhbmQgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfSBuZSAiU1ZHIikgewotcHJpbnQgRiA8PEVORAorICAgIGlmICgkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9IG5lICJIVE1MIiBhbmQgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBuZSAiU1ZHIikgewor
ICAgICAgICBwcmludCBGIDw8RU5ECiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAg
IFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygpOworICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGRvY3VtZW50LnNldHRpbmdzKCk7CiAgICAgaWYgKHNldHRpbmdzICYmIHNl
dHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQogICAgICAg
ICByZXR1cm4gMDsKICNlbmRpZgogRU5ECi07Ci0KLX0KKyAgICAgICAgOworICAgIH0KIAotcHJp
bnQgRiA8PEVORAorICAgIHByaW50IEYgPDxFTkQKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQotICAgIGlmIChkb2N1bWVudC0+cmVnaXN0cnkoKSkgewotICAgICAgICBpZiAoUmVmUHRyPEN1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBkb2N1bWVudC0+cmVnaXN0cnko
KS0+ZmluZChudWxsUU5hbWUoKSwgcU5hbWUpKSB7CisgICAgaWYgKGRvY3VtZW50LnJlZ2lzdHJ5
KCkpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0
cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0cnkoKS0+ZmluZChudWxsUU5hbWUoKSwgbmFtZSkpIHsK
ICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY29uc3RydWN0b3ItPmNyZWF0
ZUVsZW1lbnQoKTsKICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5pcyRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nh
c3Q8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+KGVsZW1lbnQucmVsZWFzZSgpKTsKQEAg
LTk4NywyNCArOTg3LDMxIEBAIHByaW50IEYgPDxFTkQKICAgICB9CiAjZW5kaWYKIAotICAgIGlm
ICghZ0Z1bmN0aW9uTWFwKQotICAgICAgICBjcmVhdGVGdW5jdGlvbk1hcCgpOwotICAgIGlmIChD
b25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUubG9j
YWxOYW1lKCkuaW1wbCgpKSkgeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlv
bj4+IGZ1bmN0aW9uczsKKyAgICBpZiAoZnVuY3Rpb25zLmdldCgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChmdW5jdGlvbnMuZ2V0
KCkpOworICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbiBm
dW5jdGlvbiA9IGZ1bmN0aW9ucy5nZXQoKS5nZXQobmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpKSB7
CiBFTkQKLTsKKyAgICA7CiAKICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRN
TCIpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUGFzc1JlZlB0cjwkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9uKHFOYW1lLCBkb2N1bWVudCwg
Zm9ybUVsZW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpXG4iOwotICAgICAgICBwcmludCBGICIgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDtcbiI7CisgICAgICAgIHByaW50IEYgIiAgICAgICAgaWYg
KFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9u
KG5hbWUsIGRvY3VtZW50LCBmb3JtRWxlbWVudCwgY3JlYXRlZEJ5UGFyc2VyKSlcbiI7CisgICAg
ICAgIHByaW50IEYgIiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTtcbiI7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUGFzc1JlZlB0cjwkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9uKHFOYW1lLCBkb2N1
bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSlcbiI7Ci0gICAgICAgIHByaW50IEYgIiAgICAgICAgICAg
IHJldHVybiBlbGVtZW50O1xuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUmVmUHRy
PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50ID0gZnVuY3Rpb24obmFtZSwg
ZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpXG4iOworICAgICAgICBwcmludCBGICIgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7XG4iOwogICAgIH0KKwogICAgIHByaW50IEYg
IiAgIH1cbiI7Ci0gICAgcHJpbnQgRiAiICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50
ZXJmYWNlTmFtZX06OmNyZWF0ZShxTmFtZSwgIiAuICgkcGFyYW1ldGVyc3tjb25zdHJ1Y3RvclRh
a2VzRG9jdW1lbnRSZWZlcmVuY2V9ID8gIipkb2N1bWVudCIgOiAiZG9jdW1lbnQiKSAuICIpO1xu
IjsKKyAgICBwcmludCBGICIgICByZXR1cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VO
YW1lfTo6Y3JlYXRlKG5hbWUsICIgLiAoJHBhcmFtZXRlcnN7Y29uc3RydWN0b3JUYWtlc0RvY3Vt
ZW50UmVmZXJlbmNlfSA/ICIiIDogIiYiKSAuICJkb2N1bWVudCk7XG4iOwogCi0gICAgcHJpbnQg
RiAifVxuXG4iOwotICAgIHByaW50IEYgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcblxuIjsKKyAg
ICBwcmludCBGIDw8RU5ECit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworRU5ECisgICAg
OwogCiAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdp
dGh9OwogCkBAIC0xMDI0LDMzICsxMDMxLDIzIEBAIHN1YiBwcmludEZhY3RvcnlIZWFkZXJGaWxl
CiAjZGVmaW5lICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9oCiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVtZW50OworCiAgICAgY2xhc3MgRG9jdW1lbnQ7
CisgICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50OwotRU5ECi07CiAKLXByaW50IEYgIiAgICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50
O1xuIiBpZiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKLQotcHJpbnQgRjw8RU5E
Ci0gICAgLy8gVGhlIGlkZWEgYmVoaW5kIHRoaXMgY2xhc3MgaXMgdGhhdCB0aGVyZSB3aWxsIGV2
ZW50dWFsbHkgYmUgYSBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIFVSSXMgdG8gRWxlbWVudEZhY3Rv
cmllcyB0aGF0IGNhbiBkaXNwZW5zZQotICAgIC8vIGVsZW1lbnRzLiBJbiBhIGNvbXBvdW5kIGRv
Y3VtZW50IHdvcmxkLCB0aGUgZ2VuZXJpYyBjcmVhdGVFbGVtZW50IGZ1bmN0aW9uICh3aWxsIGVu
ZCB1cCBiZWluZyB2aXJ0dWFsKSB3aWxsIGJlIGNhbGxlZC4KICAgICBjbGFzcyAkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudEZhY3RvcnkgewogICAgIHB1YmxpYzoKLSAgICAgICAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUm
LCBXZWJDb3JlOjpEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gdHJ1ZSk7CiBFTkQK
IDsKLXByaW50IEYgIiAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+IGNyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KGNvbnN0IFdl
YkNvcmU6OlF1YWxpZmllZE5hbWUmLCBXZWJDb3JlOjpEb2N1bWVudCoiOwotcHJpbnQgRiAiLCBI
VE1MRm9ybUVsZW1lbnQqID0gMCIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7
Ci1wcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gdHJ1ZSk7XG4iOworCitwcmludCBG
ICIgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOworcHJpbnQg
RiAiLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fSBlcSAiSFRNTCI7CitwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xu
IjsKIAogcHJpbnRmIEY8PEVORAogICAgIH07CkBAIC0xMTYwLDQ3ICsxMTU3LDM1IEBAIHN1YiBw
cmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZQogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAK
ICAgICBwcmludCBGICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcbiI7Ci0gICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCJKUyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnkuaFwi
XG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudFdyYXBwZXJGYWN0b3J5LmhcIlxuXG4iOwogCiAgICAgcHJpbnQgRiAiXG4jaWYgJHBhcmFt
ZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlX
aXRofTsKIAogICAgIHByaW50SlNFbGVtZW50SW5jbHVkZXMoJEYpOwotCi0gICAgcHJpbnQgRiAi
XG4jaW5jbHVkZSBcIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lcy5oXCJcblxuIjsKLQogICAg
IHByaW50RWxlbWVudEluY2x1ZGVzKCRGKTsKIAotICAgIHByaW50IEYgIlxuI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD5cbiI7Ci0KLSAgICBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1
ZGVzKCRGLCAxKTsKLQorICAgIHByaW50IEYgIlxuI2luY2x1ZGUgXCIkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9TmFtZXMuaFwiXG4iOwogICAgIHByaW50IEYgPDxFTkQKIAogI2luY2x1ZGUgIkNvbnRl
eHRGZWF0dXJlcy5oIgotI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKLQotI2lm
IEVOQUJMRShWSURFTykKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2VuZGlmCi0KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiBFTkQKIDsKIAotICAgIHByaW50IEYgPDxFTkQKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci1FTkQK
LTsKKyAgICBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzKCRGLCAxKTsKIAogICAgIHBy
aW50IEYgPDxFTkQKIAordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOwogCi1FTkQK
LTsKLXByaW50IEYgPDxFTkQKIHR5cGVkZWYgSlNET01XcmFwcGVyKiAoKkNyZWF0ZSRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+KTsK
IAogRU5ECkBAIC0xMjA5LDExICsxMTk0LDE1IEBAIEVORAogICAgIHByaW50V3JhcHBlckZ1bmN0
aW9ucygkRik7CiAKIHByaW50IEYgPDxFTkQKLUpTRE9NV3JhcHBlciogY3JlYXRlSlMkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+
IGVsZW1lbnQpCisKK3N0YXRpYyB2b2lkIHBvcHVsYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdy
YXBwZXJNYXAoSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ3JlYXRlJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+JiBtYXApCiB7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFdURjo6QXRvbWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50V3JhcHBlckZ1bmN0aW9uPiBGdW5jdGlvbk1hcDsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEZ1bmN0aW9uTWFwLCBtYXAsICgpKTsKLSAgICBpZiAobWFwLmlzRW1wdHkoKSkgeworICAg
IHN0cnVjdCBUYWJsZUVudHJ5IHsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZTsK
KyAgICAgICAgQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rp
b24gZnVuY3Rpb247CisgICAgfTsKKworICAgIGNvbnN0IFRhYmxlRW50cnkgdGFibGVbXSA9IHsK
IEVORAogOwogCkBAIC0xMjI4LDkgKzEyMTcsMTAgQEAgRU5ECiAgICAgICAgIH0KIAogICAgICAg
ICBteSAkdWNUYWcgPSAkZW5hYmxlZFRhZ3N7JHRhZ317SlNJbnRlcmZhY2VOYW1lfTsKKwogICAg
ICAgICAjIEZJWE1FIFJlbW92ZSB1bm5lY2Vzc2FyeSAnJicgZnJvbSB0aGUgZm9sbG93aW5nIChw
cmludCkgbGluZSBvbmNlIHdlIHN3aXRjaCB0byBhIG5vbi1icm9rZW4gVmlzdWFsIFN0dWRpbyBj
b21waWxlci4KICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIxMjM1OgotICAgICAgICBwcmludCBGICIgICAgICAgbWFwLnNldCgke3RhZ31UYWcubG9j
YWxOYW1lKCkuaW1wbCgpLCAmY3JlYXRlJHt1Y1RhZ31XcmFwcGVyKTtcbiI7CisgICAgICAgIHBy
aW50IEYgIiAgICAgICAgeyAke3RhZ31UYWcsICZjcmVhdGUke3VjVGFnfVdyYXBwZXIgfSxcbiI7
CiAKICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgcHJpbnQgRiAiI2Vu
ZGlmXG4iOwpAQCAtMTIzOCwyNyArMTIyOCwyNyBAQCBFTkQKICAgICB9CiAKICAgICBwcmludCBG
IDw8RU5ECi0gICAgfQotRU5ECi07CisgICAgfTsKIAotICAgIHByaW50IEYgPDxFTkQKLSAgICBD
cmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVX
cmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0g
ICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKLUVORAotOwotICAgIHByaW50IEYgPDxFTkQK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3Qs
IGVsZW1lbnQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHRhYmxlKTsgKytpKQorICAgICAgICBtYXAuYWRkKHRhYmxlW2ldLm5hbWUubG9jYWxOYW1lKCku
aW1wbCgpLCB0YWJsZVtpXS5mdW5jdGlvbik7Cit9CisKK0pTRE9NV3JhcHBlciogY3JlYXRlSlMk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBl
ckZ1bmN0aW9uPj4gZnVuY3Rpb25zOworICAgIGlmIChmdW5jdGlvbnMuZ2V0KCkuaXNFbXB0eSgp
KQorICAgICAgICBwb3B1bGF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyTWFwKGZ1bmN0
aW9ucy5nZXQoKSk7CisgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBmdW5jdGlvbnMuZ2V0KCkuZ2V0
KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSkpCisgICAgICAgIHJldHVybiBmdW5jdGlvbihl
eGVjLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQpOwogICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAkcGFyYW1ldGVyc3tmYWxsYmFja0pTSW50ZXJmYWNlTmFt
ZX0sIGVsZW1lbnQuZ2V0KCkpOwotRU5ECi07Ci0gICAgcHJpbnQgRiA8PEVORAorfQorCiB9CiBF
TkQKIDsKIAotICAgIHByaW50IEYgIn1cblxuIjsKLSAgICBwcmludCBGICIjZW5kaWZcbiIgaWYg
JHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CisgICAgcHJpbnQgRiAiXG4jZW5kaWZcbiIg
aWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKICAgICBjbG9zZSBGOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA4MzZmOWM2NzI2ZWFiOTZiODUy
YTJlZTJiZjcxMzcwOTY1YTEzYTFlLi5kZGFmMjQ0MTk3N2IxZmViM2U5MDYyOGJiNWQwNTY2YTA4
ZDRiODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtOTM5LDcg
KzkzOSw5IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsK
LSAgICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChuYW1lLCBk
b2N1bWVudCwgMCwgZmFsc2UpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQobmFt
ZSwgKmRvY3VtZW50KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlSFRNTEVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggZThlOWU5Y2JhZTI5MmRjNzk1M2U4
NjFmN2M4OTkzN2UyNmQ3NDIzYS4uY2Q1MzE5MGVmMTNjMmJiZmI3MmUwZTJmOGQ2YTUzYmQ2ZDI0
YmMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMjkzLDcgKzI5Myw3
IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNU
RVJfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50
RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZS5s
b3dlcigpLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRoaXMsIDAsIGZhbHNlKTsKKyAgICByZXR1cm4g
SFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IG5hbWUubG93ZXIoKSwgeGh0bWxOYW1lc3BhY2VVUkkpLCAqdGhpcyk7CiB9CiAKIHN0YXRpYyB2
b2lkIGFkZExvY2FsTmFtZVRvU2V0KEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZXQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApp
bmRleCBlNzcwNmVkNzE0NjIxYTEyNTVlYmM2NjcyYWVmZTM1NjNiZmI0OTBlLi5mZTg2NTNiMjEz
MTBhY2E0NmNlZDUxM2Q1YTY2Njk3MGVjZjI0MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lCiAgICAg
ICAgIFN0eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1zdGF0aWMgdm9pZCBwb3B1bGF0ZUV2ZW50TmFtZUZv
ckF0dHJpYnV0ZUxvY2FsTmFtZU1hcChIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5n
PiYgbWFwKQorc3RhdGljIHZvaWQgcG9wdWxhdGVFdmVudE5hbWVGb3JBdHRyaWJ1dGVMb2NhbE5h
bWVNYXAoSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPiYgbWFwKQogewog
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0IHNpbXBsZVRhYmxlW10gPSB7CiAgICAgICAg
ICZvbmFib3J0QXR0ciwKQEAgLTI5NywyNCArMjk3LDI0IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRl
RXZlbnROYW1lRm9yQXR0cmlidXRlTG9jYWxOYW1lTWFwKEhhc2hNYXA8QXRvbWljU3RyaW5nLCBB
dG9tCiAgICAgICAgIC8vIGJ5IG5vdCB1c2luZyBwb2ludGVycyBmcm9tIGV2ZW50TmFtZXMoKSwg
c2ltcGxlVGFibGUgY2FuIGJlIGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS4KICAgICAgICAg
QXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IGF0dHJpYnV0ZU5hbWUuc3RyaW5nKCkuc3Vic3RyaW5n
KDIpOwogCi0gICAgICAgIG1hcC5hZGQoYXR0cmlidXRlTmFtZSwgZXZlbnROYW1lKTsKKyAgICAg
ICAgbWFwLmFkZChhdHRyaWJ1dGVOYW1lLmltcGwoKSwgZXZlbnROYW1lKTsKICAgICB9CiAKICAg
ICBzdHJ1Y3QgQ3VzdG9tTWFwcGluZyB7Ci0gICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0
dHJpYnV0ZU5hbWU7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyogZXZlbnROYW1lOworICAg
ICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lOworICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZTsKICAgICB9OwogCiAgICAgY29uc3QgQ3VzdG9tTWFwcGlu
ZyBjdXN0b21UYWJsZVtdID0gewotICAgICAgICB7ICZvbnRyYW5zaXRpb25lbmRBdHRyLCAmZXZl
bnROYW1lcygpLndlYmtpdFRyYW5zaXRpb25FbmRFdmVudCB9LAotICAgICAgICB7ICZvbndlYmtp
dGFuaW1hdGlvbmVuZEF0dHIsICZldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uRW5kRXZlbnQg
fSwKLSAgICAgICAgeyAmb253ZWJraXRhbmltYXRpb25pdGVyYXRpb25BdHRyLCAmZXZlbnROYW1l
cygpLndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50IH0sCi0gICAgICAgIHsgJm9ud2Via2l0
YW5pbWF0aW9uc3RhcnRBdHRyLCAmZXZlbnROYW1lcygpLndlYmtpdEFuaW1hdGlvblN0YXJ0RXZl
bnQgfSwKLSAgICAgICAgeyAmb253ZWJraXR0cmFuc2l0aW9uZW5kQXR0ciwgJmV2ZW50TmFtZXMo
KS53ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQgfSwKKyAgICAgICAgeyBvbnRyYW5zaXRpb25lbmRB
dHRyLCBldmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50IH0sCisgICAgICAgIHsg
b253ZWJraXRhbmltYXRpb25lbmRBdHRyLCBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uRW5k
RXZlbnQgfSwKKyAgICAgICAgeyBvbndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbkF0dHIsIGV2ZW50
TmFtZXMoKS53ZWJraXRBbmltYXRpb25JdGVyYXRpb25FdmVudCB9LAorICAgICAgICB7IG9ud2Vi
a2l0YW5pbWF0aW9uc3RhcnRBdHRyLCBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uU3RhcnRF
dmVudCB9LAorICAgICAgICB7IG9ud2Via2l0dHJhbnNpdGlvbmVuZEF0dHIsIGV2ZW50TmFtZXMo
KS53ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQgfSwKICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCwgc2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgoY3VzdG9tVGFibGUpOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICBtYXAuYWRkKGN1c3RvbVRhYmxlW2ldLmF0dHJpYnV0ZU5hbWUtPmxvY2Fs
TmFtZSgpLCAqY3VzdG9tVGFibGVbaV0uZXZlbnROYW1lKTsKKyAgICAgICAgbWFwLmFkZChjdXN0
b21UYWJsZVtpXS5hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSwgY3VzdG9tVGFibGVb
aV0uZXZlbnROYW1lKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTMz
NCwxMSArMzM0LDExIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkgewogICAgICAgICAvLyBGSVhN
RTogQ2FuIHdlIGRvIHRoaXMgZXZlbiBmYXN0ZXIgYnkgY2hlY2tpbmcgdGhlIGxvY2FsIG5hbWUg
Im9uIiBwcmVmaXggYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggdGhlIG1hcD8KLSAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNTdHJpbmc+
PiBldmVudE5hbWVzR2xvYmFsOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPj4gZXZlbnROYW1lc0dsb2JhbDsKICAg
ICAgICAgYXV0byYgZXZlbnROYW1lcyA9IGV2ZW50TmFtZXNHbG9iYWwuZ2V0KCk7CiAgICAgICAg
IGlmIChldmVudE5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBvcHVsYXRlRXZlbnROYW1l
Rm9yQXR0cmlidXRlTG9jYWxOYW1lTWFwKGV2ZW50TmFtZXMpOwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMuZ2V0KG5hbWUubG9jYWxOYW1lKCkpOwor
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMuZ2V0KG5h
bWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgaWYgKCFldmVudE5hbWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCAzMzUwZjBjYTc2YTAyNTQ4NTg0NjlkN2ZjODZjODViZTA4Y2MwMTYzLi44YTcxMDkzZDM0
MmEzZWFkMGFlYjRhOThkMzljZGQyYjk5MWQ1Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC01NTAsNyArNTUwLDcg
QEAgUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVs
ZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2sKICAgICAvLyBGSVhNRTogVGhpcyBjYW4ndCB1c2Ug
SFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUVsZW1lbnQgYmVjYXVzZSB3ZQogICAgIC8vIGhh
dmUgdG8gcGFzcyB0aGUgY3VycmVudCBmb3JtIGVsZW1lbnQuICBXZSBzaG91bGQgcmV3b3JrIGZv
cm0gYXNzb2NpYXRpb24KICAgICAvLyB0byBvY2N1ciBhZnRlciBjb25zdHJ1Y3Rpb24gdG8gYWxs
b3cgYmV0dGVyIGNvZGUgc2hhcmluZyBoZXJlLgotICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50
ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudCh0YWdOYW1lLCAmb3duZXJE
b2N1bWVudEZvckN1cnJlbnROb2RlKCksIGZvcm0oKSwgdHJ1ZSk7CisgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwg
b3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIGZvcm0oKSwgdHJ1ZSk7CiAgICAgc2V0QXR0
cmlidXRlcyhlbGVtZW50LmdldCgpLCB0b2tlbiwgbV9wYXJzZXJDb250ZW50UG9saWN5KTsKICAg
ICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsKICAgICByZXR1cm4gZWxlbWVudC5y
ZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5j
cHAKaW5kZXggNmM0OGE2MjcxOTg2NTQ0NGVkMjk3NjM5Mzc4NmE5YjMyOGE4YTNiOC4uOWUyMWJj
YzI4MDdjNjE3MTcwZGRhYzNjMmNhZDhjZGY2MmIyYmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApAQCAtODcsNyArODcsNyBAQCBDT01QSUxF
X0FTU0VSVChrSFRNTEF0dHJzSW5kZXhPZmZzZXQgPiBIVE1MVGFnc0NvdW50LCBrSFRNTEF0dHJz
SW5kZXhPZmZzZXRfc2hvdQogc3RhdGljIGNvbnN0IFN0cmluZyYgbmFtZUZvckluZGV4KHVuc2ln
bmVkIGluZGV4KQogewogICAgIHVuc2lnbmVkIGFkanVzdGVkSW5kZXg7Ci0gICAgUXVhbGlmaWVk
TmFtZSoqIG5hbWVzOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0ICogbmFtZXM7CiAg
ICAgaWYgKGluZGV4IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0KSB7CiAgICAgICAgIEFTU0VSVChp
bmRleCA8IGtIVE1MTmFtZXNJbmRleE9mZnNldCArIEhUTUxUYWdzQ291bnQpOwogICAgICAgICBh
ZGp1c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTE5hbWVzSW5kZXhPZmZzZXQ7CkBAIC0xMTksNyAr
MTE5LDcgQEAgY29uc3QgU3RyaW5nSW1wbCogSFRNTElkZW50aWZpZXI6OmFzU3RyaW5nSW1wbCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nLmltcGwoKTsKIH0KIAotdm9pZCBIVE1MSWRlbnRp
Zmllcjo6YWRkTmFtZXMoUXVhbGlmaWVkTmFtZSoqIG5hbWVzLCB1bnNpZ25lZCBuYW1lc0NvdW50
LCB1bnNpZ25lZCBpbmRleE9mZnNldCkKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKGNv
bnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0ICogbmFtZXMsIHVuc2lnbmVkIG5hbWVzQ291bnQsIHVu
c2lnbmVkIGluZGV4T2Zmc2V0KQogewogICAgIElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBpZGVu
dGlmaWVyVGFibGUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFtZXNDb3VudDsg
KytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXgg
ODJjN2M1NzhhZTZiYTg4NTU1Njg0NWRhY2Y0YjBiYzgzZTg1NjhkZi4uMTM5NjJmNzAyMDA1YmU2
ZDliYjIxZjJmZjIzYWRiZjIwNTg3MTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcApAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpj
b3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250YWluZXJOb2RlKiB3ZWJWVFROb2RlLCBDb250YWlu
ZXJOCiAgICAgZm9yIChOb2RlKiBub2RlID0gd2ViVlRUTm9kZS0+Zmlyc3RDaGlsZCgpOyBub2Rl
OyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZWZQdHI8Tm9kZT4gY2xv
bmVkTm9kZTsKICAgICAgICAgaWYgKG5vZGUtPmlzV2ViVlRURWxlbWVudCgpKQotICAgICAgICAg
ICAgY2xvbmVkTm9kZSA9IHRvV2ViVlRURWxlbWVudChub2RlKS0+Y3JlYXRlRXF1aXZhbGVudEhU
TUxFbGVtZW50KCZvd25lckRvY3VtZW50KCkpOworICAgICAgICAgICAgY2xvbmVkTm9kZSA9IHRv
V2ViVlRURWxlbWVudChub2RlKS0+Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KG93bmVyRG9j
dW1lbnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNsb25lZE5vZGUgPSBub2RlLT5j
bG9uZU5vZGUoZmFsc2UpOwogICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKGNsb25lZE5vZGUs
IEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
RWxlbWVudC5jcHAKaW5kZXggZTJjNmZjZDE0NGYyMDhmNDMyYWFkYzljMDU5NDIwNjk2NWNmYTY3
Yy4uN2VlNjg0NDJmYThiMzA5MDBlZmI2NWI4Zjc0MWYzODg1OTc2ODAxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCkBAIC02OCw1NyArNjgsNTggQEAg
c3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5vZGVUeXBlVG9UYWdOYW1lKFdlYlZUVE5vZGVU
eXBlIG5vZGVUeXBlKQogICAgIH0KIH0KIAotV2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVudChX
ZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogRWxlbWVu
dChub2RlVHlwZVRvVGFnTmFtZShub2RlVHlwZSksIGRvY3VtZW50LCBDcmVhdGVFbGVtZW50KQor
V2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVudChXZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQorICAgIDogRWxlbWVudChub2RlVHlwZVRvVGFnTmFtZShub2RlVHlw
ZSksICZkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKICAgICAsIG1faXNQYXN0Tm9kZSgwKQogICAg
ICwgbV93ZWJWVFROb2RlVHlwZShub2RlVHlwZSkKIHsKIH0KIAotUGFzc1JlZlB0cjxXZWJWVFRF
bGVtZW50PiBXZWJWVFRFbGVtZW50OjpjcmVhdGUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUsIERv
Y3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gV2ViVlRURWxlbWVu
dDo6Y3JlYXRlKFdlYlZUVE5vZGVUeXBlIG5vZGVUeXBlLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWVFRFbGVtZW50KG5vZGVUeXBlLCBkb2N1bWVu
dCkpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQogewotICAgIFJlZlB0cjxXZWJWVFRFbGVt
ZW50PiBjbG9uZSA9IGNyZWF0ZShzdGF0aWNfY2FzdDxXZWJWVFROb2RlVHlwZT4obV93ZWJWVFRO
b2RlVHlwZSksICZkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8V2ViVlRURWxlbWVudD4gY2xvbmUg
PSBjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpLCBk
b2N1bWVudCgpKTsKICAgICBjbG9uZS0+c2V0TGFuZ3VhZ2UobV9sYW5ndWFnZSk7CiAgICAgcmV0
dXJuIGNsb25lOwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBXZWJWVFRFbGVtZW50Ojpj
cmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGh0bWxFbGVt
ZW50OworCiAgICAgc3dpdGNoIChtX3dlYlZUVE5vZGVUeXBlKSB7CiAgICAgY2FzZSBXZWJWVFRO
b2RlVHlwZUNsYXNzOgogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVMYW5ndWFnZToKICAgICBjYXNl
IFdlYlZUVE5vZGVUeXBlVm9pY2U6Ci0gICAgICAgIGh0bWxFbGVtZW50ID0gSFRNTEVsZW1lbnRG
YWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChIVE1MTmFtZXM6OnNwYW5UYWcsIGRvY3VtZW50KTsK
LSAgICAgICAgaHRtbEVsZW1lbnQuZ2V0KCktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRpdGxl
QXR0ciwgZ2V0QXR0cmlidXRlKHZvaWNlQXR0cmlidXRlTmFtZSgpKSk7Ci0gICAgICAgIGh0bWxF
bGVtZW50LmdldCgpLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpsYW5nQXR0ciwgZ2V0QXR0cmli
dXRlKGxhbmdBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxl
bWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjpzcGFuVGFnLCBkb2N1bWVudCk7
CisgICAgICAgIGh0bWxFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0aXRsZUF0dHIs
IGdldEF0dHJpYnV0ZSh2b2ljZUF0dHJpYnV0ZU5hbWUoKSkpOworICAgICAgICBodG1sRWxlbWVu
dC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6bGFuZ0F0dHIsIGdldEF0dHJpYnV0ZShsYW5nQXR0
cmlidXRlTmFtZSgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVJ
dGFsaWM6Ci0gICAgICAgIGh0bWxFbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVI
VE1MRWxlbWVudChIVE1MTmFtZXM6OmlUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgaHRtbEVsZW1l
bnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjppVGFnLCBk
b2N1bWVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVCb2xkOgot
ICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1l
bnQoSFRNTE5hbWVzOjpiVGFnLCBkb2N1bWVudCk7CisgICAgICAgIGh0bWxFbGVtZW50ID0gSFRN
TEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6YlRhZywgZG9jdW1lbnQp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlVW5kZXJsaW5lOgotICAg
ICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQo
SFRNTE5hbWVzOjp1VGFnLCBkb2N1bWVudCk7CisgICAgICAgIGh0bWxFbGVtZW50ID0gSFRNTEVs
ZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6dVRhZywgZG9jdW1lbnQpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlUnVieToKLSAgICAgICAgaHRt
bEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KEhUTUxOYW1l
czo6cnVieVRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50
RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OnJ1YnlUYWcsIGRvY3VtZW50KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZVJ1YnlUZXh0OgotICAgICAgICBo
dG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQoSFRNTE5h
bWVzOjpydFRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50
RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OnJ0VGFnLCBkb2N1bWVudCk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KIAotICAgIGh0bWxFbGVtZW50LmdldCgpLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpj
bGFzc0F0dHIsIGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwotICAgIHJldHVy
biBodG1sRWxlbWVudDsKKyAgICBBU1NFUlQoaHRtbEVsZW1lbnQpOworICAgIGlmIChodG1sRWxl
bWVudCkKKyAgICAgICAgaHRtbEVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNz
QXR0ciwgZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikpOworICAgIHJldHVy
biBodG1sRWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggNzUzMDQ5YzdiZmVh
ZGQzZTc1MjM2ZjYwNTU1NjM0MGMyZGVlMThmZS4uZjUxNzdiMjVlOGMzYTA3Njc5NDU2YTQzMzM2
NTdlMTFmY2QxMDIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmgKQEAgLTQzLDkgKzQzLDggQEAgZW51bSBXZWJWVFROb2RlVHlwZSB7CiAKIGNsYXNzIFdlYlZU
VEVsZW1lbnQgRklOQUwgOiBwdWJsaWMgRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFdlYlZUVE5vZGVUeXBlLCBEb2N1
bWVudCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJWVFRFbGVtZW50PiBjcmVhdGUoY29uc3QgV2ViVlRUTm9kZVR5cGUsIERvY3Vt
ZW50Jik7CisgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1aXZhbGVudEhUTUxF
bGVtZW50KERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xv
bmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIE9WRVJSSURFOwogCkBAIC03
Miw4ICs3MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgV2ViVlRURWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICBXZWJWVFRFbGVtZW50KFdl
YlZUVE5vZGVUeXBlLCBEb2N1bWVudCopOworICAgIFdlYlZUVEVsZW1lbnQoV2ViVlRUTm9kZVR5
cGUsIERvY3VtZW50Jik7CiAKICAgICB1bnNpZ25lZCBtX2lzUGFzdE5vZGUgOiAxOwogICAgIHVu
c2lnbmVkIG1fd2ViVlRUTm9kZVR5cGUgOiA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCmluZGV4IDVjMjA2YmFhZDhjNDNkOGExZmY4OGIwMTVlN2FmZjlmZTE5
MTMzNWQuLjg0MzdlYzQ3NjI1ZjdjNDllNjdmNDg4YWY5OTcwNjhiMmM5ZDJmYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTUwOCw3ICs1MDgsNyBA
QCB2b2lkIFdlYlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgICAgIFJlZlB0cjxXZWJWVFRFbGVtZW50PiBjaGlsZDsKICAgICAgICAgV2Vi
VlRUTm9kZVR5cGUgbm9kZVR5cGUgPSB0b2tlblRvTm9kZVR5cGUobV90b2tlbik7CiAgICAgICAg
IGlmIChub2RlVHlwZSAhPSBXZWJWVFROb2RlVHlwZU5vbmUpCi0gICAgICAgICAgICBjaGlsZCA9
IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShub2RlVHlwZSwgZG9jdW1lbnQpOworICAgICAgICAgICAg
Y2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVhdGUobm9kZVR5cGUsICpkb2N1bWVudCk7CiAgICAg
ICAgIGlmIChjaGlsZCkgewogICAgICAgICAgICAgaWYgKG1fdG9rZW4uY2xhc3NlcygpLnNpemUo
KSA+IDApCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0
b21pY1N0cmluZyhtX3Rva2VuLmNsYXNzZXMoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211693</attachid>
            <date>2013-09-15 01:07:56 -0700</date>
            <delta_ts>2013-09-15 01:24:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121378-20130915010754.patch</filename>
            <type>text/plain</type>
            <size>44502</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM2ODEzMmUyODhjMDQ1
MTI0ODFhMjQ2YWE4ZDAyYmM0ODJhYjA5OC4uZjllODNhNGE1YzBhMTMzMDY4YTM0OWM3NzhmY2My
MjU4OWJkNWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEzLTA5LTE1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgZmFjdG9yeSBmdW5j
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MTM3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgbWFrZXMgdGhlIGZ1bmN0aW9ucyB0aGF0IGJ1aWxkcyBmb3VyIGRpZmZlcmVudCB0eXBlcyBv
ZiBwZXItZWxlbWVudCB0YWJsZXMKKyAgICAgICAgYWxsIGhhdmUgc21hbGxlciBjb2RlIHNpemUu
CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBUd2Vha2VkIGhvdyBIVE1MIGFuZCBT
Vkcgd3JhcHBlciBmYWN0b3JpZXMgYXJlIG1hZGUgYSBiaXQuCisgICAgICAgIEl0IHdhcyBPSywg
YnV0IGEgbGl0dGxlIHNsb3BweS4gCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOiBDaGFuZ2VkIHRvIGNhbGwg
dGhlIGNyZWF0ZUVsZW1lbnQgZnVuY3Rpb25zCisgICAgICAgIGluIHRoZSBmYWN0b3JpZXMuIEFs
c28gZGlkIHNvbWUgc3R5bGUgaW1wcm92ZW1lbnQuCisKKyAgICAgICAgKiBkb20vbWFrZV9uYW1l
cy5wbDoKKyAgICAgICAgKHByaW50Q29uc3RydWN0b3JTaWduYXR1cmUpOiBNYWtlIGNvbnN0cnVj
dG9ycyB0YWtlIGEgRG9jdW1lbnQmIGluc3RlYWQgb2YgCisgICAgICAgIGEgRG9jdW1lbnQqLgor
ICAgICAgICAocHJpbnRDb25zdHJ1Y3RvckludGVyaW9yKTogVXBkYXRlZCBmb3IgRG9jdW1lbnQm
IGluc3RlYWQgb2YgRG9jdW1lbnQqLgorICAgICAgICAocHJpbnRGdW5jdGlvblRhYmxlKTogUmVu
YW1lZCBmcm9tIHByaW50RnVuY3Rpb25Jbml0cywgYmVjYXVzZSB0aGlzIG5vdworICAgICAgICBj
cmVhdGVzIHRhYmxlIGVudHJpZXMuIFRoZSBhY3R1YWwgY29kZSB0byBhZGQgZWFjaCBmdW5jdGlv
biBpcyBub3cgZG9uZQorICAgICAgICBpbiBhIGxvb3AgaW5zdGVhZC4KKyAgICAgICAgKHByaW50
TmFtZXNIZWFkZXJGaWxlKTogTWFkZSB0aGUgdGFibGUgY29uc3QuCisgICAgICAgIChwcmludE5h
bWVzQ3BwRmlsZSk6IE1hZGUgdGhlIHRhYmxlIGNvbnN0LgorICAgICAgICAocHJpbnREZWZpbml0
aW9ucyk6IEdlbmVyYXRlIGEgdGFibGUsIHRhYmxlIGVudHJpZXMsIGFuZCBhIGxvb3AgdGhhdCBj
YWxscworICAgICAgICBjcmVhdGVRdWFsaWZpZWROYW1lLCByYXRoZXIgdGhhbiBhbiAidW5yb2xs
ZWQgbG9vcCIuCisgICAgICAgIChwcmludEZhY3RvcnlDcHBGaWxlKTogVHdlYWtlZCBpbmRlbnRh
dGlvbi4gVXBkYXRlZCB0byB0YWtlIERvY3VtZW50JiBpbnN0ZWFkCisgICAgICAgIG9mIERvY3Vt
ZW50Ki4gR2VuZXJhdGUgYSB0YWJsZSwgdGFibGUgZW50cmllcywgYW5kIGEgbG9vcCB0aGF0IGJ1
aWxkcyBhIG1hcCwKKyAgICAgICAgcmF0aGVyIHRoYW4gYW4gInVucm9sbGVkIiBsb29wLgorICAg
ICAgICAocHJpbnRGYWN0b3J5SGVhZGVyRmlsZSk6IEVsaW1pbmF0ZWQgdGhlIHVudXNlZCBjcmVh
dGVFbGVtZW50IG1lbWJlciBmdW5jdGlvbgorICAgICAgICB0aGF0IHdhcyBwYXJ0IG9mIGEgZHJl
YW0gb2YgZmFjdG9yeSBvYmplY3RzIGluIGEgbmFtZXNwYWNlIHJlZ2lzdHJ5LCBnaXZpbmcKKyAg
ICAgICAgdGhlIG5hbWUgY3JlYXRlRWxlbWVudCB0byB0aGUgc3RhdGljIG1lbWJlciBmdW5jdGlv
biBzbyBpdCB3b3VsZCBiZSBsZXNzCisgICAgICAgIHJlZHVuZGFudC4gQWxzbyBtYWRlIHRoZSBm
dW5jdGlvbiB0YWtlcyBhIERvY3VtZW50JiBpbnN0ZWFkIG9mIERvY3VtZW50Ki4KKyAgICAgICAg
QWxzbyBtYWRlIHRoZSBkZWZhdWx0ICJub3QgY3JlYXRlZCBieSBwYXJzZXIiLCBzaW5jZSB0aGUg
cGFyc2VyIGlzIHRoZSBzaW1wbGVyCisgICAgICAgIHVzZSBjYXNlLCBvdXRudW1iZXJlZCBieSB0
aGUgbm9uLXBhcnNlciB1c2VzLCBhdCBsZWFzdCBhdCB0aGUgbW9tZW50LiBBbHNvLAorICAgICAg
ICB1c2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5
Q3BwRmlsZSk6IEdlbmVyYXRlIGEgdGFibGUsIHRhYmxlIGVudHJpZXMsIGFuZCBhIGxvb3AKKyAg
ICAgICAgdGhhdCBidWlsZHMgYSBtYXAgcmF0aGVyIHRoYW4gYW4gInVucm9sbGVkIiBsb29wLgor
CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVIVE1MRWxlbWVudCk6IFB1dCB0aGUgbnVsbCBjaGVjayBoZXJlIHRoYXQgdXNlZCB0byBi
ZSBpbgorICAgICAgICBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQsIGFuZCBjYWxs
IHdpdGggYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhCisgICAgICAgIHBvaW50ZXIuIEFsc28gZG9u
J3QgbmVlZCB0byBwYXNzICIwLCBmYWxzZSIgc2luY2UgIm5vdCBjcmVhdGVkIGJ5IHRoZSBwYXJz
ZXIiCisgICAgICAgIGlzIG5vdyB0aGUgZGVmYXVsdC4KKyAgICAgICAgKiBodG1sL0hUTUxEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQp
OiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cG9wdWxhdGVFdmVudE5hbWVGb3JBdHRyaWJ1dGVMb2NhbE5hbWVNYXApOiBDaGFuZ2Vk
IHRvIHVzZSBhbgorICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhcyB0aGUga2V5IGluc3RlYWQg
b2YgQXRvbWljU3RyaW5nLCBzaW5jZSBhbGwgdGhlIHN0cmluZ3MKKyAgICAgICAgY29tZSBmcm9t
IHRoZSBsb2NhbCBuYW1lcyBvZiB0YWdzLCBhbmQgc28gZG9uJ3QgbmVlZCB0byBiZSByZWYnZC4g
VGhpcyBzYXZlcworICAgICAgICBhIGJpdCBvZiByZWZlcmVuY2UgY291bnQgY2h1cm4gd2hlbiBi
dWlsZGluZyB0aGUgbWFwIGFuZCBpcyB0aGUgc2FtZSBwYXR0ZXJuCisgICAgICAgIHVzZWQgaW4g
c29tZSBtYXBzIGluIHRoZSBtYWtlX25hbWVzLnBsIHNjcmlwdCBhYm92ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IFVwZGF0ZWQgZm9yIGNoYW5nZSBh
Ym92ZS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dCk6IENoYW5nZWQgdG8gY2FsbCB0aGUKKyAgICAgICAgSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVh
dGVFbGVtZW50IGZ1bmN0aW9uIHVuZGVyIGl0cyBuZXcgbmFtZSB3aXRoIGEgcmVmZXJlbmNlCisg
ICAgICAgIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVGb3JJbmRleCk6IE1vcmUg
Y29uc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6YWRkTmFtZXMpOiBNb3Jl
IGNvbnN0LgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6IFBhc3Mg
YSByZWZlcmVuY2UgdG8KKyAgICAgICAgV2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhU
TUxFbGVtZW50LgorCisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQpOiBUYWtlIGEgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxl
bWVudDo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50Ojpj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKTogUGFzcyBhCisgICAgICAg
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlciB0byBjcmVhdGUuCisgICAgICAgIChXZWJD
b3JlOjpXZWJWVFRFbGVtZW50OjpjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQpOiBUYWtlIGEg
cmVmZXJlbmNlIGluc3RlYWQKKyAgICAgICAgb2YgYSBwb2ludGVyLCBhbmQgdXBkYXRlIHVzZXMg
b2YgSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50LiBBbHNvIG1hZGUKKyAgICAgICAg
dGhpcyByZXR1cm4gbnVsbCB3aGVuIGEgYmFkIG5vZGUgdHlwZSBpcyBwYXNzZWQgaW4sIHdoaWNo
IHNob3VsZCBuZXZlciBoYXBwZW4uCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1l
bnQuaDogVXNlIERvY3VtZW50JiBpbnN0ZWFkIG9mIERvY3VtZW50Ki4gUmVtb3ZlZCB1bnVzZWQK
KyAgICAgICAgYW5kIHVuZGVmaW5lZCBjcmVhdGUvY29uc3RydWN0b3Igb3ZlcmxvYWRzLgorCisg
ICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKTogUGFzcyBkb2N1ZW1udCByZWZl
cmVuY2UgcmF0aGVyIHRoYW4KKyAgICAgICAgcG9pbnRlciB0byBXZWJWVFRFbGVtZW50OjpjcmVh
dGUuCisKIDIwMTMtMDktMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ1RURV0gTm9kZSBzdWJjbGFzc2VzIHNob3VsZCB0YWtlIGEgRG9jdW1lbnQgYnkgcmVmZXJl
bmNlIGluIHRoZWlyIGNvbnN0cnVjdG9yIChQYXJ0IDUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCBjZDBhZDFiMzQ3OGIwZGRjYTkyYjcxZmNiYTA2NTgwN2JhN2M3NDM0Li4xNjc2
MTkwMzQzMThmNzE3OGNlMTdjMjQzMmQwY2IzZmY0YmVmZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTY4NCw2ICs2ODQsNyBAQCBhbGwgOiBcCiAgICAgSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcCBcCiAgICAgSFRNTEVudGl0eVRhYmxlLmNwcCBcCiAgICAgSFRNTE5hbWVzLmNw
cCBcCisgICAgSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCBcCiAgICAgSlNTVkdFbGVt
ZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKICAgICBQbHVnSW5zUmVzb3VyY2VzLmggXAogICAgIFNW
R0VsZW1lbnRGYWN0b3J5LmNwcCBcCkBAIC05MDEsMTggKzkwMiwxNiBAQCBlbmRpZgogCiBpZmRl
ZiBIVE1MX0ZMQUdTCiAKLUhUTUxFbGVtZW50RmFjdG9yeS5jcHAgSFRNTE5hbWVzLmNwcCA6IGRv
bS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtIGJpbmRpbmdzL3Njcmlw
dHMvU3RhdGljU3RyaW5nLnBtIGh0bWwvSFRNTFRhZ05hbWVzLmluIGh0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluCitIVE1MRWxlbWVudEZhY3RvcnkuY3BwIEhUTUxOYW1lcy5jcHAgSlNIVE1MRWxl
bWVudFdyYXBwZXJGYWN0b3J5LmNwcCA6IGRvbS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3Njcmlw
dHMvSGFzaGVyLnBtIGJpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtIGh0bWwvSFRNTFRh
Z05hbWVzLmluIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCiAJcGVybCAtSSAkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvaHRtbC9IVE1MVGFnTmFtZXMu
aW4gLS1hdHRycyAkKFdlYkNvcmUpL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIC0tZmFjdG9y
eSAtLXdyYXBwZXJGYWN0b3J5IC0tZXh0cmFEZWZpbmVzICIkKEhUTUxfRkxBR1MpIgogCiBlbHNl
CiAKLUhUTUxFbGVtZW50RmFjdG9yeS5jcHAgSFRNTE5hbWVzLmNwcCA6IGRvbS9tYWtlX25hbWVz
LnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtIGJpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3Ry
aW5nLnBtIGh0bWwvSFRNTFRhZ05hbWVzLmluIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCitI
VE1MRWxlbWVudEZhY3RvcnkuY3BwIEhUTUxOYW1lcy5jcHAgSlNIVE1MRWxlbWVudFdyYXBwZXJG
YWN0b3J5LmNwcCA6IGRvbS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBt
IGJpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtIGh0bWwvSFRNTFRhZ05hbWVzLmluIGh0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCiAJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3Nj
cmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvaHRtbC9IVE1MVGFnTmFtZXMuaW4gLS1hdHRycyAk
KFdlYkNvcmUpL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIC0tZmFjdG9yeSAtLXdyYXBwZXJG
YWN0b3J5CiAKIGVuZGlmCiAKLUpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgOiBIVE1M
TmFtZXMuY3BwCi0KIFhNTE5TTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mv
c2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0geG1sL3ht
bG5zYXR0cnMuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLWF0
dHJzICQoV2ViQ29yZSkveG1sL3htbG5zYXR0cnMuaW4KIApAQCAtOTM1LDE3ICs5MzQsMTUgQEAg
ZW5kaWYKIAogaWZkZWYgU1ZHX0ZMQUdTCiAKLVNWR0VsZW1lbnRGYWN0b3J5LmNwcCBTVkdOYW1l
cy5jcHAgOiBkb20vbWFrZV9uYW1lcy5wbCBiaW5kaW5ncy9zY3JpcHRzL0hhc2hlci5wbSBiaW5k
aW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSBzdmcvc3ZndGFncy5pbiBzdmcvc3ZnYXR0cnMu
aW4KK0pTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCBTVkdFbGVtZW50RmFjdG9yeS5jcHAg
U1ZHTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIu
cG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gc3ZnL3N2Z3RhZ3MuaW4gc3ZnL3N2
Z2F0dHJzLmluCiAJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdz
ICQoV2ViQ29yZSkvc3ZnL3N2Z3RhZ3MuaW4gLS1hdHRycyAkKFdlYkNvcmUpL3N2Zy9zdmdhdHRy
cy5pbiAtLWV4dHJhRGVmaW5lcyAiJChTVkdfRkxBR1MpIiAtLWZhY3RvcnkgLS13cmFwcGVyRmFj
dG9yeQogZWxzZQogCi1TVkdFbGVtZW50RmFjdG9yeS5jcHAgU1ZHTmFtZXMuY3BwIDogZG9tL21h
a2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9T
dGF0aWNTdHJpbmcucG0gc3ZnL3N2Z3RhZ3MuaW4gc3ZnL3N2Z2F0dHJzLmluCitKU1NWR0VsZW1l
bnRXcmFwcGVyRmFjdG9yeS5jcHAgU1ZHRWxlbWVudEZhY3RvcnkuY3BwIFNWR05hbWVzLmNwcCA6
IGRvbS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtIGJpbmRpbmdzL3Nj
cmlwdHMvU3RhdGljU3RyaW5nLnBtIHN2Zy9zdmd0YWdzLmluIHN2Zy9zdmdhdHRycy5pbgogCXBl
cmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tdGFncyAkKFdlYkNvcmUpL3N2
Zy9zdmd0YWdzLmluIC0tYXR0cnMgJChXZWJDb3JlKS9zdmcvc3ZnYXR0cnMuaW4gLS1mYWN0b3J5
IC0td3JhcHBlckZhY3RvcnkKIAogZW5kaWYKIAotSlNTVkdFbGVtZW50V3JhcHBlckZhY3Rvcnku
Y3BwIDogU1ZHTmFtZXMuY3BwCi0KIFhMaW5rTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwg
YmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcu
cG0gc3ZnL3hsaW5rYXR0cnMuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0
cyAkPCAtLWF0dHJzICQoV2ViQ29yZSkvc3ZnL3hsaW5rYXR0cnMuaW4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggZGU4ZWE4NGIyYTk5ZDNkZmMxMDk5MDczYmJhMzRlNDUyMDdhYWU3Yi4u
NzlmZjYwNmUwOGRmZTM4MDA3NmUxYTdiODEwNGUzYzdhYWVlOTkwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC04MjAsNyArODIwLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkMKICAg
ICB9CiAKICAgICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBIVE1MRWxl
bWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20sIG5h
bWUsIHhodG1sTmFtZXNwYWNlVVJJKSwgdGhpcywgMCwgZmFsc2UpOworICAgICAgICByZXR1cm4g
SFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IG5hbWUsIHhodG1sTmFtZXNwYWNlVVJJKSwgKnRoaXMpOwogCiAgICAgcmV0dXJuIGNyZWF0ZUVs
ZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgbnVsbEF0b20pLCBmYWxzZSk7CiB9
CkBAIC0xMTEyLDMyICsxMTEyLDMyIEBAIGJvb2wgRG9jdW1lbnQ6Omhhc1ZhbGlkTmFtZXNwYWNl
Rm9yQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKICAgICByZXR1cm4gaGFz
VmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhxTmFtZSk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIHNo
b3VsZCByZWFsbHkgYmUgaW4gYSBwb3NzaWJsZSBFbGVtZW50RmFjdG9yeSBjbGFzcwotUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiBxTmFtZSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCisvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVh
bGx5IGJlIGluIGEgcG9zc2libGUgRWxlbWVudEZhY3RvcnkgY2xhc3MuCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIFJlZlB0cjxFbGVtZW50PiBlOworICAgIFJl
ZlB0cjxFbGVtZW50PiBlbGVtZW50OwogCiAgICAgLy8gRklYTUU6IFVzZSByZWdpc3RlcmVkIG5h
bWVzcGFjZXMgYW5kIGxvb2sgdXAgaW4gYSBoYXNoIHRvIGZpbmQgdGhlIHJpZ2h0IGZhY3Rvcnku
Ci0gICAgaWYgKHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IHhodG1sTmFtZXNwYWNlVVJJKQotICAg
ICAgICBlID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChxTmFtZSwgdGhp
cywgMCwgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4
aHRtbE5hbWVzcGFjZVVSSSkKKyAgICAgICAgZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6
Y3JlYXRlRWxlbWVudChuYW1lLCAqdGhpcywgbnVsbHB0ciwgY3JlYXRlZEJ5UGFyc2VyKTsKICNp
ZiBFTkFCTEUoU1ZHKQotICAgIGVsc2UgaWYgKHFOYW1lLm5hbWVzcGFjZVVSSSgpID09IFNWR05h
bWVzOjpzdmdOYW1lc3BhY2VVUkkpCi0gICAgICAgIGUgPSBTVkdFbGVtZW50RmFjdG9yeTo6Y3Jl
YXRlU1ZHRWxlbWVudChxTmFtZSwgdGhpcywgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBlbHNlIGlm
IChuYW1lLm5hbWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCisgICAg
ICAgIGVsZW1lbnQgPSBTVkdFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChuYW1lLCAqdGhp
cywgY3JlYXRlZEJ5UGFyc2VyKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgZWxz
ZSBpZiAocU5hbWUubmFtZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFj
ZVVSSSkKLSAgICAgICAgZSA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVNYXRoTUxFbGVt
ZW50KHFOYW1lLCB0aGlzLCBjcmVhdGVkQnlQYXJzZXIpOworICAgIGVsc2UgaWYgKG5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKKyAgICAgICAg
ZWxlbWVudCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KG5hbWUsICp0aGlz
LCBjcmVhdGVkQnlQYXJzZXIpOwogI2VuZGlmCiAKLSAgICBpZiAoZSkKKyAgICBpZiAoZWxlbWVu
dCkKICAgICAgICAgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzID0gdHJ1ZTsKICAgICBl
bHNlCi0gICAgICAgIGUgPSBFbGVtZW50OjpjcmVhdGUocU5hbWUsICZkb2N1bWVudCgpKTsKKyAg
ICAgICAgZWxlbWVudCA9IEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCAmZG9jdW1lbnQoKSk7CiAKICAg
ICAvLyA8aW1hZ2U+IHVzZXMgaW1nVGFnIHNvIHdlIG5lZWQgYSBzcGVjaWFsIHJ1bGUuCi0gICAg
QVNTRVJUKChxTmFtZS5tYXRjaGVzKGltYWdlVGFnKSAmJiBlLT50YWdRTmFtZSgpLm1hdGNoZXMo
aW1nVGFnKSAmJiBlLT50YWdRTmFtZSgpLnByZWZpeCgpID09IHFOYW1lLnByZWZpeCgpKSB8fCBx
TmFtZSA9PSBlLT50YWdRTmFtZSgpKTsKKyAgICBBU1NFUlQoKG5hbWUubWF0Y2hlcyhpbWFnZVRh
ZykgJiYgZWxlbWVudC0+dGFnUU5hbWUoKS5tYXRjaGVzKGltZ1RhZykgJiYgZWxlbWVudC0+dGFn
UU5hbWUoKS5wcmVmaXgoKSA9PSBuYW1lLnByZWZpeCgpKSB8fCBuYW1lID09IGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwogCi0gICAgcmV0dXJuIGUucmVsZWFzZSgpOworICAgIHJldHVybiBlbGVtZW50
LnJlbGVhc2UoKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6cmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IGFjMzFlNmY4ZGJiZmE3MTY0
ODI2YTJiZWM5ZDgyMzExZTBiNDNlMzkuLjJmNTc1NjIxYTA4YWU3NjUyZjMwZWUwNzk1ZjU2NDU2
ODdmY2UyMDEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC0xMjcsNyArMTI3LDcgQEAg
aWYgKGxlbmd0aCgkZm9udE5hbWVzSW4pKSB7CiAgICAgcHJpbnQgRiBTdGF0aWNTdHJpbmc6Okdl
bmVyYXRlU3RyaW5nQXNzZXJ0cyhcJXBhcmFtZXRlcnMpOwogCiAgICAgd2hpbGUgKCBteSAoJG5h
bWUsICRpZGVudGlmaWVyKSA9IGVhY2ggJXBhcmFtZXRlcnMgKSB7Ci0gICAgICAgIHByaW50IEYg
IiAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmJG5hbWUpIEF0b21pY1N0cmluZygke25hbWV9SW1w
bCk7XG4iOworICAgICAgICBwcmludCBGICIgICAgbmV3IChOb3ROdWxsLCBzdGF0aWNfY2FzdDx2
b2lkKj4oJiRuYW1lKSkgQXRvbWljU3RyaW5nKCR7bmFtZX1JbXBsKTtcbiI7CiAgICAgfQogCiAg
ICAgcHJpbnQgRiAifVxufVxufVxuIjsKQEAgLTM3OSw3ICszNzksNyBAQCBzdWIgcHJpbnRDb25z
dHJ1Y3RvclNpZ25hdHVyZQogewogICAgIG15ICgkRiwgJHRhZ05hbWUsICRjb25zdHJ1Y3Rvck5h
bWUsICRjb25zdHJ1Y3RvclRhZ05hbWUpID0gQF87CiAKLSAgICBwcmludCBGICJzdGF0aWMgUGFz
c1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHtjb25zdHJ1Y3Rvck5hbWV9
Q29uc3RydWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgJGNvbnN0cnVjdG9yVGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50IjsKKyAgICBwcmludCBGICJzdGF0aWMgUGFzc1JlZlB0cjwkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHtjb25zdHJ1Y3Rvck5hbWV9Q29uc3RydWN0b3IoY29u
c3QgUXVhbGlmaWVkTmFtZSYgJGNvbnN0cnVjdG9yVGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
IjsKICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsKICAgICAgICAg
cHJpbnQgRiAiLCBIVE1MRm9ybUVsZW1lbnQqIjsKICAgICAgICAgcHJpbnQgRiAiIGZvcm1FbGVt
ZW50IiBpZiAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVu
dH07CkBAIC0zOTksNyArMzk5LDcgQEAgc3ViIHByaW50Q29uc3RydWN0b3JJbnRlcmlvcgogICAg
ICMgSGFuZGxlIG1lZGlhIGVsZW1lbnRzLgogICAgIGlmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9
e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewogICAgICAgICBwcmludCBGIDw8RU5E
Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQuc2V0dGluZ3MoKTsKICAgICBpZiAoIU1lZGlhUGxh
eWVyOjppc0F2YWlsYWJsZSgpIHx8IChzZXR0aW5ncyAmJiAhc2V0dGluZ3MtPm1lZGlhRW5hYmxl
ZCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCkBAIC00MjcsNyArNDI3LDcgQEAgRU5ECiAK
ICAgICAjIENhbGwgdGhlIGNvbnN0cnVjdG9yIHdpdGggdGhlIHJpZ2h0IHBhcmFtZXRlcnMuCiAg
ICAgcHJpbnQgRiAiICAgIHJldHVybiAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoJGNvbnN0cnVj
dG9yVGFnTmFtZSI7Ci0gICAgcHJpbnQgRiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25zdHJ1
Y3RvclRha2VzRG9jdW1lbnRSZWZlcmVuY2V9ID8gIiwgKmRvY3VtZW50IiA6ICIsIGRvY3VtZW50
Iik7CisgICAgcHJpbnQgRiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25zdHJ1Y3RvclRha2Vz
RG9jdW1lbnRSZWZlcmVuY2V9ID8gIiwgZG9jdW1lbnQiIDogIiwgJmRvY3VtZW50Iik7CiAgICAg
cHJpbnQgRiAiLCBmb3JtRWxlbWVudCIgaWYgJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb25zdHJ1
Y3Rvck5lZWRzRm9ybUVsZW1lbnR9OwogICAgIHByaW50IEYgIiwgY3JlYXRlZEJ5UGFyc2VyIiBp
ZiAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXJ9
OwogICAgIHByaW50IEYgIik7XG59XG4iOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHN1YiBwcmludENv
bnN0cnVjdG9ycwogICAgIH0KIH0KIAotc3ViIHByaW50RnVuY3Rpb25Jbml0cworc3ViIHByaW50
RnVuY3Rpb25UYWJsZQogewogICAgIG15ICgkRiwgJHRhZ0NvbnN0cnVjdG9yTWFwKSA9IEBfOwog
ICAgIG15ICV0YWdDb25zdHJ1Y3Rvck1hcCA9ICUkdGFnQ29uc3RydWN0b3JNYXA7CkBAIC00OTQs
OSArNDk0LDkgQEAgc3ViIHByaW50RnVuY3Rpb25Jbml0cwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfSkgewotICAgICAgICAgICAg
cHJpbnQgRiAiICAgIGFkZFRhZygke3RhZ05hbWV9VGFnLCAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9
e21hcFRvVGFnTmFtZX1UbyR7dGFnTmFtZX1Db25zdHJ1Y3Rvcik7XG4iOworICAgICAgICAgICAg
cHJpbnQgRiAiICAgICAgICB7ICR7dGFnTmFtZX1UYWcsICRlbmFibGVkVGFnc3skdGFnTmFtZX17
bWFwVG9UYWdOYW1lfVRvJHt0YWdOYW1lfUNvbnN0cnVjdG9yIH0sXG4iOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcHJpbnQgRiAiICAgIGFkZFRhZygke3RhZ05hbWV9VGFnLCAkdGFn
Q29uc3RydWN0b3JNYXB7JHRhZ05hbWV9Q29uc3RydWN0b3IpO1xuIjsKKyAgICAgICAgICAgIHBy
aW50IEYgIiAgICAgICAgeyAke3RhZ05hbWV9VGFnLCAkdGFnQ29uc3RydWN0b3JNYXB7JHRhZ05h
bWV9Q29uc3RydWN0b3IgfSxcbiI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGNvbmRpdGlv
bmFsKSB7CkBAIC02ODksMTIgKzY4OSwxMiBAQCBzdWIgcHJpbnROYW1lc0hlYWRlckZpbGUKIAog
ICAgIGlmIChrZXlzICVhbGxUYWdzKSB7CiAgICAgICAgIHByaW50IEYgImNvbnN0IHVuc2lnbmVk
ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzQ291bnQgPSAiLCBzY2FsYXIoa2V5cyAlYWxsVGFn
cyksICI7XG4iOwotICAgICAgICBwcmludCBGICJXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiogZ2V0
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3MoKTtcbiI7CisgICAgICAgIHByaW50IEYgImNvbnN0
IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0ICogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fVRhZ3MoKTtcbiI7CiAgICAgfQogCiAgICAgaWYgKGtleXMgJWFsbEF0dHJzKSB7CiAgICAgICAg
IHByaW50IEYgImNvbnN0IHVuc2lnbmVkICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyc0NvdW50
ID0gIiwgc2NhbGFyKGtleXMgJWFsbEF0dHJzKSwgIjtcbiI7Ci0gICAgICAgIHByaW50IEYgIldl
YkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoKTtc
biI7CisgICAgICAgIHByaW50IEYgImNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0
ICogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzKCk7XG4iOwogICAgIH0KIAogICAgIHBy
aW50SW5pdCgkRiwgMSk7CkBAIC03MjIsMTAgKzcyMiwxMCBAQCBzdWIgcHJpbnROYW1lc0NwcEZp
bGUKICAgICAgICAgICAgIHByaW50IEYgIkRFRklORV9HTE9CQUwoUXVhbGlmaWVkTmFtZSwgIiwg
JG5hbWUsICJUYWcpXG4iOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBwcmludCBGICJc
blxuV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdz
KClcbiI7Ci0gICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29yZTo6UXVhbGlmaWVk
TmFtZSogJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3NbXSA9IHtcbiI7CisgICAgICAgIHByaW50
IEYgIlxuXG5jb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiBjb25zdCAqIGdldCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1UYWdzKClcbiI7CisgICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMg
Y29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSogY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fVRhZ3NbXSA9IHtcbiI7CiAgICAgICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICVhbGxUYWdz
KSB7Ci0gICAgICAgICAgICBwcmludCBGICIgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1l
KikmJHtuYW1lfVRhZyxcbiI7CisgICAgICAgICAgICBwcmludCBGICIgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViQ29yZTo6UXVhbGlmaWVkTmFtZSo+KCYke25hbWV9VGFnKSxcbiI7CiAgICAg
ICAgIH0KICAgICAgICAgcHJpbnQgRiAiICAgIH07XG4iOwogICAgICAgICBwcmludCBGICIgICAg
cmV0dXJuICRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzO1xuIjsKQEAgLTczNywxMyArNzM3LDEz
IEBAIHN1YiBwcmludE5hbWVzQ3BwRmlsZQogICAgICAgICBmb3IgbXkgJG5hbWUgKHNvcnQga2V5
cyAlYWxsQXR0cnMpIHsKICAgICAgICAgICAgIHByaW50IEYgIkRFRklORV9HTE9CQUwoUXVhbGlm
aWVkTmFtZSwgIiwgJG5hbWUsICJBdHRyKVxuIjsKICAgICAgICAgfQotICAgICAgICBwcmludCBG
ICJcblxuV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1B
dHRycygpXG4iOwotICAgICAgICBwcmludCBGICJ7XG4gICAgc3RhdGljIFdlYkNvcmU6OlF1YWxp
ZmllZE5hbWUqICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyW10gPSB7XG4iOworICAgICAgICBw
cmludCBGICJcblxuY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSogY29uc3QgKiBnZXQkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoKVxuIjsKKyAgICAgICAgcHJpbnQgRiAie1xuICAgIHN0
YXRpYyBjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiBjb25zdCAkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9QXR0cnNbXSA9IHtcbiI7CiAgICAgICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICVh
bGxBdHRycykgewotICAgICAgICAgICAgcHJpbnQgRiAiICAgICAgICAoV2ViQ29yZTo6UXVhbGlm
aWVkTmFtZSopJiR7bmFtZX1BdHRyLFxuIjsKKyAgICAgICAgICAgIHByaW50IEYgIiAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpRdWFsaWZpZWROYW1lKj4oJiR7bmFtZX1BdHRyKSxc
biI7CiAgICAgICAgIH0KICAgICAgICAgcHJpbnQgRiAiICAgIH07XG4iOwotICAgICAgICBwcmlu
dCBGICIgICAgcmV0dXJuICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyO1xuIjsKKyAgICAgICAg
cHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnM7XG4iOwogICAg
ICAgICBwcmludCBGICJ9XG4iOwogICAgIH0KIApAQCAtNzUyLDcgKzc1Miw3IEBAIHN1YiBwcmlu
dE5hbWVzQ3BwRmlsZQogICAgIHByaW50KEYgIiAgICBBdG9taWNTdHJpbmcgJHtsb3dlck5hbWVz
cGFjZX1OUyhcIiRwYXJhbWV0ZXJze25hbWVzcGFjZVVSSX1cIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7XG5cbiIpOwogCiAgICAgcHJpbnQoRiAiICAgIC8vIE5hbWVzcGFj
ZVxuIik7Ci0gICAgcHJpbnQoRiAiICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSYke2xvd2VyTmFt
ZXNwYWNlfU5hbWVzcGFjZVVSSSkgQXRvbWljU3RyaW5nKCR7bG93ZXJOYW1lc3BhY2V9TlMpO1xu
Iik7CisgICAgcHJpbnQoRiAiICAgIG5ldyAoTm90TnVsbCwgc3RhdGljX2Nhc3Q8dm9pZCo+KCYk
e2xvd2VyTmFtZXNwYWNlfU5hbWVzcGFjZVVSSSkpIEF0b21pY1N0cmluZygke2xvd2VyTmFtZXNw
YWNlfU5TKTtcbiIpOwogICAgIHByaW50KEYgIlxuIik7CiAgICAgcHJpbnQgRiBTdGF0aWNTdHJp
bmc6OkdlbmVyYXRlU3RyaW5nQXNzZXJ0cyhcJWFsbFN0cmluZ3MpOwogCkBAIC04NDgsMjAgKzg0
OCwzNCBAQCBzdWIgcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcwogc3ViIHByaW50RGVm
aW5pdGlvbnMKIHsKICAgICBteSAoJEYsICRuYW1lc1JlZiwgJHR5cGUsICRuYW1lc3BhY2VVUkkp
ID0gQF87Ci0gICAgbXkgJHNpbmd1bGFyVHlwZSA9IHN1YnN0cigkdHlwZSwgMCwgLTEpOwotICAg
IG15ICRzaG9ydFR5cGUgPSBzdWJzdHIoJHNpbmd1bGFyVHlwZSwgMCwgNCk7Ci0gICAgbXkgJHNo
b3J0Q2FtZWxUeXBlID0gdWNmaXJzdCgkc2hvcnRUeXBlKTsKLSAgICBteSAkc2hvcnRVcHBlclR5
cGUgPSB1Yygkc2hvcnRUeXBlKTsKKworICAgIG15ICRzaG9ydENhbWVsVHlwZSA9IHVjZmlyc3Qo
c3Vic3RyKHN1YnN0cigkdHlwZSwgMCwgLTEpLCAwLCA0KSk7CisgICAgbXkgJGNhcGl0YWxpemVk
VHlwZSA9IHVjZmlyc3QoJHR5cGUpOwogICAgIAotICAgIHByaW50IEYgIiAgICAvLyAiIC4gdWNm
aXJzdCgkdHlwZSkgLiAiXG4iOworcHJpbnQgRiA8PEVORAogCisgICAgc3RydWN0ICR7Y2FwaXRh
bGl6ZWRUeXBlfVRhYmxlRW50cnkgeworICAgICAgICB2b2lkKiB0YXJnZXRBZGRyZXNzOworICAg
ICAgICBTdHJpbmdJbXBsJiBuYW1lOworICAgIH07CisKKyAgICBjb25zdCAke2NhcGl0YWxpemVk
VHlwZX1UYWJsZUVudHJ5ICR7dHlwZX1UYWJsZVtdID0geworRU5ECis7CiAgICAgZm9yIG15ICRu
YW1lIChzb3J0IGtleXMgJSRuYW1lc1JlZikgewotICAgICAgICAjIFRvIGdlbmVyYXRlIGxlc3Mg
Y29kZSBpbiBpbml0KCksIHRoZSBjb21tb24gY2FzZSBvZiBudWxsQXRvbSBmb3IgdGhlIG5hbWVz
cGFjZSwgd2UgY2FsbCBjcmVhdGVRdWFsaWZpZWROYW1lKCkgd2l0aG91dCBwYXNzaW5nICRuYW1l
c3BhY2VVUkkuCi0gICAgICAgIGlmICgkbmFtZXNwYWNlVVJJIGVxICJudWxsQXRvbSIpIHsKLSAg
ICAgICAgICAgIHByaW50IEYgIiAgICBjcmVhdGVRdWFsaWZpZWROYW1lKCh2b2lkKikmJG5hbWUi
LCIke3Nob3J0Q2FtZWxUeXBlfSwgJHtuYW1lfUltcGwpO1xuIjsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHByaW50IEYgIiAgICBjcmVhdGVRdWFsaWZpZWROYW1lKCh2b2lkKikmJG5h
bWUiLCIke3Nob3J0Q2FtZWxUeXBlfSwgJHtuYW1lfUltcGwsICRuYW1lc3BhY2VVUkkpO1xuIjsK
LSAgICAgICAgfQorICAgICAgICBwcmludCBGICIgICAgICAgIHsgJiRuYW1lJHNob3J0Q2FtZWxU
eXBlLCAqJHtuYW1lfUltcGwgfSxcbiI7CisgICAgfQorCitwcmludCBGIDw8RU5ECisgICAgfTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKCR7dHlwZX1U
YWJsZSk7ICsraSkKK0VORAorOworICAgIGlmICgkbmFtZXNwYWNlVVJJIGVxICJudWxsQXRvbSIp
IHsKKyAgICAgICAgcHJpbnQgRiAiICAgICAgICBjcmVhdGVRdWFsaWZpZWROYW1lKCR7dHlwZX1U
YWJsZVtpXS50YXJnZXRBZGRyZXNzLCAmJHt0eXBlfVRhYmxlW2ldLm5hbWUpO1xuIjsKKyAgICB9
IGVsc2UgeworICAgICAgICBwcmludCBGICIgICAgICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoJHt0
eXBlfVRhYmxlW2ldLnRhcmdldEFkZHJlc3MsICYke3R5cGV9VGFibGVbaV0ubmFtZSwgJG5hbWVz
cGFjZVVSSSk7XG4iOwogICAgIH0KIH0KIApAQCAtODczLDExMyArODg3LDk5IEBAIHN1YiBwcmlu
dEZhY3RvcnlDcHBGaWxlCiAgICAgbXkgJEY7CiAgICAgb3BlbiBGLCAiPiRjcHBQYXRoIjsKIAot
cHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKKyAgICBteSAkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRl
Y2xhcmF0aW9uID0gIiI7CisgICAgbXkgJGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9u
ID0gIiI7CisgICAgJGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWNsYXJhdGlvbiA9ICIsIEhUTUxG
b3JtRWxlbWVudCoiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOworICAgICRm
b3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiA9ICIsIEhUTUxGb3JtRWxlbWVudCogZm9y
bUVsZW1lbnQiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwogCi1wcmludCBG
IDw8RU5ECisgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKKworICAgIHByaW50IEYgPDxFTkQK
ICNpbmNsdWRlICJjb25maWcuaCIKIEVORAotOworICAgIDsKIAotcHJpbnQgRiAiXG4jaWYgJHBh
cmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3Rv
cnlXaXRofTsKKyAgICBwcmludCBGICJcbiNpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRo
fVxuXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9OwogCi1wcmludCBGIDw8RU5E
CisgICAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUgIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVt
ZW50RmFjdG9yeS5oIgotI2luY2x1ZGUgIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lcy5oIgot
RU5ECi07CiAKLXByaW50RWxlbWVudEluY2x1ZGVzKCRGKTsKKyNpbmNsdWRlICIkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9TmFtZXMuaCIKIAotcHJpbnQgRiAiXG4jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD5cbiI7CitFTkQKKyAgICA7CiAKLXByaW50Q29uZGl0aW9uYWxFbGVtZW50SW5jbHVkZXMoJEYs
IDApOworICAgIHByaW50RWxlbWVudEluY2x1ZGVzKCRGKTsKKyAgICBwcmludENvbmRpdGlvbmFs
RWxlbWVudEluY2x1ZGVzKCRGLCAwKTsKIAotcHJpbnQgRiA8PEVORAorICAgIHByaW50IEYgPDxF
TkQKIAogI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAjaW5jbHVkZSAiQ3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgiCiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFZJREVPKQot
I2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9TmFtZXM7CiAKLUVORAotOwotCi1wcmludCBGICJ0eXBlZGVmIFBhc3NSZWZQdHI8JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICgqQ29uc3RydWN0b3JGdW5jdGlvbikoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50KiI7Ci1wcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCoiIGlm
ICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwotcHJpbnQgRiAiLCBib29sIGNyZWF0
ZWRCeVBhcnNlcik7XG4iOwotcHJpbnQgRiA8PEVORAotdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCBDb25zdHJ1Y3RvckZ1bmN0aW9uPiBGdW5jdGlvbk1hcDsKLQotc3RhdGljIEZ1
bmN0aW9uTWFwKiBnRnVuY3Rpb25NYXAgPSAwOwordHlwZWRlZiBQYXNzUmVmUHRyPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50PiAoKiRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3Rv
ckZ1bmN0aW9uKShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmJGZvcm1FbGVtZW50QXJn
dW1lbnRGb3JEZWNsYXJhdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCiBFTkQKLTsKLQot
bXkgJXRhZ0NvbnN0cnVjdG9yTWFwID0gYnVpbGRDb25zdHJ1Y3Rvck1hcCgpOworICAgIDsKIAot
cHJpbnRDb25zdHJ1Y3RvcnMoJEYsIFwldGFnQ29uc3RydWN0b3JNYXApOworICAgIG15ICV0YWdD
b25zdHJ1Y3Rvck1hcCA9IGJ1aWxkQ29uc3RydWN0b3JNYXAoKTsKIAotcHJpbnQgRiA8PEVORAot
c3RhdGljIHZvaWQgYWRkVGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZywgQ29uc3RydWN0b3JG
dW5jdGlvbiBmdW5jKQotewotICAgIGdGdW5jdGlvbk1hcC0+c2V0KHRhZy5sb2NhbE5hbWUoKS5p
bXBsKCksIGZ1bmMpOwotfQorICAgIHByaW50Q29uc3RydWN0b3JzKCRGLCBcJXRhZ0NvbnN0cnVj
dG9yTWFwKTsKIAotc3RhdGljIHZvaWQgY3JlYXRlRnVuY3Rpb25NYXAoKQorICAgIHByaW50IEYg
PDxFTkQKK3N0YXRpYyB2b2lkIHBvcHVsYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUZhY3RvcnlN
YXAoSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0
cnVjdG9yRnVuY3Rpb24+JiBtYXApCiB7Ci0gICAgQVNTRVJUKCFnRnVuY3Rpb25NYXApOworICAg
IHN0cnVjdCBUYWJsZUVudHJ5IHsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZTsK
KyAgICAgICAgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24gZnVuY3Rp
b247CisgICAgfTsKIAotICAgIC8vIENyZWF0ZSB0aGUgdGFibGUuCi0gICAgZ0Z1bmN0aW9uTWFw
ID0gbmV3IEZ1bmN0aW9uTWFwOwotICAgIAotICAgIC8vIFBvcHVsYXRlIGl0IHdpdGggY29uc3Ry
dWN0b3IgZnVuY3Rpb25zLgorICAgIGNvbnN0IFRhYmxlRW50cnkgdGFibGVbXSA9IHsKIEVORAot
OwotCi1wcmludEZ1bmN0aW9uSW5pdHMoJEYsIFwldGFnQ29uc3RydWN0b3JNYXApOwotCi1wcmlu
dCBGICJ9XG4iOworICAgIDsKIAorICAgIHByaW50RnVuY3Rpb25UYWJsZSgkRiwgXCV0YWdDb25z
dHJ1Y3Rvck1hcCk7CiAKLXByaW50IEYgIlxuUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGUk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50IjsKLXByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxl
bWVudCIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7Ci1wcmludCBGICIsIGJv
b2wgY3JlYXRlZEJ5UGFyc2VyKVxue1xuIjsKKyAgICBwcmludCBGIDw8RU5ECisgICAgfTsKIAot
cHJpbnQgRiA8PEVORAotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiAwOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKQor
ICAgICAgICBtYXAuYWRkKHRhYmxlW2ldLm5hbWUubG9jYWxOYW1lKCkuaW1wbCgpLCB0YWJsZVtp
XS5mdW5jdGlvbik7Cit9CiAKK1Bhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQkZm9ybUVsZW1lbnRB
cmd1bWVudEZvckRlZmluaXRpb24sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorewogRU5ECi07Cisg
ICAgOwogCi1pZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBuZSAiSFRNTCIgYW5kICRwYXJhbWV0
ZXJze25hbWVzcGFjZX0gbmUgIlNWRyIpIHsKLXByaW50IEYgPDxFTkQKKyAgICBpZiAoJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfSBuZSAiSFRNTCIgYW5kICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gbmUg
IlNWRyIpIHsKKyAgICAgICAgcHJpbnQgRiA8PEVORAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwogICAgIGlmIChzZXR0
aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIEVORAotOwotCi19CisgICAgICAgIDsKKyAg
ICB9CiAKLXByaW50IEYgPDxFTkQKKyAgICBwcmludCBGIDw8RU5ECiAjaWYgRU5BQkxFKENVU1RP
TV9FTEVNRU5UUykKLSAgICBpZiAoZG9jdW1lbnQtPnJlZ2lzdHJ5KCkpIHsKLSAgICAgICAgaWYg
KFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gZG9jdW1lbnQt
PnJlZ2lzdHJ5KCktPmZpbmQobnVsbFFOYW1lKCksIHFOYW1lKSkgeworICAgIGlmIChkb2N1bWVu
dC5yZWdpc3RyeSgpKSB7CisgICAgICAgIGlmIChSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVj
dG9yPiBjb25zdHJ1Y3RvciA9IGRvY3VtZW50LnJlZ2lzdHJ5KCktPmZpbmQobnVsbFFOYW1lKCks
IG5hbWUpKSB7CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNvbnN0cnVj
dG9yLT5jcmVhdGVFbGVtZW50KCk7CiAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudC0+aXMkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
cG9pbnRlcl9jYXN0PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PihlbGVtZW50LnJlbGVh
c2UoKSk7CkBAIC05ODcsMjQgKzk4NywzMSBAQCBwcmludCBGIDw8RU5ECiAgICAgfQogI2VuZGlm
CiAKLSAgICBpZiAoIWdGdW5jdGlvbk1hcCkKLSAgICAgICAgY3JlYXRlRnVuY3Rpb25NYXAoKTsK
LSAgICBpZiAoQ29uc3RydWN0b3JGdW5jdGlvbiBmdW5jdGlvbiA9IGdGdW5jdGlvbk1hcC0+Z2V0
KHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSkpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVj
dG9yRnVuY3Rpb24+PiBmdW5jdGlvbnM7CisgICAgaWYgKGZ1bmN0aW9ucy5nZXQoKS5pc0VtcHR5
KCkpCisgICAgICAgIHBvcHVsYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUZhY3RvcnlNYXAoZnVu
Y3Rpb25zLmdldCgpKTsKKyAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9y
RnVuY3Rpb24gZnVuY3Rpb24gPSBmdW5jdGlvbnMuZ2V0KCkuZ2V0KG5hbWUubG9jYWxOYW1lKCku
aW1wbCgpKSkgewogRU5ECi07CisgICAgOwogCiAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX0gZXEgIkhUTUwiKSB7Ci0gICAgICAgIHByaW50IEYgIiAgICAgICAgaWYgKFBhc3NSZWZQdHI8
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQgPSBmdW5jdGlvbihxTmFtZSwg
ZG9jdW1lbnQsIGZvcm1FbGVtZW50LCBjcmVhdGVkQnlQYXJzZXIpKVxuIjsKLSAgICAgICAgcHJp
bnQgRiAiICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4iOworICAgICAgICBwcmludCBGICIg
ICAgICAgIGlmIChSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQg
PSBmdW5jdGlvbihuYW1lLCBkb2N1bWVudCwgZm9ybUVsZW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikp
XG4iOworICAgICAgICBwcmludCBGICIgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNl
KCk7XG4iOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHByaW50IEYgIiAgICAgICAgaWYgKFBhc3NS
ZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQgPSBmdW5jdGlvbihx
TmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpXG4iOwotICAgICAgICBwcmludCBGICIg
ICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiI7CisgICAgICAgIHByaW50IEYgIiAgICAgICAg
aWYgKFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0
aW9uKG5hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKVxuIjsKKyAgICAgICAgcHJpbnQg
RiAiICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpO1xuIjsKICAgICB9CisKICAg
ICBwcmludCBGICIgICB9XG4iOwotICAgIHByaW50IEYgIiAgIHJldHVybiAkcGFyYW1ldGVyc3tm
YWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVhdGUocU5hbWUsICIgLiAoJHBhcmFtZXRlcnN7Y29u
c3RydWN0b3JUYWtlc0RvY3VtZW50UmVmZXJlbmNlfSA/ICIqZG9jdW1lbnQiIDogImRvY3VtZW50
IikgLiAiKTtcbiI7CisgICAgcHJpbnQgRiAiICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxiYWNr
SW50ZXJmYWNlTmFtZX06OmNyZWF0ZShuYW1lLCAiIC4gKCRwYXJhbWV0ZXJze2NvbnN0cnVjdG9y
VGFrZXNEb2N1bWVudFJlZmVyZW5jZX0gPyAiIiA6ICImIikgLiAiZG9jdW1lbnQpO1xuIjsKIAot
ICAgIHByaW50IEYgIn1cblxuIjsKLSAgICBwcmludCBGICJ9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
XG5cbiI7CisgICAgcHJpbnQgRiA8PEVORAorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K0VORAorICAgIDsKIAogICAgIHByaW50IEYgIiNlbmRpZlxuIiBpZiAkcGFyYW1ldGVyc3tndWFy
ZEZhY3RvcnlXaXRofTsKIApAQCAtMTAyNCwzMyArMTAzMSwyMyBAQCBzdWIgcHJpbnRGYWN0b3J5
SGVhZGVyRmlsZQogI2RlZmluZSAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnlf
aAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRWxlbWVudDsKKwogICAgIGNsYXNz
IERvY3VtZW50OworICAgIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKICAgICBjbGFzcyBRdWFsaWZp
ZWROYW1lOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyAkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudDsKLUVORAotOwogCi1wcmludCBGICIgICAgIGNsYXNzIEhUTUxG
b3JtRWxlbWVudDtcbiIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7Ci0KLXBy
aW50IEY8PEVORAotICAgIC8vIFRoZSBpZGVhIGJlaGluZCB0aGlzIGNsYXNzIGlzIHRoYXQgdGhl
cmUgd2lsbCBldmVudHVhbGx5IGJlIGEgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBVUklzIHRvIEVs
ZW1lbnRGYWN0b3JpZXMgdGhhdCBjYW4gZGlzcGVuc2UKLSAgICAvLyBlbGVtZW50cy4gSW4gYSBj
b21wb3VuZCBkb2N1bWVudCB3b3JsZCwgdGhlIGdlbmVyaWMgY3JlYXRlRWxlbWVudCBmdW5jdGlv
biAod2lsbCBlbmQgdXAgYmVpbmcgdmlydHVhbCkgd2lsbCBiZSBjYWxsZWQuCiAgICAgY2xhc3Mg
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBXZWJDb3JlOjpRdWFs
aWZpZWROYW1lJiwgV2ViQ29yZTo6RG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9IHRy
dWUpOwogRU5ECiA7Ci1wcmludCBGICIgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVu
dChjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiwgV2ViQ29yZTo6RG9jdW1lbnQqIjsKLXBy
aW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IDAiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0g
ZXEgIkhUTUwiOwotcHJpbnQgRiAiLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9IHRydWUpO1xuIjsK
KworcHJpbnQgRiAiICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
IjsKK3ByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IG51bGxwdHIiIGlmICRwYXJhbWV0ZXJz
e25hbWVzcGFjZX0gZXEgIkhUTUwiOworcHJpbnQgRiAiLCBib29sIGNyZWF0ZWRCeVBhcnNlciA9
IGZhbHNlKTtcbiI7CiAKIHByaW50ZiBGPDxFTkQKICAgICB9OwpAQCAtMTE2MCw0NyArMTE1Nywz
NSBAQCBzdWIgcHJpbnRXcmFwcGVyRmFjdG9yeUNwcEZpbGUKICAgICBwcmludExpY2Vuc2VIZWFk
ZXIoJEYpOwogCiAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iOwotICAgIHBy
aW50IEYgIiNpbmNsdWRlIFwiSlMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJG
YWN0b3J5LmhcIlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVkZSBcIkpTJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oXCJcblxuIjsKIAogICAgIHByaW50IEYgIlxu
I2lmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9XG5cbiIgaWYgJHBhcmFtZXRlcnN7Z3Vh
cmRGYWN0b3J5V2l0aH07CiAKICAgICBwcmludEpTRWxlbWVudEluY2x1ZGVzKCRGKTsKLQotICAg
IHByaW50IEYgIlxuI2luY2x1ZGUgXCIkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXMuaFwiXG5c
biI7Ci0KICAgICBwcmludEVsZW1lbnRJbmNsdWRlcygkRik7CiAKLSAgICBwcmludCBGICJcbiNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+XG4iOwotCi0gICAgcHJpbnRDb25kaXRpb25hbEVs
ZW1lbnRJbmNsdWRlcygkRiwgMSk7Ci0KKyAgICBwcmludCBGICJcbiNpbmNsdWRlIFwiJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfU5hbWVzLmhcIlxuIjsKICAgICBwcmludCBGIDw8RU5ECiAKICNpbmNs
dWRlICJDb250ZXh0RmVhdHVyZXMuaCIKLSNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCi0KLSNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNlbmRp
ZgotCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogRU5ECiA7CiAKLSAgICBwcmludCBGIDw8RU5ECi11c2luZyBuYW1lc3BhY2Ug
SlNDOwotRU5ECi07CisgICAgcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcygkRiwgMSk7
CiAKICAgICBwcmludCBGIDw8RU5ECiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1l
czsKIAotRU5ECi07Ci1wcmludCBGIDw8RU5ECiB0eXBlZGVmIEpTRE9NV3JhcHBlciogKCpDcmVh
dGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbikoRXhlY1N0YXRl
KiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50Pik7CiAKIEVORApAQCAtMTIwOSwxMSArMTE5NCwxNSBAQCBFTkQKICAgICBwcmludFdy
YXBwZXJGdW5jdGlvbnMoJEYpOwogCiBwcmludCBGIDw8RU5ECi1KU0RPTVdyYXBwZXIqIGNyZWF0
ZUpTJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50PiBlbGVtZW50KQorCitzdGF0aWMgdm9pZCBwb3B1bGF0ZSRwYXJhbWV0ZXJze25h
bWVzcGFjZX1XcmFwcGVyTWFwKEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uPiYgbWFwKQogewotICAgIHR5
cGVkZWYgSGFzaE1hcDxXVEY6OkF0b21pY1N0cmluZ0ltcGwqLCBDcmVhdGUkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbj4gRnVuY3Rpb25NYXA7Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChGdW5jdGlvbk1hcCwgbWFwLCAoKSk7Ci0gICAgaWYgKG1hcC5pc0VtcHR5
KCkpIHsKKyAgICBzdHJ1Y3QgVGFibGVFbnRyeSB7CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWU7CisgICAgICAgIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3Jh
cHBlckZ1bmN0aW9uIGZ1bmN0aW9uOworICAgIH07CisKKyAgICBjb25zdCBUYWJsZUVudHJ5IHRh
YmxlW10gPSB7CiBFTkQKIDsKIApAQCAtMTIyOCw5ICsxMjE3LDEwIEBAIEVORAogICAgICAgICB9
CiAKICAgICAgICAgbXkgJHVjVGFnID0gJGVuYWJsZWRUYWdzeyR0YWd9e0pTSW50ZXJmYWNlTmFt
ZX07CisKICAgICAgICAgIyBGSVhNRSBSZW1vdmUgdW5uZWNlc3NhcnkgJyYnIGZyb20gdGhlIGZv
bGxvd2luZyAocHJpbnQpIGxpbmUgb25jZSB3ZSBzd2l0Y2ggdG8gYSBub24tYnJva2VuIFZpc3Vh
bCBTdHVkaW8gY29tcGlsZXIuCiAgICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMTIzNToKLSAgICAgICAgcHJpbnQgRiAiICAgICAgIG1hcC5zZXQoJHt0
YWd9VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJmNyZWF0ZSR7dWNUYWd9V3JhcHBlcik7XG4iOwor
ICAgICAgICBwcmludCBGICIgICAgICAgIHsgJHt0YWd9VGFnLCAmY3JlYXRlJHt1Y1RhZ31XcmFw
cGVyIH0sXG4iOwogCiAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKICAgICAgICAgICAgIHBy
aW50IEYgIiNlbmRpZlxuIjsKQEAgLTEyMzgsMjcgKzEyMjgsMjcgQEAgRU5ECiAgICAgfQogCiAg
ICAgcHJpbnQgRiA8PEVORAotICAgIH0KLUVORAotOworICAgIH07CiAKLSAgICBwcmludCBGIDw8
RU5ECi0gICAgQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rp
b24gY3JlYXRlV3JhcHBlckZ1bmN0aW9uID0gbWFwLmdldChlbGVtZW50LT5sb2NhbE5hbWUoKS5p
bXBsKCkpOwotICAgIGlmIChjcmVhdGVXcmFwcGVyRnVuY3Rpb24pCi1FTkQKLTsKLSAgICBwcmlu
dCBGIDw8RU5ECi0gICAgICAgIHJldHVybiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24oZXhlYywgZ2xv
YmFsT2JqZWN0LCBlbGVtZW50KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FS
UkFZX0xFTkdUSCh0YWJsZSk7ICsraSkKKyAgICAgICAgbWFwLmFkZCh0YWJsZVtpXS5uYW1lLmxv
Y2FsTmFtZSgpLmltcGwoKSwgdGFibGVbaV0uZnVuY3Rpb24pOworfQorCitKU0RPTVdyYXBwZXIq
IGNyZWF0ZUpTJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudFdyYXBwZXJGdW5jdGlvbj4+IGZ1bmN0aW9uczsKKyAgICBpZiAoZnVuY3Rpb25zLmdldCgp
LmlzRW1wdHkoKSkKKyAgICAgICAgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBl
ck1hcChmdW5jdGlvbnMuZ2V0KCkpOworICAgIGlmIChhdXRvIGZ1bmN0aW9uID0gZnVuY3Rpb25z
LmdldCgpLmdldChlbGVtZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpKQorICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBlbGVtZW50KTsKICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7ZmFsbGJhY2tKU0lu
dGVyZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsKLUVORAotOwotICAgIHByaW50IEYgPDxFTkQK
K30KKwogfQogRU5ECiA7CiAKLSAgICBwcmludCBGICJ9XG5cbiI7Ci0gICAgcHJpbnQgRiAiI2Vu
ZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9OworICAgIHByaW50IEYgIlxu
I2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9OwogCiAgICAgY2xvc2Ug
RjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggODM2ZjljNjcy
NmVhYjk2Yjg1MmEyZWUyYmY3MTM3MDk2NWExM2ExZS4uZGRhZjI0NDE5NzdiMWZlYjNlOTA2Mjhi
YjVkMDU2NmEwOGQ0YjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAK
QEAgLTkzOSw3ICs5MzksOSBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVMaXN0SXRl
bUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBj
cmVhdGVIVE1MRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpCiB7Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1l
bnQobmFtZSwgZG9jdW1lbnQsIDAsIGZhbHNlKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVF
bGVtZW50KG5hbWUsICpkb2N1bWVudCk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNy
ZWF0ZUhUTUxFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0
YWdOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGU4ZTllOWNiYWUy
OTJkYzc5NTNlODYxZjdjODk5MzdlMjZkNzQyM2EuLmNkNTMxOTBlZjEzYzJiYmZiNzJlMGUyZjhk
NmE1M2JkNmQyNGJjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTI5
Myw3ICsyOTMsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxEb2N1bWVudDo6Y3JlYXRlRWxl
bWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdAogICAgICAgICBlYyA9IElOVkFM
SURfQ0hBUkFDVEVSX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJldHVybiBI
VE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0
b20sIG5hbWUubG93ZXIoKSwgeGh0bWxOYW1lc3BhY2VVUkkpLCB0aGlzLCAwLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1l
KG51bGxBdG9tLCBuYW1lLmxvd2VyKCksIHhodG1sTmFtZXNwYWNlVVJJKSwgKnRoaXMpOwogfQog
CiBzdGF0aWMgdm9pZCBhZGRMb2NhbE5hbWVUb1NldChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
Piogc2V0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKaW5kZXggZTc3MDZlZDcxNDYyMWExMjU1ZWJjNjY3MmFlZmUzNTYzYmZiNDkwZS4u
ZmU4NjUzYjIxMzEwYWNhNDZjZWQ1MTNkNWE2NjY5NzBlY2YyNDEwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZQogICAgICAgICBTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25B
dHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAotc3RhdGljIHZvaWQgcG9wdWxhdGVF
dmVudE5hbWVGb3JBdHRyaWJ1dGVMb2NhbE5hbWVNYXAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0
b21pY1N0cmluZz4mIG1hcCkKK3N0YXRpYyB2b2lkIHBvcHVsYXRlRXZlbnROYW1lRm9yQXR0cmli
dXRlTG9jYWxOYW1lTWFwKEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZz4m
IG1hcCkKIHsKICAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCBzaW1wbGVUYWJsZVtdID0g
ewogICAgICAgICAmb25hYm9ydEF0dHIsCkBAIC0yOTcsMjQgKzI5NywyNCBAQCBzdGF0aWMgdm9p
ZCBwb3B1bGF0ZUV2ZW50TmFtZUZvckF0dHJpYnV0ZUxvY2FsTmFtZU1hcChIYXNoTWFwPEF0b21p
Y1N0cmluZywgQXRvbQogICAgICAgICAvLyBieSBub3QgdXNpbmcgcG9pbnRlcnMgZnJvbSBldmVu
dE5hbWVzKCksIHNpbXBsZVRhYmxlIGNhbiBiZSBpbml0aWFsaXplZCBhdCBjb21waWxlIHRpbWUu
CiAgICAgICAgIEF0b21pY1N0cmluZyBldmVudE5hbWUgPSBhdHRyaWJ1dGVOYW1lLnN0cmluZygp
LnN1YnN0cmluZygyKTsKIAotICAgICAgICBtYXAuYWRkKGF0dHJpYnV0ZU5hbWUsIGV2ZW50TmFt
ZSk7CisgICAgICAgIG1hcC5hZGQoYXR0cmlidXRlTmFtZS5pbXBsKCksIGV2ZW50TmFtZSk7CiAg
ICAgfQogCiAgICAgc3RydWN0IEN1c3RvbU1hcHBpbmcgewotICAgICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lKiBhdHRyaWJ1dGVOYW1lOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcqIGV2ZW50
TmFtZTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZTsKKyAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWU7CiAgICAgfTsKIAogICAgIGNvbnN0IEN1
c3RvbU1hcHBpbmcgY3VzdG9tVGFibGVbXSA9IHsKLSAgICAgICAgeyAmb250cmFuc2l0aW9uZW5k
QXR0ciwgJmV2ZW50TmFtZXMoKS53ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQgfSwKLSAgICAgICAg
eyAmb253ZWJraXRhbmltYXRpb25lbmRBdHRyLCAmZXZlbnROYW1lcygpLndlYmtpdEFuaW1hdGlv
bkVuZEV2ZW50IH0sCi0gICAgICAgIHsgJm9ud2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uQXR0ciwg
JmV2ZW50TmFtZXMoKS53ZWJraXRBbmltYXRpb25JdGVyYXRpb25FdmVudCB9LAotICAgICAgICB7
ICZvbndlYmtpdGFuaW1hdGlvbnN0YXJ0QXR0ciwgJmV2ZW50TmFtZXMoKS53ZWJraXRBbmltYXRp
b25TdGFydEV2ZW50IH0sCi0gICAgICAgIHsgJm9ud2Via2l0dHJhbnNpdGlvbmVuZEF0dHIsICZl
dmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50IH0sCisgICAgICAgIHsgb250cmFu
c2l0aW9uZW5kQXR0ciwgZXZlbnROYW1lcygpLndlYmtpdFRyYW5zaXRpb25FbmRFdmVudCB9LAor
ICAgICAgICB7IG9ud2Via2l0YW5pbWF0aW9uZW5kQXR0ciwgZXZlbnROYW1lcygpLndlYmtpdEFu
aW1hdGlvbkVuZEV2ZW50IH0sCisgICAgICAgIHsgb253ZWJraXRhbmltYXRpb25pdGVyYXRpb25B
dHRyLCBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uRXZlbnQgfSwKKyAgICAg
ICAgeyBvbndlYmtpdGFuaW1hdGlvbnN0YXJ0QXR0ciwgZXZlbnROYW1lcygpLndlYmtpdEFuaW1h
dGlvblN0YXJ0RXZlbnQgfSwKKyAgICAgICAgeyBvbndlYmtpdHRyYW5zaXRpb25lbmRBdHRyLCBl
dmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50IH0sCiAgICAgfTsKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKGN1c3RvbVRhYmxlKTsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgbWFwLmFkZChjdXN0b21UYWJsZVtpXS5hdHRyaWJ1dGVO
YW1lLT5sb2NhbE5hbWUoKSwgKmN1c3RvbVRhYmxlW2ldLmV2ZW50TmFtZSk7CisgICAgICAgIG1h
cC5hZGQoY3VzdG9tVGFibGVbaV0uYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCksIGN1
c3RvbVRhYmxlW2ldLmV2ZW50TmFtZSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCkBAIC0zMzQsMTEgKzMzNCwxMSBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKG5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IENhbiB3ZSBkbyB0aGlzIGV2ZW4gZmFzdGVyIGJ5IGNoZWNraW5nIHRoZSBs
b2NhbCBuYW1lICJvbiIgcHJlZml4IGJlZm9yZSB3ZSBkbyBhbnl0aGluZyB3aXRoIHRoZSBtYXA/
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21pY1N0cmluZywgQXRv
bWljU3RyaW5nPj4gZXZlbnROYW1lc0dsb2JhbDsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZz4+IGV2ZW50TmFtZXNH
bG9iYWw7CiAgICAgICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBldmVudE5hbWVzR2xvYmFsLmdldCgp
OwogICAgICAgICBpZiAoZXZlbnROYW1lcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBwb3B1bGF0
ZUV2ZW50TmFtZUZvckF0dHJpYnV0ZUxvY2FsTmFtZU1hcChldmVudE5hbWVzKTsKLSAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUgPSBldmVudE5hbWVzLmdldChuYW1lLmxvY2Fs
TmFtZSgpKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUgPSBldmVudE5h
bWVzLmdldChuYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIGlmICghZXZlbnROYW1l
LmlzTnVsbCgpKQogICAgICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWUsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKaW5kZXggMzM1MGYwY2E3NmEwMjU0ODU4NDY5ZDdmYzg2Yzg1YmUwOGNjMDE2My4u
OGE3MTA5M2QzNDJhM2VhZDBhZWI0YTk4ZDM5Y2RkMmI5OTFkNTM5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTUw
LDcgKzU1MCw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNy
ZWF0ZUhUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rCiAgICAgLy8gRklYTUU6IFRoaXMg
Y2FuJ3QgdXNlIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVFbGVtZW50IGJlY2F1c2Ugd2UK
ICAgICAvLyBoYXZlIHRvIHBhc3MgdGhlIGN1cnJlbnQgZm9ybSBlbGVtZW50LiAgV2Ugc2hvdWxk
IHJld29yayBmb3JtIGFzc29jaWF0aW9uCiAgICAgLy8gdG8gb2NjdXIgYWZ0ZXIgY29uc3RydWN0
aW9uIHRvIGFsbG93IGJldHRlciBjb2RlIHNoYXJpbmcgaGVyZS4KLSAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQodGFnTmFt
ZSwgJm93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpLCBmb3JtKCksIHRydWUpOworICAgIFJl
ZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50
KHRhZ05hbWUsIG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpLCBmb3JtKCksIHRydWUpOwog
ICAgIHNldEF0dHJpYnV0ZXMoZWxlbWVudC5nZXQoKSwgdG9rZW4sIG1fcGFyc2VyQ29udGVudFBv
bGljeSk7CiAgICAgQVNTRVJUKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7CiAgICAgcmV0dXJu
IGVsZW1lbnQucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElk
ZW50aWZpZXIuY3BwCmluZGV4IDZjNDhhNjI3MTk4NjU0NDRlZDI5NzYzOTM3ODZhOWIzMjhhOGEz
YjguLjllMjFiY2MyODA3YzYxNzE3MGRkYWMzYzJjYWQ4Y2RmNjJiMmJkYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgQ09NUElMRV9BU1NFUlQoa0hUTUxBdHRyc0luZGV4T2Zmc2V0ID4gSFRNTFRhZ3NDb3VudCwg
a0hUTUxBdHRyc0luZGV4T2Zmc2V0X3Nob3UKIHN0YXRpYyBjb25zdCBTdHJpbmcmIG5hbWVGb3JJ
bmRleCh1bnNpZ25lZCBpbmRleCkKIHsKICAgICB1bnNpZ25lZCBhZGp1c3RlZEluZGV4OwotICAg
IFF1YWxpZmllZE5hbWUqKiBuYW1lczsKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCAq
IG5hbWVzOwogICAgIGlmIChpbmRleCA8IGtIVE1MQXR0cnNJbmRleE9mZnNldCkgewogICAgICAg
ICBBU1NFUlQoaW5kZXggPCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQgKyBIVE1MVGFnc0NvdW50KTsK
ICAgICAgICAgYWRqdXN0ZWRJbmRleCA9IGluZGV4IC0ga0hUTUxOYW1lc0luZGV4T2Zmc2V0OwpA
QCAtMTE5LDcgKzExOSw3IEBAIGNvbnN0IFN0cmluZ0ltcGwqIEhUTUxJZGVudGlmaWVyOjphc1N0
cmluZ0ltcGwoKSBjb25zdAogICAgIHJldHVybiBtX3N0cmluZy5pbXBsKCk7CiB9CiAKLXZvaWQg
SFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKFF1YWxpZmllZE5hbWUqKiBuYW1lcywgdW5zaWduZWQg
bmFtZXNDb3VudCwgdW5zaWduZWQgaW5kZXhPZmZzZXQpCit2b2lkIEhUTUxJZGVudGlmaWVyOjph
ZGROYW1lcyhjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCAqIG5hbWVzLCB1bnNpZ25lZCBuYW1l
c0NvdW50LCB1bnNpZ25lZCBpbmRleE9mZnNldCkKIHsKICAgICBJZGVudGlmaWVyVGFibGUmIHRh
YmxlID0gaWRlbnRpZmllclRhYmxlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5h
bWVzQ291bnQ7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCmluZGV4IDgyYzdjNTc4YWU2YmE4ODU1NTY4NDVkYWNmNGIwYmM4M2U4NTY4ZGYuLjEzOTYy
ZjcwMjAwNWJlNmQ5YmIyMWYyZmYyM2FkYmYyMDU4NzEzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIFRleHRU
cmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9k
ZSwgQ29udGFpbmVyTgogICAgIGZvciAoTm9kZSogbm9kZSA9IHdlYlZUVE5vZGUtPmZpcnN0Q2hp
bGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVmUHRy
PE5vZGU+IGNsb25lZE5vZGU7CiAgICAgICAgIGlmIChub2RlLT5pc1dlYlZUVEVsZW1lbnQoKSkK
LSAgICAgICAgICAgIGNsb25lZE5vZGUgPSB0b1dlYlZUVEVsZW1lbnQobm9kZSktPmNyZWF0ZUVx
dWl2YWxlbnRIVE1MRWxlbWVudCgmb3duZXJEb2N1bWVudCgpKTsKKyAgICAgICAgICAgIGNsb25l
ZE5vZGUgPSB0b1dlYlZUVEVsZW1lbnQobm9kZSktPmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVu
dChvd25lckRvY3VtZW50KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjbG9uZWROb2Rl
ID0gbm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKICAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChj
bG9uZWROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuY3BwCmluZGV4IGUyYzZmY2QxNDRmMjA4ZjQzMmFhZGM5YzA1OTQy
MDY5NjVjZmE2N2MuLjdlZTY4NDQyZmE4YjMwOTAwZWZiNjViOGY3NDFmMzg4NTk3NjgwMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcApAQCAtNjgsNTcg
KzY4LDU4IEBAIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFtZShX
ZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKICAgICB9CiB9CiAKLVdlYlZUVEVsZW1lbnQ6OldlYlZU
VEVsZW1lbnQoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUsIERvY3VtZW50KiBkb2N1bWVudCkKLSAg
ICA6IEVsZW1lbnQobm9kZVR5cGVUb1RhZ05hbWUobm9kZVR5cGUpLCBkb2N1bWVudCwgQ3JlYXRl
RWxlbWVudCkKK1dlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQoV2ViVlRUTm9kZVR5cGUgbm9k
ZVR5cGUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEVsZW1lbnQobm9kZVR5cGVUb1RhZ05h
bWUobm9kZVR5cGUpLCAmZG9jdW1lbnQsIENyZWF0ZUVsZW1lbnQpCiAgICAgLCBtX2lzUGFzdE5v
ZGUoMCkKICAgICAsIG1fd2ViVlRUTm9kZVR5cGUobm9kZVR5cGUpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViVlRURWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y3JlYXRlKFdlYlZUVE5vZGVUeXBlIG5v
ZGVUeXBlLCBEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IFdl
YlZUVEVsZW1lbnQ6OmNyZWF0ZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVlRURWxlbWVudChub2RlVHlw
ZSwgZG9jdW1lbnQpKTsKIH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBXZWJWVFRFbGVtZW50Ojpj
bG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKIHsKLSAgICBSZWZQdHI8
V2ViVlRURWxlbWVudD4gY2xvbmUgPSBjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViVlRUTm9kZVR5cGU+
KG1fd2ViVlRUTm9kZVR5cGUpLCAmZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPFdlYlZUVEVsZW1l
bnQ+IGNsb25lID0gY3JlYXRlKHN0YXRpY19jYXN0PFdlYlZUVE5vZGVUeXBlPihtX3dlYlZUVE5v
ZGVUeXBlKSwgZG9jdW1lbnQoKSk7CiAgICAgY2xvbmUtPnNldExhbmd1YWdlKG1fbGFuZ3VhZ2Up
OwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gV2ViVlRU
RWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
K1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZUVxdWl2YWxlbnRI
VE1MRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50
PiBodG1sRWxlbWVudDsKKwogICAgIHN3aXRjaCAobV93ZWJWVFROb2RlVHlwZSkgewogICAgIGNh
c2UgV2ViVlRUTm9kZVR5cGVDbGFzczoKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlTGFuZ3VhZ2U6
CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZVZvaWNlOgotICAgICAgICBodG1sRWxlbWVudCA9IEhU
TUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQoSFRNTE5hbWVzOjpzcGFuVGFnLCBk
b2N1bWVudCk7Ci0gICAgICAgIGh0bWxFbGVtZW50LmdldCgpLT5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjp0aXRsZUF0dHIsIGdldEF0dHJpYnV0ZSh2b2ljZUF0dHJpYnV0ZU5hbWUoKSkpOwotICAg
ICAgICBodG1sRWxlbWVudC5nZXQoKS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6bGFuZ0F0dHIs
IGdldEF0dHJpYnV0ZShsYW5nQXR0cmlidXRlTmFtZSgpKSk7CisgICAgICAgIGh0bWxFbGVtZW50
ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6c3BhblRhZywg
ZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
dGl0bGVBdHRyLCBnZXRBdHRyaWJ1dGUodm9pY2VBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAgICAg
aHRtbEVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmxhbmdBdHRyLCBnZXRBdHRyaWJ1
dGUobGFuZ0F0dHJpYnV0ZU5hbWUoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYlZU
VE5vZGVUeXBlSXRhbGljOgotICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9y
eTo6Y3JlYXRlSFRNTEVsZW1lbnQoSFRNTE5hbWVzOjppVGFnLCBkb2N1bWVudCk7CisgICAgICAg
IGh0bWxFbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1l
czo6aVRhZywgZG9jdW1lbnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYlZUVE5vZGVU
eXBlQm9sZDoKLSAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0
ZUhUTUxFbGVtZW50KEhUTUxOYW1lczo6YlRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxl
bWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OmJUYWcs
IGRvY3VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZVVuZGVy
bGluZToKLSAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhU
TUxFbGVtZW50KEhUTUxOYW1lczo6dVRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVu
dCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OnVUYWcsIGRv
Y3VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZVJ1Ynk6Ci0g
ICAgICAgIGh0bWxFbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVu
dChIVE1MTmFtZXM6OnJ1YnlUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBI
VE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjpydWJ5VGFnLCBkb2N1
bWVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVSdWJ5VGV4dDoK
LSAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVt
ZW50KEhUTUxOYW1lczo6cnRUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBI
VE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjpydFRhZywgZG9jdW1l
bnQpOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKLSAgICBodG1sRWxlbWVudC5nZXQoKS0+c2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6Y2xhc3NBdHRyLCBnZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsK
LSAgICByZXR1cm4gaHRtbEVsZW1lbnQ7CisgICAgQVNTRVJUKGh0bWxFbGVtZW50KTsKKyAgICBp
ZiAoaHRtbEVsZW1lbnQpCisgICAgICAgIGh0bWxFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpjbGFzc0F0dHIsIGZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsK
KyAgICByZXR1cm4gaHRtbEVsZW1lbnQucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmluZGV4IDc1
MzA0OWM3YmZlYWRkM2U3NTIzNmY2MDU1NTYzNDBjMmRlZTE4ZmUuLmY1MTc3YjI1ZThjM2EwNzY3
OTQ1NmE0MzMzNjU3ZTExZmNkMTAyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRURWxlbWVudC5oCkBAIC00Myw5ICs0Myw4IEBAIGVudW0gV2ViVlRUTm9kZVR5cGUgewogCiBj
bGFzcyBXZWJWVFRFbGVtZW50IEZJTkFMIDogcHVibGljIEVsZW1lbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBXZWJWVFROb2Rl
VHlwZSwgRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWVFRFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgUGFzc1JlZlB0cjxI
VE1MRWxlbWVudD4gY3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50Kik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFdlYlZUVE5vZGVU
eXBlLCBEb2N1bWVudCYpOworICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUVxdWl2
YWxlbnRIVE1MRWxlbWVudChEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBPVkVSUklE
RTsKIApAQCAtNzIsOCArNzEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFdl
YlZUVEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgV2ViVlRU
RWxlbWVudChXZWJWVFROb2RlVHlwZSwgRG9jdW1lbnQqKTsKKyAgICBXZWJWVFRFbGVtZW50KFdl
YlZUVE5vZGVUeXBlLCBEb2N1bWVudCYpOwogCiAgICAgdW5zaWduZWQgbV9pc1Bhc3ROb2RlIDog
MTsKICAgICB1bnNpZ25lZCBtX3dlYlZUVE5vZGVUeXBlIDogNDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCA1YzIwNmJhYWQ4YzQzZDhhMWZmODhiMDE1
ZTdhZmY5ZmUxOTEzMzVkLi44NDM3ZWM0NzYyNWY3YzQ5ZTY3ZjQ4OGFmOTk3MDY4YjJjOWQyZmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC01MDgs
NyArNTA4LDcgQEAgdm9pZCBXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgICAgICBSZWZQdHI8V2ViVlRURWxlbWVudD4gY2hpbGQ7CiAg
ICAgICAgIFdlYlZUVE5vZGVUeXBlIG5vZGVUeXBlID0gdG9rZW5Ub05vZGVUeXBlKG1fdG9rZW4p
OwogICAgICAgICBpZiAobm9kZVR5cGUgIT0gV2ViVlRUTm9kZVR5cGVOb25lKQotICAgICAgICAg
ICAgY2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVhdGUobm9kZVR5cGUsIGRvY3VtZW50KTsKKyAg
ICAgICAgICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRlKG5vZGVUeXBlLCAqZG9jdW1l
bnQpOwogICAgICAgICBpZiAoY2hpbGQpIHsKICAgICAgICAgICAgIGlmIChtX3Rva2VuLmNsYXNz
ZXMoKS5zaXplKCkgPiAwKQogICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUoY2xh
c3NBdHRyLCBBdG9taWNTdHJpbmcobV90b2tlbi5jbGFzc2VzKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211695</attachid>
            <date>2013-09-15 01:24:34 -0700</date>
            <delta_ts>2013-09-15 01:48:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121378-20130915012433.patch</filename>
            <type>text/plain</type>
            <size>45299</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFhMGY2YmNiN2Y1ODdl
NGExNDJiNjJjYWM3N2NjNjQ5OGJhMjdlNi4uMzE4ZjcyMWQzZTBlYzE3OThlNWRmZjg1NmY1Y2I2
YjVmOGNhODNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEzLTA5LTE1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTaHJpbmsgZmFjdG9yeSBmdW5j
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MTM3OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVGhp
cyBtYWtlcyB0aGUgZnVuY3Rpb25zIHRoYXQgYnVpbGRzIGZvdXIgZGlmZmVyZW50IHR5cGVzIG9m
IHBlci1lbGVtZW50IHRhYmxlcworICAgICAgICBhbGwgaGF2ZSBzbWFsbGVyIGNvZGUgc2l6ZS4K
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IFR3ZWFrZWQgaG93IEhUTUwgYW5kIFNW
RyB3cmFwcGVyIGZhY3RvcmllcyBhcmUgbWFkZSBhIGJpdC4KKyAgICAgICAgSXQgd2FzIE9LLCBi
dXQgYSBsaXR0bGUgc2xvcHB5LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFbGVtZW50KTogQ2hhbmdlZCB0byBjYWxsIHRo
ZSBjcmVhdGVFbGVtZW50IGZ1bmN0aW9ucworICAgICAgICBpbiB0aGUgZmFjdG9yaWVzLiBBbHNv
IGRpZCBzb21lIHN0eWxlIGltcHJvdmVtZW50LgorCisgICAgICAgICogZG9tL21ha2VfbmFtZXMu
cGw6CisgICAgICAgIChwcmludENvbnN0cnVjdG9yU2lnbmF0dXJlKTogTWFrZSBjb25zdHJ1Y3Rv
cnMgdGFrZSBhIERvY3VtZW50JiBpbnN0ZWFkIG9mCisgICAgICAgIGEgRG9jdW1lbnQqLgorICAg
ICAgICAocHJpbnRDb25zdHJ1Y3RvckludGVyaW9yKTogVXBkYXRlZCBmb3IgRG9jdW1lbnQmIGlu
c3RlYWQgb2YgRG9jdW1lbnQqLgorICAgICAgICAocHJpbnRGdW5jdGlvblRhYmxlKTogUmVuYW1l
ZCBmcm9tIHByaW50RnVuY3Rpb25Jbml0cywgYmVjYXVzZSB0aGlzIG5vdworICAgICAgICBjcmVh
dGVzIHRhYmxlIGVudHJpZXMuIFRoZSBhY3R1YWwgY29kZSB0byBhZGQgZWFjaCBmdW5jdGlvbiBp
cyBub3cgZG9uZQorICAgICAgICBpbiBhIGxvb3AgaW5zdGVhZC4KKyAgICAgICAgKHByaW50TmFt
ZXNIZWFkZXJGaWxlKTogTWFkZSB0aGUgdGFibGUgY29uc3QuCisgICAgICAgIChwcmludE5hbWVz
Q3BwRmlsZSk6IE1hZGUgdGhlIHRhYmxlIGNvbnN0LgorICAgICAgICAocHJpbnREZWZpbml0aW9u
cyk6IEdlbmVyYXRlIGEgdGFibGUsIHRhYmxlIGVudHJpZXMsIGFuZCBhIGxvb3AgdGhhdCBjYWxs
cworICAgICAgICBjcmVhdGVRdWFsaWZpZWROYW1lLCByYXRoZXIgdGhhbiBhbiAidW5yb2xsZWQg
bG9vcCIuCisgICAgICAgIChwcmludEZhY3RvcnlDcHBGaWxlKTogVHdlYWtlZCBpbmRlbnRhdGlv
bi4gVXBkYXRlZCB0byB0YWtlIERvY3VtZW50JiBpbnN0ZWFkCisgICAgICAgIG9mIERvY3VtZW50
Ki4gR2VuZXJhdGUgYSB0YWJsZSwgdGFibGUgZW50cmllcywgYW5kIGEgbG9vcCB0aGF0IGJ1aWxk
cyBhIG1hcCwKKyAgICAgICAgcmF0aGVyIHRoYW4gYW4gInVucm9sbGVkIiBsb29wLgorICAgICAg
ICAocHJpbnRGYWN0b3J5SGVhZGVyRmlsZSk6IEVsaW1pbmF0ZWQgdGhlIHVudXNlZCBjcmVhdGVF
bGVtZW50IG1lbWJlciBmdW5jdGlvbgorICAgICAgICB0aGF0IHdhcyBwYXJ0IG9mIGEgZHJlYW0g
b2YgZmFjdG9yeSBvYmplY3RzIGluIGEgbmFtZXNwYWNlIHJlZ2lzdHJ5LCBnaXZpbmcKKyAgICAg
ICAgdGhlIG5hbWUgY3JlYXRlRWxlbWVudCB0byB0aGUgc3RhdGljIG1lbWJlciBmdW5jdGlvbiBz
byBpdCB3b3VsZCBiZSBsZXNzCisgICAgICAgIHJlZHVuZGFudC4gQWxzbyBtYWRlIHRoZSBmdW5j
dGlvbiB0YWtlcyBhIERvY3VtZW50JiBpbnN0ZWFkIG9mIERvY3VtZW50Ki4KKyAgICAgICAgQWxz
byBtYWRlIHRoZSBkZWZhdWx0ICJub3QgY3JlYXRlZCBieSBwYXJzZXIiLCBzaW5jZSB0aGUgcGFy
c2VyIGlzIHRoZSBzaW1wbGVyCisgICAgICAgIHVzZSBjYXNlLCBvdXRudW1iZXJlZCBieSB0aGUg
bm9uLXBhcnNlciB1c2VzLCBhdCBsZWFzdCBhdCB0aGUgbW9tZW50LiBBbHNvLAorICAgICAgICB1
c2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgIChwcmludFdyYXBwZXJGYWN0b3J5Q3Bw
RmlsZSk6IEdlbmVyYXRlIGEgdGFibGUsIHRhYmxlIGVudHJpZXMsIGFuZCBhIGxvb3AKKyAgICAg
ICAgdGhhdCBidWlsZHMgYSBtYXAgcmF0aGVyIHRoYW4gYW4gInVucm9sbGVkIiBsb29wLgorCisg
ICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVIVE1MRWxlbWVudCk6IFB1dCB0aGUgbnVsbCBjaGVjayBoZXJlIHRoYXQgdXNlZCB0byBiZSBp
bgorICAgICAgICBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQsIGFuZCBjYWxsIHdp
dGggYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhCisgICAgICAgIHBvaW50ZXIuIEFsc28gZG9uJ3Qg
bmVlZCB0byBwYXNzICIwLCBmYWxzZSIgc2luY2UgIm5vdCBjcmVhdGVkIGJ5IHRoZSBwYXJzZXIi
CisgICAgICAgIGlzIG5vdyB0aGUgZGVmYXVsdC4KKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOiBE
aXR0by4KKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cG9wdWxhdGVFdmVudE5hbWVGb3JBdHRyaWJ1dGVMb2NhbE5hbWVNYXApOiBDaGFuZ2VkIHRv
IHVzZSBhbgorICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBhcyB0aGUga2V5IGluc3RlYWQgb2Yg
QXRvbWljU3RyaW5nLCBzaW5jZSBhbGwgdGhlIHN0cmluZ3MKKyAgICAgICAgY29tZSBmcm9tIHRo
ZSBsb2NhbCBuYW1lcyBvZiB0YWdzLCBhbmQgc28gZG9uJ3QgbmVlZCB0byBiZSByZWYnZC4gVGhp
cyBzYXZlcworICAgICAgICBhIGJpdCBvZiByZWZlcmVuY2UgY291bnQgY2h1cm4gd2hlbiBidWls
ZGluZyB0aGUgbWFwIGFuZCBpcyB0aGUgc2FtZSBwYXR0ZXJuCisgICAgICAgIHVzZWQgaW4gc29t
ZSBtYXBzIGluIHRoZSBtYWtlX25hbWVzLnBsIHNjcmlwdCBhYm92ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IFVwZGF0ZWQgZm9yIGNoYW5nZSBhYm92
ZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNSZWNvZ25pemVkVGFnTmFtZSk6IE1vcmUgY29uc3QuCisKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnQpOiBDaGFuZ2VkIHRvIGNhbGwgdGhl
CisgICAgICAgIEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudCBmdW5jdGlvbiB1bmRl
ciBpdHMgbmV3IG5hbWUgd2l0aCBhIHJlZmVyZW5jZQorICAgICAgICByYXRoZXIgdGhhbiBhIHBv
aW50ZXIuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpuYW1lRm9ySW5kZXgpOiBNb3JlIGNvbnN0LgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKTogTW9yZSBjb25zdC4KKworICAgICAgICAqIGh0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1
ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUpOiBQYXNzIGEgcmVmZXJlbmNlIHRvCisgICAgICAg
IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRF
bGVtZW50OjpXZWJWVFRFbGVtZW50KTogVGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9p
bnRlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNyZWF0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJp
YnV0ZXNBbmRDaGlsZHJlbik6IFBhc3MgYQorICAgICAgICByZWZlcmVuY2UgaW5zdGVhZCBvZiBh
IHBvaW50ZXIgdG8gY3JlYXRlLgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y3Jl
YXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KTogVGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkCisgICAg
ICAgIG9mIGEgcG9pbnRlciwgYW5kIHVwZGF0ZSB1c2VzIG9mIEhUTUxFbGVtZW50RmFjdG9yeTo6
Y3JlYXRlRWxlbWVudC4gQWxzbyBtYWRlCisgICAgICAgIHRoaXMgcmV0dXJuIG51bGwgd2hlbiBh
IGJhZCBub2RlIHR5cGUgaXMgcGFzc2VkIGluLCB3aGljaCBzaG91bGQgbmV2ZXIgaGFwcGVuLgor
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6IFVzZSBEb2N1bWVudCYgaW5z
dGVhZCBvZiBEb2N1bWVudCouIFJlbW92ZWQgdW51c2VkCisgICAgICAgIGFuZCB1bmRlZmluZWQg
Y3JlYXRlL2NvbnN0cnVjdG9yIG92ZXJsb2Fkcy4KKworICAgICAgICAqIGh0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6Y29uc3RydWN0
VHJlZUZyb21Ub2tlbik6IFBhc3MgZG9jdWVtbnQgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAg
ICAgIHBvaW50ZXIgdG8gV2ViVlRURWxlbWVudDo6Y3JlYXRlLgorCiAyMDEzLTA5LTE1ICBBbmRy
ZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIHJlZi1j
b3VudGluZyBvbiBSZW5kZXJBcmVuYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IGNkMGFkMWIzNDc4YjBkZGNhOTJiNzFmY2JhMDY1ODA3YmE3Yzc0MzQuLjE2NzYxOTAzNDMxOGY3
MTc4Y2UxN2MyNDMyZDBjYjNmZjRiZWZkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNjg0LDYgKzY4NCw3IEBAIGFsbCA6IFwKICAgICBIVE1MRWxlbWVudEZhY3RvcnkuY3Bw
IFwKICAgICBIVE1MRW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMuY3BwIFwKKyAgICBK
U0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKICAgICBKU1NWR0VsZW1lbnRXcmFwcGVy
RmFjdG9yeS5jcHAgXAogICAgIFBsdWdJbnNSZXNvdXJjZXMuaCBcCiAgICAgU1ZHRWxlbWVudEZh
Y3RvcnkuY3BwIFwKQEAgLTkwMSwxOCArOTAyLDE2IEBAIGVuZGlmCiAKIGlmZGVmIEhUTUxfRkxB
R1MKIAotSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBIVE1MTmFtZXMuY3BwIDogZG9tL21ha2VfbmFt
ZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNT
dHJpbmcucG0gaHRtbC9IVE1MVGFnTmFtZXMuaW4gaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4K
K0hUTUxFbGVtZW50RmFjdG9yeS5jcHAgSFRNTE5hbWVzLmNwcCBKU0hUTUxFbGVtZW50V3JhcHBl
ckZhY3RvcnkuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIu
cG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gaHRtbC9IVE1MVGFnTmFtZXMuaW4g
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mv
c2NyaXB0cyAkPCAtLXRhZ3MgJChXZWJDb3JlKS9odG1sL0hUTUxUYWdOYW1lcy5pbiAtLWF0dHJz
ICQoV2ViQ29yZSkvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gLS1mYWN0b3J5IC0td3JhcHBl
ckZhY3RvcnkgLS1leHRyYURlZmluZXMgIiQoSFRNTF9GTEFHUykiCiAKIGVsc2UKIAotSFRNTEVs
ZW1lbnRGYWN0b3J5LmNwcCBIVE1MTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgYmluZGlu
Z3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gaHRt
bC9IVE1MVGFnTmFtZXMuaW4gaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KK0hUTUxFbGVtZW50
RmFjdG9yeS5jcHAgSFRNTE5hbWVzLmNwcCBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3Bw
IDogZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mv
c2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gaHRtbC9IVE1MVGFnTmFtZXMuaW4gaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAt
LXRhZ3MgJChXZWJDb3JlKS9odG1sL0hUTUxUYWdOYW1lcy5pbiAtLWF0dHJzICQoV2ViQ29yZSkv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gLS1mYWN0b3J5IC0td3JhcHBlckZhY3RvcnkKIAog
ZW5kaWYKIAotSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCA6IEhUTUxOYW1lcy5jcHAK
LQogWE1MTlNOYW1lcy5jcHAgOiBkb20vbWFrZV9uYW1lcy5wbCBiaW5kaW5ncy9zY3JpcHRzL0hh
c2hlci5wbSBiaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSB4bWwveG1sbnNhdHRycy5p
bgogCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tYXR0cnMgJChXZWJD
b3JlKS94bWwveG1sbnNhdHRycy5pbgogCkBAIC05MzUsMTcgKzkzNCwxNSBAQCBlbmRpZgogCiBp
ZmRlZiBTVkdfRkxBR1MKIAotU1ZHRWxlbWVudEZhY3RvcnkuY3BwIFNWR05hbWVzLmNwcCA6IGRv
bS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtIGJpbmRpbmdzL3Njcmlw
dHMvU3RhdGljU3RyaW5nLnBtIHN2Zy9zdmd0YWdzLmluIHN2Zy9zdmdhdHRycy5pbgorSlNTVkdF
bGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCBTVkdOYW1lcy5j
cHAgOiBkb20vbWFrZV9uYW1lcy5wbCBiaW5kaW5ncy9zY3JpcHRzL0hhc2hlci5wbSBiaW5kaW5n
cy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSBzdmcvc3ZndGFncy5pbiBzdmcvc3ZnYXR0cnMuaW4K
IAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLXRhZ3MgJChXZWJDb3Jl
KS9zdmcvc3ZndGFncy5pbiAtLWF0dHJzICQoV2ViQ29yZSkvc3ZnL3N2Z2F0dHJzLmluIC0tZXh0
cmFEZWZpbmVzICIkKFNWR19GTEFHUykiIC0tZmFjdG9yeSAtLXdyYXBwZXJGYWN0b3J5CiBlbHNl
CiAKLVNWR0VsZW1lbnRGYWN0b3J5LmNwcCBTVkdOYW1lcy5jcHAgOiBkb20vbWFrZV9uYW1lcy5w
bCBiaW5kaW5ncy9zY3JpcHRzL0hhc2hlci5wbSBiaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmlu
Zy5wbSBzdmcvc3ZndGFncy5pbiBzdmcvc3ZnYXR0cnMuaW4KK0pTU1ZHRWxlbWVudFdyYXBwZXJG
YWN0b3J5LmNwcCBTVkdFbGVtZW50RmFjdG9yeS5jcHAgU1ZHTmFtZXMuY3BwIDogZG9tL21ha2Vf
bmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0
aWNTdHJpbmcucG0gc3ZnL3N2Z3RhZ3MuaW4gc3ZnL3N2Z2F0dHJzLmluCiAJcGVybCAtSSAkKFdl
YkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvc3ZnL3N2Z3RhZ3Mu
aW4gLS1hdHRycyAkKFdlYkNvcmUpL3N2Zy9zdmdhdHRycy5pbiAtLWZhY3RvcnkgLS13cmFwcGVy
RmFjdG9yeQogCiBlbmRpZgogCi1KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgOiBTVkdO
YW1lcy5jcHAKLQogWExpbmtOYW1lcy5jcHAgOiBkb20vbWFrZV9uYW1lcy5wbCBiaW5kaW5ncy9z
Y3JpcHRzL0hhc2hlci5wbSBiaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSBzdmcveGxp
bmthdHRycy5pbgogCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tYXR0
cnMgJChXZWJDb3JlKS9zdmcveGxpbmthdHRycy5pbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCA2NWIxYjZlZTk1NWM3NTk1YWY2Njk3Y2JiYjAyM2UyZjBmMzhjYjgwLi43NjEzMzYyZGIy
ZDFjODczN2UzNjEzMzNkMTNhMmJhODUwNmUzYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTgyMCw3ICs4MjAsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVF
bGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQwogICAgIH0KIAogICAg
IGlmIChpc1hIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50RmFjdG9y
eTo6Y3JlYXRlSFRNTEVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgeGh0bWxO
YW1lc3BhY2VVUkkpLCB0aGlzLCAwLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBIVE1MRWxlbWVu
dEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgeGh0
bWxOYW1lc3BhY2VVUkkpLCAqdGhpcyk7CiAKICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChRdWFs
aWZpZWROYW1lKG51bGxBdG9tLCBuYW1lLCBudWxsQXRvbSksIGZhbHNlKTsKIH0KQEAgLTExMTIs
MzIgKzExMTIsMzIgQEAgYm9vbCBEb2N1bWVudDo6aGFzVmFsaWROYW1lc3BhY2VGb3JBdHRyaWJ1
dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQogICAgIHJldHVybiBoYXNWYWxpZE5hbWVz
cGFjZUZvckVsZW1lbnRzKHFOYW1lKTsKIH0KIAotLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxs
eSBiZSBpbiBhIHBvc3NpYmxlIEVsZW1lbnRGYWN0b3J5IGNsYXNzCi1QYXNzUmVmUHRyPEVsZW1l
bnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBi
b29sIGNyZWF0ZWRCeVBhcnNlcikKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgaW4g
YSBwb3NzaWJsZSBFbGVtZW50RmFjdG9yeSBjbGFzcy4KK1Bhc3NSZWZQdHI8RWxlbWVudD4gRG9j
dW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpCiB7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGU7CisgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQ7CiAKICAgICAvLyBGSVhNRTogVXNlIHJlZ2lzdGVyZWQgbmFtZXNwYWNlcyBh
bmQgbG9vayB1cCBpbiBhIGhhc2ggdG8gZmluZCB0aGUgcmlnaHQgZmFjdG9yeS4KLSAgICBpZiAo
cU5hbWUubmFtZXNwYWNlVVJJKCkgPT0geGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIGUgPSBI
VE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KHFOYW1lLCB0aGlzLCAwLCBjcmVh
dGVkQnlQYXJzZXIpOworICAgIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpID09IHhodG1sTmFtZXNw
YWNlVVJJKQorICAgICAgICBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVt
ZW50KG5hbWUsICp0aGlzLCBudWxscHRyLCBjcmVhdGVkQnlQYXJzZXIpOwogI2lmIEVOQUJMRShT
VkcpCi0gICAgZWxzZSBpZiAocU5hbWUubmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05h
bWVzcGFjZVVSSSkKLSAgICAgICAgZSA9IFNWR0VsZW1lbnRGYWN0b3J5OjpjcmVhdGVTVkdFbGVt
ZW50KHFOYW1lLCB0aGlzLCBjcmVhdGVkQnlQYXJzZXIpOworICAgIGVsc2UgaWYgKG5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKKyAgICAgICAgZWxlbWVu
dCA9IFNWR0VsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KG5hbWUsICp0aGlzLCBjcmVhdGVk
QnlQYXJzZXIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BVEhNTCkKLSAgICBlbHNlIGlmIChxTmFt
ZS5uYW1lc3BhY2VVUkkoKSA9PSBNYXRoTUxOYW1lczo6bWF0aG1sTmFtZXNwYWNlVVJJKQotICAg
ICAgICBlID0gTWF0aE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZU1hdGhNTEVsZW1lbnQocU5hbWUs
IHRoaXMsIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkko
KSA9PSBNYXRoTUxOYW1lczo6bWF0aG1sTmFtZXNwYWNlVVJJKQorICAgICAgICBlbGVtZW50ID0g
TWF0aE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQobmFtZSwgKnRoaXMsIGNyZWF0ZWRC
eVBhcnNlcik7CiAjZW5kaWYKIAotICAgIGlmIChlKQorICAgIGlmIChlbGVtZW50KQogICAgICAg
ICBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMgPSB0cnVlOwogICAgIGVsc2UKLSAgICAg
ICAgZSA9IEVsZW1lbnQ6OmNyZWF0ZShxTmFtZSwgJmRvY3VtZW50KCkpOworICAgICAgICBlbGVt
ZW50ID0gRWxlbWVudDo6Y3JlYXRlKG5hbWUsICZkb2N1bWVudCgpKTsKIAogICAgIC8vIDxpbWFn
ZT4gdXNlcyBpbWdUYWcgc28gd2UgbmVlZCBhIHNwZWNpYWwgcnVsZS4KLSAgICBBU1NFUlQoKHFO
YW1lLm1hdGNoZXMoaW1hZ2VUYWcpICYmIGUtPnRhZ1FOYW1lKCkubWF0Y2hlcyhpbWdUYWcpICYm
IGUtPnRhZ1FOYW1lKCkucHJlZml4KCkgPT0gcU5hbWUucHJlZml4KCkpIHx8IHFOYW1lID09IGUt
PnRhZ1FOYW1lKCkpOworICAgIEFTU0VSVCgobmFtZS5tYXRjaGVzKGltYWdlVGFnKSAmJiBlbGVt
ZW50LT50YWdRTmFtZSgpLm1hdGNoZXMoaW1nVGFnKSAmJiBlbGVtZW50LT50YWdRTmFtZSgpLnBy
ZWZpeCgpID09IG5hbWUucHJlZml4KCkpIHx8IG5hbWUgPT0gZWxlbWVudC0+dGFnUU5hbWUoKSk7
CiAKLSAgICByZXR1cm4gZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgp
OwogfQogCiBib29sIERvY3VtZW50OjpyZWdpb25CYXNlZENvbHVtbnNFbmFibGVkKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggYWMzMWU2ZjhkYmJmYTcxNjQ4MjZhMmJlYzlk
ODIzMTFlMGI0M2UzOS4uMmY1NzU2MjFhMDhhZTc2NTJmMzBlZTA3OTVmNTY0NTY4N2ZjZTIwMSAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTEyNyw3ICsxMjcsNyBAQCBpZiAobGVuZ3Ro
KCRmb250TmFtZXNJbikpIHsKICAgICBwcmludCBGIFN0YXRpY1N0cmluZzo6R2VuZXJhdGVTdHJp
bmdBc3NlcnRzKFwlcGFyYW1ldGVycyk7CiAKICAgICB3aGlsZSAoIG15ICgkbmFtZSwgJGlkZW50
aWZpZXIpID0gZWFjaCAlcGFyYW1ldGVycyApIHsKLSAgICAgICAgcHJpbnQgRiAiICAgIG5ldyAo
Tm90TnVsbCwgKHZvaWQqKSYkbmFtZSkgQXRvbWljU3RyaW5nKCR7bmFtZX1JbXBsKTtcbiI7Cisg
ICAgICAgIHByaW50IEYgIiAgICBuZXcgKE5vdE51bGwsIHN0YXRpY19jYXN0PHZvaWQqPigmJG5h
bWUpKSBBdG9taWNTdHJpbmcoJHtuYW1lfUltcGwpO1xuIjsKICAgICB9CiAKICAgICBwcmludCBG
ICJ9XG59XG59XG4iOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHN1YiBwcmludENvbnN0cnVjdG9yU2ln
bmF0dXJlCiB7CiAgICAgbXkgKCRGLCAkdGFnTmFtZSwgJGNvbnN0cnVjdG9yTmFtZSwgJGNvbnN0
cnVjdG9yVGFnTmFtZSkgPSBAXzsKIAotICAgIHByaW50IEYgInN0YXRpYyBQYXNzUmVmUHRyPCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAke2NvbnN0cnVjdG9yTmFtZX1Db25zdHJ1Y3Rv
cihjb25zdCBRdWFsaWZpZWROYW1lJiAkY29uc3RydWN0b3JUYWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQiOworICAgIHByaW50IEYgInN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1FbGVtZW50PiAke2NvbnN0cnVjdG9yTmFtZX1Db25zdHJ1Y3Rvcihjb25zdCBRdWFsaWZp
ZWROYW1lJiAkY29uc3RydWN0b3JUYWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQiOwogICAgIGlm
ICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewogICAgICAgICBwcmludCBGICIs
IEhUTUxGb3JtRWxlbWVudCoiOwogICAgICAgICBwcmludCBGICIgZm9ybUVsZW1lbnQiIGlmICRl
bmFibGVkVGFnc3skdGFnTmFtZX17Y29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50fTsKQEAgLTM5
OSw3ICszOTksNyBAQCBzdWIgcHJpbnRDb25zdHJ1Y3RvckludGVyaW9yCiAgICAgIyBIYW5kbGUg
bWVkaWEgZWxlbWVudHMuCiAgICAgaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9u
bHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKLSAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwogICAgIGlmICghTWVkaWFQbGF5ZXI6OmlzQXZh
aWxhYmxlKCkgfHwgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+bWVkaWFFbmFibGVkKCkpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICAKQEAgLTQyNyw3ICs0MjcsNyBAQCBFTkQKIAogICAgICMgQ2Fs
bCB0aGUgY29uc3RydWN0b3Igd2l0aCB0aGUgcmlnaHQgcGFyYW1ldGVycy4KICAgICBwcmludCBG
ICIgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSgkY29uc3RydWN0b3JUYWdOYW1l
IjsKLSAgICBwcmludCBGICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yVGFrZXNE
b2N1bWVudFJlZmVyZW5jZX0gPyAiLCAqZG9jdW1lbnQiIDogIiwgZG9jdW1lbnQiKTsKKyAgICBw
cmludCBGICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yVGFrZXNEb2N1bWVudFJl
ZmVyZW5jZX0gPyAiLCBkb2N1bWVudCIgOiAiLCAmZG9jdW1lbnQiKTsKICAgICBwcmludCBGICIs
IGZvcm1FbGVtZW50IiBpZiAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNG
b3JtRWxlbWVudH07CiAgICAgcHJpbnQgRiAiLCBjcmVhdGVkQnlQYXJzZXIiIGlmICRlbmFibGVk
VGFnc3skdGFnTmFtZX17Y29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcn07CiAgICAgcHJp
bnQgRiAiKTtcbn1cbiI7CkBAIC00NzksNyArNDc5LDcgQEAgc3ViIHByaW50Q29uc3RydWN0b3Jz
CiAgICAgfQogfQogCi1zdWIgcHJpbnRGdW5jdGlvbkluaXRzCitzdWIgcHJpbnRGdW5jdGlvblRh
YmxlCiB7CiAgICAgbXkgKCRGLCAkdGFnQ29uc3RydWN0b3JNYXApID0gQF87CiAgICAgbXkgJXRh
Z0NvbnN0cnVjdG9yTWFwID0gJSR0YWdDb25zdHJ1Y3Rvck1hcDsKQEAgLTQ5NCw5ICs0OTQsOSBA
QCBzdWIgcHJpbnRGdW5jdGlvbkluaXRzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGVuYWJs
ZWRUYWdzeyR0YWdOYW1lfXttYXBUb1RhZ05hbWV9KSB7Ci0gICAgICAgICAgICBwcmludCBGICIg
ICAgYWRkVGFnKCR7dGFnTmFtZX1UYWcsICRlbmFibGVkVGFnc3skdGFnTmFtZX17bWFwVG9UYWdO
YW1lfVRvJHt0YWdOYW1lfUNvbnN0cnVjdG9yKTtcbiI7CisgICAgICAgICAgICBwcmludCBGICIg
ICAgICAgIHsgJHt0YWdOYW1lfVRhZywgJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXttYXBUb1RhZ05h
bWV9VG8ke3RhZ05hbWV9Q29uc3RydWN0b3IgfSxcbiI7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBwcmludCBGICIgICAgYWRkVGFnKCR7dGFnTmFtZX1UYWcsICR0YWdDb25zdHJ1Y3Rv
ck1hcHskdGFnTmFtZX1Db25zdHJ1Y3Rvcik7XG4iOworICAgICAgICAgICAgcHJpbnQgRiAiICAg
ICAgICB7ICR7dGFnTmFtZX1UYWcsICR0YWdDb25zdHJ1Y3Rvck1hcHskdGFnTmFtZX1Db25zdHJ1
Y3RvciB9LFxuIjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKQEAg
LTY4OSwxMiArNjg5LDEyIEBAIHN1YiBwcmludE5hbWVzSGVhZGVyRmlsZQogCiAgICAgaWYgKGtl
eXMgJWFsbFRhZ3MpIHsKICAgICAgICAgcHJpbnQgRiAiY29uc3QgdW5zaWduZWQgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfVRhZ3NDb3VudCA9ICIsIHNjYWxhcihrZXlzICVhbGxUYWdzKSwgIjtcbiI7
Ci0gICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9VGFncygpO1xuIjsKKyAgICAgICAgcHJpbnQgRiAiY29uc3QgV2ViQ29yZTo6
UXVhbGlmaWVkTmFtZSogY29uc3QgKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncygpO1xu
IjsKICAgICB9CiAKICAgICBpZiAoa2V5cyAlYWxsQXR0cnMpIHsKICAgICAgICAgcHJpbnQgRiAi
Y29uc3QgdW5zaWduZWQgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzQ291bnQgPSAiLCBzY2Fs
YXIoa2V5cyAlYWxsQXR0cnMpLCAiO1xuIjsKLSAgICAgICAgcHJpbnQgRiAiV2ViQ29yZTo6UXVh
bGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycygpO1xuIjsKKyAgICAg
ICAgcHJpbnQgRiAiY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSogY29uc3QgKiBnZXQkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoKTtcbiI7CiAgICAgfQogCiAgICAgcHJpbnRJbml0KCRG
LCAxKTsKQEAgLTcyMiwxMCArNzIyLDEwIEBAIHN1YiBwcmludE5hbWVzQ3BwRmlsZQogICAgICAg
ICAgICAgcHJpbnQgRiAiREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCAiLCAkbmFtZSwgIlRh
ZylcbiI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHByaW50IEYgIlxuXG5XZWJDb3Jl
OjpRdWFsaWZpZWROYW1lKiogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3MoKVxuIjsKLSAg
ICAgICAgcHJpbnQgRiAie1xuICAgIHN0YXRpYyBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiAkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9VGFnc1tdID0ge1xuIjsKKyAgICAgICAgcHJpbnQgRiAiXG5cbmNv
bnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0ICogZ2V0JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVRhZ3MoKVxuIjsKKyAgICAgICAgcHJpbnQgRiAie1xuICAgIHN0YXRpYyBjb25zdCBXZWJD
b3JlOjpRdWFsaWZpZWROYW1lKiBjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnc1tdID0g
e1xuIjsKICAgICAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtleXMgJWFsbFRhZ3MpIHsKLSAgICAg
ICAgICAgIHByaW50IEYgIiAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqKSYke25hbWV9
VGFnLFxuIjsKKyAgICAgICAgICAgIHByaW50IEYgIiAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpRdWFsaWZpZWROYW1lKj4oJiR7bmFtZX1UYWcpLFxuIjsKICAgICAgICAgfQogICAg
ICAgICBwcmludCBGICIgICAgfTtcbiI7CiAgICAgICAgIHByaW50IEYgIiAgICByZXR1cm4gJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3M7XG4iOwpAQCAtNzM3LDEzICs3MzcsMTMgQEAgc3ViIHBy
aW50TmFtZXNDcHBGaWxlCiAgICAgICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICVhbGxBdHRy
cykgewogICAgICAgICAgICAgcHJpbnQgRiAiREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCAi
LCAkbmFtZSwgIkF0dHIpXG4iOwogICAgICAgICB9Ci0gICAgICAgIHByaW50IEYgIlxuXG5XZWJD
b3JlOjpRdWFsaWZpZWROYW1lKiogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzKClcbiI7
Ci0gICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSog
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJbXSA9IHtcbiI7CisgICAgICAgIHByaW50IEYgIlxu
XG5jb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiBjb25zdCAqIGdldCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1BdHRycygpXG4iOworICAgICAgICBwcmludCBGICJ7XG4gICAgc3RhdGljIGNvbnN0
IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRy
c1tdID0ge1xuIjsKICAgICAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtleXMgJWFsbEF0dHJzKSB7
Ci0gICAgICAgICAgICBwcmludCBGICIgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lKikm
JHtuYW1lfUF0dHIsXG4iOworICAgICAgICAgICAgcHJpbnQgRiAiICAgICAgICByZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqPigmJHtuYW1lfUF0dHIpLFxuIjsKICAgICAg
ICAgfQogICAgICAgICBwcmludCBGICIgICAgfTtcbiI7Ci0gICAgICAgIHByaW50IEYgIiAgICBy
ZXR1cm4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHI7XG4iOworICAgICAgICBwcmludCBGICIg
ICAgcmV0dXJuICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycztcbiI7CiAgICAgICAgIHByaW50
IEYgIn1cbiI7CiAgICAgfQogCkBAIC03NTIsNyArNzUyLDcgQEAgc3ViIHByaW50TmFtZXNDcHBG
aWxlCiAgICAgcHJpbnQoRiAiICAgIEF0b21pY1N0cmluZyAke2xvd2VyTmFtZXNwYWNlfU5TKFwi
JHBhcmFtZXRlcnN7bmFtZXNwYWNlVVJJfVwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTtcblxuIik7CiAKICAgICBwcmludChGICIgICAgLy8gTmFtZXNwYWNlXG4iKTsKLSAg
ICBwcmludChGICIgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJiR7bG93ZXJOYW1lc3BhY2V9TmFt
ZXNwYWNlVVJJKSBBdG9taWNTdHJpbmcoJHtsb3dlck5hbWVzcGFjZX1OUyk7XG4iKTsKKyAgICBw
cmludChGICIgICAgbmV3IChOb3ROdWxsLCBzdGF0aWNfY2FzdDx2b2lkKj4oJiR7bG93ZXJOYW1l
c3BhY2V9TmFtZXNwYWNlVVJJKSkgQXRvbWljU3RyaW5nKCR7bG93ZXJOYW1lc3BhY2V9TlMpO1xu
Iik7CiAgICAgcHJpbnQoRiAiXG4iKTsKICAgICBwcmludCBGIFN0YXRpY1N0cmluZzo6R2VuZXJh
dGVTdHJpbmdBc3NlcnRzKFwlYWxsU3RyaW5ncyk7CiAKQEAgLTg0OCwyMCArODQ4LDM0IEBAIHN1
YiBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzCiBzdWIgcHJpbnREZWZpbml0aW9ucwog
ewogICAgIG15ICgkRiwgJG5hbWVzUmVmLCAkdHlwZSwgJG5hbWVzcGFjZVVSSSkgPSBAXzsKLSAg
ICBteSAkc2luZ3VsYXJUeXBlID0gc3Vic3RyKCR0eXBlLCAwLCAtMSk7Ci0gICAgbXkgJHNob3J0
VHlwZSA9IHN1YnN0cigkc2luZ3VsYXJUeXBlLCAwLCA0KTsKLSAgICBteSAkc2hvcnRDYW1lbFR5
cGUgPSB1Y2ZpcnN0KCRzaG9ydFR5cGUpOwotICAgIG15ICRzaG9ydFVwcGVyVHlwZSA9IHVjKCRz
aG9ydFR5cGUpOworCisgICAgbXkgJHNob3J0Q2FtZWxUeXBlID0gdWNmaXJzdChzdWJzdHIoc3Vi
c3RyKCR0eXBlLCAwLCAtMSksIDAsIDQpKTsKKyAgICBteSAkY2FwaXRhbGl6ZWRUeXBlID0gdWNm
aXJzdCgkdHlwZSk7CiAgICAgCi0gICAgcHJpbnQgRiAiICAgIC8vICIgLiB1Y2ZpcnN0KCR0eXBl
KSAuICJcbiI7CitwcmludCBGIDw8RU5ECiAKKyAgICBzdHJ1Y3QgJHtjYXBpdGFsaXplZFR5cGV9
VGFibGVFbnRyeSB7CisgICAgICAgIHZvaWQqIHRhcmdldEFkZHJlc3M7CisgICAgICAgIFN0cmlu
Z0ltcGwmIG5hbWU7CisgICAgfTsKKworICAgIGNvbnN0ICR7Y2FwaXRhbGl6ZWRUeXBlfVRhYmxl
RW50cnkgJHt0eXBlfVRhYmxlW10gPSB7CitFTkQKKzsKICAgICBmb3IgbXkgJG5hbWUgKHNvcnQg
a2V5cyAlJG5hbWVzUmVmKSB7Ci0gICAgICAgICMgVG8gZ2VuZXJhdGUgbGVzcyBjb2RlIGluIGlu
aXQoKSwgdGhlIGNvbW1vbiBjYXNlIG9mIG51bGxBdG9tIGZvciB0aGUgbmFtZXNwYWNlLCB3ZSBj
YWxsIGNyZWF0ZVF1YWxpZmllZE5hbWUoKSB3aXRob3V0IHBhc3NpbmcgJG5hbWVzcGFjZVVSSS4K
LSAgICAgICAgaWYgKCRuYW1lc3BhY2VVUkkgZXEgIm51bGxBdG9tIikgewotICAgICAgICAgICAg
cHJpbnQgRiAiICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoKHZvaWQqKSYkbmFtZSIsIiR7c2hvcnRD
YW1lbFR5cGV9LCAke25hbWV9SW1wbCk7XG4iOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcHJpbnQgRiAiICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoKHZvaWQqKSYkbmFtZSIsIiR7c2hv
cnRDYW1lbFR5cGV9LCAke25hbWV9SW1wbCwgJG5hbWVzcGFjZVVSSSk7XG4iOwotICAgICAgICB9
CisgICAgICAgIHByaW50IEYgIiAgICAgICAgeyAmJG5hbWUkc2hvcnRDYW1lbFR5cGUsICoke25h
bWV9SW1wbCB9LFxuIjsKKyAgICB9CisKK3ByaW50IEYgPDxFTkQKKyAgICB9OworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoJHt0eXBlfVRhYmxlKTsgKytp
KQorRU5ECis7CisgICAgaWYgKCRuYW1lc3BhY2VVUkkgZXEgIm51bGxBdG9tIikgeworICAgICAg
ICBwcmludCBGICIgICAgICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoJHt0eXBlfVRhYmxlW2ldLnRh
cmdldEFkZHJlc3MsICYke3R5cGV9VGFibGVbaV0ubmFtZSk7XG4iOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHByaW50IEYgIiAgICAgICAgY3JlYXRlUXVhbGlmaWVkTmFtZSgke3R5cGV9VGFibGVb
aV0udGFyZ2V0QWRkcmVzcywgJiR7dHlwZX1UYWJsZVtpXS5uYW1lLCAkbmFtZXNwYWNlVVJJKTtc
biI7CiAgICAgfQogfQogCkBAIC04NzMsMTEzICs4ODcsOTkgQEAgc3ViIHByaW50RmFjdG9yeUNw
cEZpbGUKICAgICBteSAkRjsKICAgICBvcGVuIEYsICI+JGNwcFBhdGgiOwogCi1wcmludExpY2Vu
c2VIZWFkZXIoJEYpOworICAgIG15ICRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVjbGFyYXRpb24g
PSAiIjsKKyAgICBteSAkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRlZmluaXRpb24gPSAiIjsKKyAg
ICAkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRlY2xhcmF0aW9uID0gIiwgSFRNTEZvcm1FbGVtZW50
KiIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CisgICAgJGZvcm1FbGVtZW50
QXJndW1lbnRGb3JEZWZpbml0aW9uID0gIiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCIg
aWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CiAKLXByaW50IEYgPDxFTkQKKyAg
ICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOworCisgICAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogRU5ECi07CisgICAgOwogCi1wcmludCBGICJcbiNpZiAkcGFyYW1ldGVyc3tn
dWFyZEZhY3RvcnlXaXRofVxuXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9Owor
ICAgIHByaW50IEYgIlxuI2lmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9XG5cbiIgaWYg
JHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKLXByaW50IEYgPDxFTkQKKyAgICBwcmlu
dCBGIDw8RU5ECiAjaW5jbHVkZSAiJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5
LmgiCi0jaW5jbHVkZSAiJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzLmgiCi1FTkQKLTsKIAot
cHJpbnRFbGVtZW50SW5jbHVkZXMoJEYpOworI2luY2x1ZGUgIiRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1OYW1lcy5oIgogCi1wcmludCBGICJcbiNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPlxuIjsKK0VO
RAorICAgIDsKIAotcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcygkRiwgMCk7CisgICAg
cHJpbnRFbGVtZW50SW5jbHVkZXMoJEYpOworICAgIHByaW50Q29uZGl0aW9uYWxFbGVtZW50SW5j
bHVkZXMoJEYsIDApOwogCi1wcmludCBGIDw8RU5ECisgICAgcHJpbnQgRiA8PEVORAogCiAjaW5j
bHVkZSAiQ29udGV4dEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAj
aWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKICNpbmNsdWRlICJDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczsK
IAotRU5ECi07Ci0KLXByaW50IEYgInR5cGVkZWYgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudD4gKCpDb25zdHJ1Y3RvckZ1bmN0aW9uKShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqIjsKLXByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiIgaWYgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7Ci1wcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTtcbiI7Ci1wcmludCBGIDw8RU5ECi10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IENvbnN0cnVjdG9yRnVuY3Rpb24+IEZ1bmN0aW9uTWFwOwotCi1zdGF0aWMgRnVuY3Rpb25NYXAq
IGdGdW5jdGlvbk1hcCA9IDA7Cit0eXBlZGVmIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+ICgqJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24p
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRl
Y2xhcmF0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKIEVORAotOwotCi1teSAldGFnQ29u
c3RydWN0b3JNYXAgPSBidWlsZENvbnN0cnVjdG9yTWFwKCk7CisgICAgOwogCi1wcmludENvbnN0
cnVjdG9ycygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7CisgICAgbXkgJXRhZ0NvbnN0cnVjdG9y
TWFwID0gYnVpbGRDb25zdHJ1Y3Rvck1hcCgpOwogCi1wcmludCBGIDw8RU5ECi1zdGF0aWMgdm9p
ZCBhZGRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnLCBDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1
bmMpCi17Ci0gICAgZ0Z1bmN0aW9uTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgZnVu
Yyk7Ci19CisgICAgcHJpbnRDb25zdHJ1Y3RvcnMoJEYsIFwldGFnQ29uc3RydWN0b3JNYXApOwog
Ci1zdGF0aWMgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcCgpCisgICAgcHJpbnQgRiA8PEVORAorc3Rh
dGljIHZvaWQgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5j
dGlvbj4mIG1hcCkKIHsKLSAgICBBU1NFUlQoIWdGdW5jdGlvbk1hcCk7CisgICAgc3RydWN0IFRh
YmxlRW50cnkgeworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lOworICAgICAgICAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbiBmdW5jdGlvbjsKKyAgICB9
OwogCi0gICAgLy8gQ3JlYXRlIHRoZSB0YWJsZS4KLSAgICBnRnVuY3Rpb25NYXAgPSBuZXcgRnVu
Y3Rpb25NYXA7Ci0gICAgCi0gICAgLy8gUG9wdWxhdGUgaXQgd2l0aCBjb25zdHJ1Y3RvciBmdW5j
dGlvbnMuCisgICAgY29uc3QgVGFibGVFbnRyeSB0YWJsZVtdID0gewogRU5ECi07Ci0KLXByaW50
RnVuY3Rpb25Jbml0cygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7Ci0KLXByaW50IEYgIn1cbiI7
CisgICAgOwogCisgICAgcHJpbnRGdW5jdGlvblRhYmxlKCRGLCBcJXRhZ0NvbnN0cnVjdG9yTWFw
KTsKIAotcHJpbnQgRiAiXG5QYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZSRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQiOwotcHJpbnQgRiAiLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50IiBpZiAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKLXByaW50IEYgIiwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpXG57XG4iOworICAgIHByaW50IEYgPDxFTkQKKyAgICB9OwogCi1wcmludCBGIDw8
RU5ECi0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpCisgICAgICAgIG1h
cC5hZGQodGFibGVbaV0ubmFtZS5sb2NhbE5hbWUoKS5pbXBsKCksIHRhYmxlW2ldLmZ1bmN0aW9u
KTsKK30KIAorUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9y
RGVmaW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCit7CiBFTkQKLTsKKyAgICA7CiAKLWlm
ICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IG5lICJIVE1MIiBhbmQgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfSBuZSAiU1ZHIikgewotcHJpbnQgRiA8PEVORAorICAgIGlmICgkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9IG5lICJIVE1MIiBhbmQgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBuZSAiU1ZHIikgewor
ICAgICAgICBwcmludCBGIDw8RU5ECiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAg
IFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygpOworICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGRvY3VtZW50LnNldHRpbmdzKCk7CiAgICAgaWYgKHNldHRpbmdzICYmIHNl
dHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQogICAgICAg
ICByZXR1cm4gMDsKICNlbmRpZgogRU5ECi07Ci0KLX0KKyAgICAgICAgOworICAgIH0KIAotcHJp
bnQgRiA8PEVORAorICAgIHByaW50IEYgPDxFTkQKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQotICAgIGlmIChkb2N1bWVudC0+cmVnaXN0cnkoKSkgewotICAgICAgICBpZiAoUmVmUHRyPEN1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBkb2N1bWVudC0+cmVnaXN0cnko
KS0+ZmluZChudWxsUU5hbWUoKSwgcU5hbWUpKSB7CisgICAgaWYgKGRvY3VtZW50LnJlZ2lzdHJ5
KCkpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0
cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0cnkoKS0+ZmluZChudWxsUU5hbWUoKSwgbmFtZSkpIHsK
ICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY29uc3RydWN0b3ItPmNyZWF0
ZUVsZW1lbnQoKTsKICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5pcyRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nh
c3Q8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+KGVsZW1lbnQucmVsZWFzZSgpKTsKQEAg
LTk4NywyNCArOTg3LDMxIEBAIHByaW50IEYgPDxFTkQKICAgICB9CiAjZW5kaWYKIAotICAgIGlm
ICghZ0Z1bmN0aW9uTWFwKQotICAgICAgICBjcmVhdGVGdW5jdGlvbk1hcCgpOwotICAgIGlmIChD
b25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUubG9j
YWxOYW1lKCkuaW1wbCgpKSkgeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlv
bj4+IGZ1bmN0aW9uczsKKyAgICBpZiAoZnVuY3Rpb25zLmdldCgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChmdW5jdGlvbnMuZ2V0
KCkpOworICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbiBm
dW5jdGlvbiA9IGZ1bmN0aW9ucy5nZXQoKS5nZXQobmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpKSB7
CiBFTkQKLTsKKyAgICA7CiAKICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRN
TCIpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUGFzc1JlZlB0cjwkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9uKHFOYW1lLCBkb2N1bWVudCwg
Zm9ybUVsZW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpXG4iOwotICAgICAgICBwcmludCBGICIgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDtcbiI7CisgICAgICAgIHByaW50IEYgIiAgICAgICAgaWYg
KFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9u
KG5hbWUsIGRvY3VtZW50LCBmb3JtRWxlbWVudCwgY3JlYXRlZEJ5UGFyc2VyKSlcbiI7CisgICAg
ICAgIHByaW50IEYgIiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTtcbiI7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUGFzc1JlZlB0cjwkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9uKHFOYW1lLCBkb2N1
bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSlcbiI7Ci0gICAgICAgIHByaW50IEYgIiAgICAgICAgICAg
IHJldHVybiBlbGVtZW50O1xuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUmVmUHRy
PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50ID0gZnVuY3Rpb24obmFtZSwg
ZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpXG4iOworICAgICAgICBwcmludCBGICIgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7XG4iOwogICAgIH0KKwogICAgIHByaW50IEYg
IiAgIH1cbiI7Ci0gICAgcHJpbnQgRiAiICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50
ZXJmYWNlTmFtZX06OmNyZWF0ZShxTmFtZSwgIiAuICgkcGFyYW1ldGVyc3tjb25zdHJ1Y3RvclRh
a2VzRG9jdW1lbnRSZWZlcmVuY2V9ID8gIipkb2N1bWVudCIgOiAiZG9jdW1lbnQiKSAuICIpO1xu
IjsKKyAgICBwcmludCBGICIgICByZXR1cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VO
YW1lfTo6Y3JlYXRlKG5hbWUsICIgLiAoJHBhcmFtZXRlcnN7Y29uc3RydWN0b3JUYWtlc0RvY3Vt
ZW50UmVmZXJlbmNlfSA/ICIiIDogIiYiKSAuICJkb2N1bWVudCk7XG4iOwogCi0gICAgcHJpbnQg
RiAifVxuXG4iOwotICAgIHByaW50IEYgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcblxuIjsKKyAg
ICBwcmludCBGIDw8RU5ECit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworRU5ECisgICAg
OwogCiAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdp
dGh9OwogCkBAIC0xMDI0LDMzICsxMDMxLDIzIEBAIHN1YiBwcmludEZhY3RvcnlIZWFkZXJGaWxl
CiAjZGVmaW5lICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9oCiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVtZW50OworCiAgICAgY2xhc3MgRG9jdW1lbnQ7
CisgICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50OwotRU5ECi07CiAKLXByaW50IEYgIiAgICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50
O1xuIiBpZiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKLQotcHJpbnQgRjw8RU5E
Ci0gICAgLy8gVGhlIGlkZWEgYmVoaW5kIHRoaXMgY2xhc3MgaXMgdGhhdCB0aGVyZSB3aWxsIGV2
ZW50dWFsbHkgYmUgYSBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIFVSSXMgdG8gRWxlbWVudEZhY3Rv
cmllcyB0aGF0IGNhbiBkaXNwZW5zZQotICAgIC8vIGVsZW1lbnRzLiBJbiBhIGNvbXBvdW5kIGRv
Y3VtZW50IHdvcmxkLCB0aGUgZ2VuZXJpYyBjcmVhdGVFbGVtZW50IGZ1bmN0aW9uICh3aWxsIGVu
ZCB1cCBiZWluZyB2aXJ0dWFsKSB3aWxsIGJlIGNhbGxlZC4KICAgICBjbGFzcyAkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudEZhY3RvcnkgewogICAgIHB1YmxpYzoKLSAgICAgICAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUm
LCBXZWJDb3JlOjpEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gdHJ1ZSk7CiBFTkQK
IDsKLXByaW50IEYgIiAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+IGNyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KGNvbnN0IFdl
YkNvcmU6OlF1YWxpZmllZE5hbWUmLCBXZWJDb3JlOjpEb2N1bWVudCoiOwotcHJpbnQgRiAiLCBI
VE1MRm9ybUVsZW1lbnQqID0gMCIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7
Ci1wcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gdHJ1ZSk7XG4iOworCitwcmludCBG
ICIgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOworcHJpbnQg
RiAiLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fSBlcSAiSFRNTCI7CitwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xu
IjsKIAogcHJpbnRmIEY8PEVORAogICAgIH07CkBAIC0xMTYwLDQ3ICsxMTU3LDM1IEBAIHN1YiBw
cmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZQogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAK
ICAgICBwcmludCBGICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcbiI7Ci0gICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCJKUyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnkuaFwi
XG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudFdyYXBwZXJGYWN0b3J5LmhcIlxuXG4iOwogCiAgICAgcHJpbnQgRiAiXG4jaWYgJHBhcmFt
ZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlX
aXRofTsKIAogICAgIHByaW50SlNFbGVtZW50SW5jbHVkZXMoJEYpOwotCi0gICAgcHJpbnQgRiAi
XG4jaW5jbHVkZSBcIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lcy5oXCJcblxuIjsKLQogICAg
IHByaW50RWxlbWVudEluY2x1ZGVzKCRGKTsKIAotICAgIHByaW50IEYgIlxuI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD5cbiI7Ci0KLSAgICBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1
ZGVzKCRGLCAxKTsKLQorICAgIHByaW50IEYgIlxuI2luY2x1ZGUgXCIkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9TmFtZXMuaFwiXG4iOwogICAgIHByaW50IEYgPDxFTkQKIAogI2luY2x1ZGUgIkNvbnRl
eHRGZWF0dXJlcy5oIgotI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKLQotI2lm
IEVOQUJMRShWSURFTykKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2VuZGlmCi0KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiBFTkQKIDsKIAotICAgIHByaW50IEYgPDxFTkQKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci1FTkQK
LTsKKyAgICBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzKCRGLCAxKTsKIAogICAgIHBy
aW50IEYgPDxFTkQKIAordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOwogCi1FTkQK
LTsKLXByaW50IEYgPDxFTkQKIHR5cGVkZWYgSlNET01XcmFwcGVyKiAoKkNyZWF0ZSRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+KTsK
IAogRU5ECkBAIC0xMjA5LDExICsxMTk0LDE1IEBAIEVORAogICAgIHByaW50V3JhcHBlckZ1bmN0
aW9ucygkRik7CiAKIHByaW50IEYgPDxFTkQKLUpTRE9NV3JhcHBlciogY3JlYXRlSlMkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+
IGVsZW1lbnQpCisKK3N0YXRpYyB2b2lkIHBvcHVsYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdy
YXBwZXJNYXAoSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ3JlYXRlJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+JiBtYXApCiB7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFdURjo6QXRvbWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50V3JhcHBlckZ1bmN0aW9uPiBGdW5jdGlvbk1hcDsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEZ1bmN0aW9uTWFwLCBtYXAsICgpKTsKLSAgICBpZiAobWFwLmlzRW1wdHkoKSkgeworICAg
IHN0cnVjdCBUYWJsZUVudHJ5IHsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZTsK
KyAgICAgICAgQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rp
b24gZnVuY3Rpb247CisgICAgfTsKKworICAgIGNvbnN0IFRhYmxlRW50cnkgdGFibGVbXSA9IHsK
IEVORAogOwogCkBAIC0xMjI4LDkgKzEyMTcsMTAgQEAgRU5ECiAgICAgICAgIH0KIAogICAgICAg
ICBteSAkdWNUYWcgPSAkZW5hYmxlZFRhZ3N7JHRhZ317SlNJbnRlcmZhY2VOYW1lfTsKKwogICAg
ICAgICAjIEZJWE1FIFJlbW92ZSB1bm5lY2Vzc2FyeSAnJicgZnJvbSB0aGUgZm9sbG93aW5nIChw
cmludCkgbGluZSBvbmNlIHdlIHN3aXRjaCB0byBhIG5vbi1icm9rZW4gVmlzdWFsIFN0dWRpbyBj
b21waWxlci4KICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIxMjM1OgotICAgICAgICBwcmludCBGICIgICAgICAgbWFwLnNldCgke3RhZ31UYWcubG9j
YWxOYW1lKCkuaW1wbCgpLCAmY3JlYXRlJHt1Y1RhZ31XcmFwcGVyKTtcbiI7CisgICAgICAgIHBy
aW50IEYgIiAgICAgICAgeyAke3RhZ31UYWcsICZjcmVhdGUke3VjVGFnfVdyYXBwZXIgfSxcbiI7
CiAKICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgcHJpbnQgRiAiI2Vu
ZGlmXG4iOwpAQCAtMTIzOCwyNyArMTIyOCwyNyBAQCBFTkQKICAgICB9CiAKICAgICBwcmludCBG
IDw8RU5ECi0gICAgfQotRU5ECi07CisgICAgfTsKIAotICAgIHByaW50IEYgPDxFTkQKLSAgICBD
cmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVX
cmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0g
ICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKLUVORAotOwotICAgIHByaW50IEYgPDxFTkQK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3Qs
IGVsZW1lbnQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHRhYmxlKTsgKytpKQorICAgICAgICBtYXAuYWRkKHRhYmxlW2ldLm5hbWUubG9jYWxOYW1lKCku
aW1wbCgpLCB0YWJsZVtpXS5mdW5jdGlvbik7Cit9CisKK0pTRE9NV3JhcHBlciogY3JlYXRlSlMk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBl
ckZ1bmN0aW9uPj4gZnVuY3Rpb25zOworICAgIGlmIChmdW5jdGlvbnMuZ2V0KCkuaXNFbXB0eSgp
KQorICAgICAgICBwb3B1bGF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyTWFwKGZ1bmN0
aW9ucy5nZXQoKSk7CisgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBmdW5jdGlvbnMuZ2V0KCkuZ2V0
KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSkpCisgICAgICAgIHJldHVybiBmdW5jdGlvbihl
eGVjLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQpOwogICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAkcGFyYW1ldGVyc3tmYWxsYmFja0pTSW50ZXJmYWNlTmFt
ZX0sIGVsZW1lbnQuZ2V0KCkpOwotRU5ECi07Ci0gICAgcHJpbnQgRiA8PEVORAorfQorCiB9CiBF
TkQKIDsKIAotICAgIHByaW50IEYgIn1cblxuIjsKLSAgICBwcmludCBGICIjZW5kaWZcbiIgaWYg
JHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CisgICAgcHJpbnQgRiAiXG4jZW5kaWZcbiIg
aWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKICAgICBjbG9zZSBGOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA4MzZmOWM2NzI2ZWFiOTZiODUy
YTJlZTJiZjcxMzcwOTY1YTEzYTFlLi5kZGFmMjQ0MTk3N2IxZmViM2U5MDYyOGJiNWQwNTY2YTA4
ZDRiODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtOTM5LDcg
KzkzOSw5IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsK
LSAgICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChuYW1lLCBk
b2N1bWVudCwgMCwgZmFsc2UpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQobmFt
ZSwgKmRvY3VtZW50KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlSFRNTEVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggZThlOWU5Y2JhZTI5MmRjNzk1M2U4
NjFmN2M4OTkzN2UyNmQ3NDIzYS4uY2Q1MzE5MGVmMTNjMmJiZmI3MmUwZTJmOGQ2YTUzYmQ2ZDI0
YmMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMjkzLDcgKzI5Myw3
IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNU
RVJfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50
RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZS5s
b3dlcigpLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRoaXMsIDAsIGZhbHNlKTsKKyAgICByZXR1cm4g
SFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IG5hbWUubG93ZXIoKSwgeGh0bWxOYW1lc3BhY2VVUkkpLCAqdGhpcyk7CiB9CiAKIHN0YXRpYyB2
b2lkIGFkZExvY2FsTmFtZVRvU2V0KEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZXQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApp
bmRleCBlNzcwNmVkNzE0NjIxYTEyNTVlYmM2NjcyYWVmZTM1NjNiZmI0OTBlLi5mZTg2NTNiMjEz
MTBhY2E0NmNlZDUxM2Q1YTY2Njk3MGVjZjI0MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lCiAgICAg
ICAgIFN0eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1zdGF0aWMgdm9pZCBwb3B1bGF0ZUV2ZW50TmFtZUZv
ckF0dHJpYnV0ZUxvY2FsTmFtZU1hcChIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5n
PiYgbWFwKQorc3RhdGljIHZvaWQgcG9wdWxhdGVFdmVudE5hbWVGb3JBdHRyaWJ1dGVMb2NhbE5h
bWVNYXAoSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPiYgbWFwKQogewog
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0IHNpbXBsZVRhYmxlW10gPSB7CiAgICAgICAg
ICZvbmFib3J0QXR0ciwKQEAgLTI5NywyNCArMjk3LDI0IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRl
RXZlbnROYW1lRm9yQXR0cmlidXRlTG9jYWxOYW1lTWFwKEhhc2hNYXA8QXRvbWljU3RyaW5nLCBB
dG9tCiAgICAgICAgIC8vIGJ5IG5vdCB1c2luZyBwb2ludGVycyBmcm9tIGV2ZW50TmFtZXMoKSwg
c2ltcGxlVGFibGUgY2FuIGJlIGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS4KICAgICAgICAg
QXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IGF0dHJpYnV0ZU5hbWUuc3RyaW5nKCkuc3Vic3RyaW5n
KDIpOwogCi0gICAgICAgIG1hcC5hZGQoYXR0cmlidXRlTmFtZSwgZXZlbnROYW1lKTsKKyAgICAg
ICAgbWFwLmFkZChhdHRyaWJ1dGVOYW1lLmltcGwoKSwgZXZlbnROYW1lKTsKICAgICB9CiAKICAg
ICBzdHJ1Y3QgQ3VzdG9tTWFwcGluZyB7Ci0gICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0
dHJpYnV0ZU5hbWU7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyogZXZlbnROYW1lOworICAg
ICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lOworICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZTsKICAgICB9OwogCiAgICAgY29uc3QgQ3VzdG9tTWFwcGlu
ZyBjdXN0b21UYWJsZVtdID0gewotICAgICAgICB7ICZvbnRyYW5zaXRpb25lbmRBdHRyLCAmZXZl
bnROYW1lcygpLndlYmtpdFRyYW5zaXRpb25FbmRFdmVudCB9LAotICAgICAgICB7ICZvbndlYmtp
dGFuaW1hdGlvbmVuZEF0dHIsICZldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uRW5kRXZlbnQg
fSwKLSAgICAgICAgeyAmb253ZWJraXRhbmltYXRpb25pdGVyYXRpb25BdHRyLCAmZXZlbnROYW1l
cygpLndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50IH0sCi0gICAgICAgIHsgJm9ud2Via2l0
YW5pbWF0aW9uc3RhcnRBdHRyLCAmZXZlbnROYW1lcygpLndlYmtpdEFuaW1hdGlvblN0YXJ0RXZl
bnQgfSwKLSAgICAgICAgeyAmb253ZWJraXR0cmFuc2l0aW9uZW5kQXR0ciwgJmV2ZW50TmFtZXMo
KS53ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQgfSwKKyAgICAgICAgeyBvbnRyYW5zaXRpb25lbmRB
dHRyLCBldmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50IH0sCisgICAgICAgIHsg
b253ZWJraXRhbmltYXRpb25lbmRBdHRyLCBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uRW5k
RXZlbnQgfSwKKyAgICAgICAgeyBvbndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbkF0dHIsIGV2ZW50
TmFtZXMoKS53ZWJraXRBbmltYXRpb25JdGVyYXRpb25FdmVudCB9LAorICAgICAgICB7IG9ud2Vi
a2l0YW5pbWF0aW9uc3RhcnRBdHRyLCBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uU3RhcnRF
dmVudCB9LAorICAgICAgICB7IG9ud2Via2l0dHJhbnNpdGlvbmVuZEF0dHIsIGV2ZW50TmFtZXMo
KS53ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQgfSwKICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCwgc2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgoY3VzdG9tVGFibGUpOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICBtYXAuYWRkKGN1c3RvbVRhYmxlW2ldLmF0dHJpYnV0ZU5hbWUtPmxvY2Fs
TmFtZSgpLCAqY3VzdG9tVGFibGVbaV0uZXZlbnROYW1lKTsKKyAgICAgICAgbWFwLmFkZChjdXN0
b21UYWJsZVtpXS5hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSwgY3VzdG9tVGFibGVb
aV0uZXZlbnROYW1lKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTMz
NCwxMSArMzM0LDExIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkgewogICAgICAgICAvLyBGSVhN
RTogQ2FuIHdlIGRvIHRoaXMgZXZlbiBmYXN0ZXIgYnkgY2hlY2tpbmcgdGhlIGxvY2FsIG5hbWUg
Im9uIiBwcmVmaXggYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggdGhlIG1hcD8KLSAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNTdHJpbmc+
PiBldmVudE5hbWVzR2xvYmFsOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPj4gZXZlbnROYW1lc0dsb2JhbDsKICAg
ICAgICAgYXV0byYgZXZlbnROYW1lcyA9IGV2ZW50TmFtZXNHbG9iYWwuZ2V0KCk7CiAgICAgICAg
IGlmIChldmVudE5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBvcHVsYXRlRXZlbnROYW1l
Rm9yQXR0cmlidXRlTG9jYWxOYW1lTWFwKGV2ZW50TmFtZXMpOwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMuZ2V0KG5hbWUubG9jYWxOYW1lKCkpOwor
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMuZ2V0KG5h
bWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgaWYgKCFldmVudE5hbWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZTNkMTVhM2EzODYxZWM0
ZTBkNGQ2ZGFkZjZhYTY3YTk0NjA5MDFhNy4uYTcyYmYxYmMyYWE4OTE3ZTQyZTczM2I2NWU4YThj
NGEwNjY0ZjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAK
QEAgLTM4Niw3ICszODYsNyBAQCBzdGF0aWMgYm9vbCBpc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiwgdGFnTGlzdCwgKCkpOwogICAgIGlmICh0YWdMaXN0Lmlz
RW1wdHkoKSkgewotICAgICAgICBRdWFsaWZpZWROYW1lKiogdGFncyA9IEhUTUxOYW1lczo6Z2V0
SFRNTFRhZ3MoKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgKiB0YWdzID0g
SFRNTE5hbWVzOjpnZXRIVE1MVGFncygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IEhUTUxOYW1lczo6SFRNTFRhZ3NDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKnRhZ3Nb
aV0gPT0gYmdzb3VuZFRhZwogICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IGNvbW1hbmRU
YWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcAppbmRleCAzMzUwZjBjYTc2YTAyNTQ4NTg0NjlkN2ZjODZjODViZTA4Y2MwMTYzLi44
YTcxMDkzZDM0MmEzZWFkMGFlYjRhOThkMzljZGQyYjk5MWQ1Mzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC01NTAs
NyArNTUwLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3Jl
YXRlSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2sKICAgICAvLyBGSVhNRTogVGhpcyBj
YW4ndCB1c2UgSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUVsZW1lbnQgYmVjYXVzZSB3ZQog
ICAgIC8vIGhhdmUgdG8gcGFzcyB0aGUgY3VycmVudCBmb3JtIGVsZW1lbnQuICBXZSBzaG91bGQg
cmV3b3JrIGZvcm0gYXNzb2NpYXRpb24KICAgICAvLyB0byBvY2N1ciBhZnRlciBjb25zdHJ1Y3Rp
b24gdG8gYWxsb3cgYmV0dGVyIGNvZGUgc2hhcmluZyBoZXJlLgotICAgIFJlZlB0cjxFbGVtZW50
PiBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudCh0YWdOYW1l
LCAmb3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIGZvcm0oKSwgdHJ1ZSk7CisgICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQo
dGFnTmFtZSwgb3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIGZvcm0oKSwgdHJ1ZSk7CiAg
ICAgc2V0QXR0cmlidXRlcyhlbGVtZW50LmdldCgpLCB0b2tlbiwgbV9wYXJzZXJDb250ZW50UG9s
aWN5KTsKICAgICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsKICAgICByZXR1cm4g
ZWxlbWVudC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRl
bnRpZmllci5jcHAKaW5kZXggNmM0OGE2MjcxOTg2NTQ0NGVkMjk3NjM5Mzc4NmE5YjMyOGE4YTNi
OC4uOWUyMWJjYzI4MDdjNjE3MTcwZGRhYzNjMmNhZDhjZGY2MmIyYmRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApAQCAtODcsNyArODcsNyBA
QCBDT01QSUxFX0FTU0VSVChrSFRNTEF0dHJzSW5kZXhPZmZzZXQgPiBIVE1MVGFnc0NvdW50LCBr
SFRNTEF0dHJzSW5kZXhPZmZzZXRfc2hvdQogc3RhdGljIGNvbnN0IFN0cmluZyYgbmFtZUZvcklu
ZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIHVuc2lnbmVkIGFkanVzdGVkSW5kZXg7Ci0gICAg
UXVhbGlmaWVkTmFtZSoqIG5hbWVzOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0ICog
bmFtZXM7CiAgICAgaWYgKGluZGV4IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0KSB7CiAgICAgICAg
IEFTU0VSVChpbmRleCA8IGtIVE1MTmFtZXNJbmRleE9mZnNldCArIEhUTUxUYWdzQ291bnQpOwog
ICAgICAgICBhZGp1c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTE5hbWVzSW5kZXhPZmZzZXQ7CkBA
IC0xMTksNyArMTE5LDcgQEAgY29uc3QgU3RyaW5nSW1wbCogSFRNTElkZW50aWZpZXI6OmFzU3Ry
aW5nSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nLmltcGwoKTsKIH0KIAotdm9pZCBI
VE1MSWRlbnRpZmllcjo6YWRkTmFtZXMoUXVhbGlmaWVkTmFtZSoqIG5hbWVzLCB1bnNpZ25lZCBu
YW1lc0NvdW50LCB1bnNpZ25lZCBpbmRleE9mZnNldCkKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmFk
ZE5hbWVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0ICogbmFtZXMsIHVuc2lnbmVkIG5hbWVz
Q291bnQsIHVuc2lnbmVkIGluZGV4T2Zmc2V0KQogewogICAgIElkZW50aWZpZXJUYWJsZSYgdGFi
bGUgPSBpZGVudGlmaWVyVGFibGUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFt
ZXNDb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAKaW5kZXggODJjN2M1NzhhZTZiYTg4NTU1Njg0NWRhY2Y0YjBiYzgzZTg1NjhkZi4uMTM5NjJm
NzAyMDA1YmU2ZDliYjIxZjJmZjIzYWRiZjIwNTg3MTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgVGV4dFRy
YWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250YWluZXJOb2RlKiB3ZWJWVFROb2Rl
LCBDb250YWluZXJOCiAgICAgZm9yIChOb2RlKiBub2RlID0gd2ViVlRUTm9kZS0+Zmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZWZQdHI8
Tm9kZT4gY2xvbmVkTm9kZTsKICAgICAgICAgaWYgKG5vZGUtPmlzV2ViVlRURWxlbWVudCgpKQot
ICAgICAgICAgICAgY2xvbmVkTm9kZSA9IHRvV2ViVlRURWxlbWVudChub2RlKS0+Y3JlYXRlRXF1
aXZhbGVudEhUTUxFbGVtZW50KCZvd25lckRvY3VtZW50KCkpOworICAgICAgICAgICAgY2xvbmVk
Tm9kZSA9IHRvV2ViVlRURWxlbWVudChub2RlKS0+Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50
KG93bmVyRG9jdW1lbnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNsb25lZE5vZGUg
PSBub2RlLT5jbG9uZU5vZGUoZmFsc2UpOwogICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKGNs
b25lZE5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHAKaW5kZXggZTJjNmZjZDE0NGYyMDhmNDMyYWFkYzljMDU5NDIw
Njk2NWNmYTY3Yy4uN2VlNjg0NDJmYThiMzA5MDBlZmI2NWI4Zjc0MWYzODg1OTc2ODAxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCkBAIC02OCw1NyAr
NjgsNTggQEAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5vZGVUeXBlVG9UYWdOYW1lKFdl
YlZUVE5vZGVUeXBlIG5vZGVUeXBlKQogICAgIH0KIH0KIAotV2ViVlRURWxlbWVudDo6V2ViVlRU
RWxlbWVudChXZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
IDogRWxlbWVudChub2RlVHlwZVRvVGFnTmFtZShub2RlVHlwZSksIGRvY3VtZW50LCBDcmVhdGVF
bGVtZW50KQorV2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVudChXZWJWVFROb2RlVHlwZSBub2Rl
VHlwZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogRWxlbWVudChub2RlVHlwZVRvVGFnTmFt
ZShub2RlVHlwZSksICZkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKICAgICAsIG1faXNQYXN0Tm9k
ZSgwKQogICAgICwgbV93ZWJWVFROb2RlVHlwZShub2RlVHlwZSkKIHsKIH0KIAotUGFzc1JlZlB0
cjxXZWJWVFRFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjcmVhdGUoV2ViVlRUTm9kZVR5cGUgbm9k
ZVR5cGUsIERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gV2Vi
VlRURWxlbWVudDo6Y3JlYXRlKFdlYlZUVE5vZGVUeXBlIG5vZGVUeXBlLCBEb2N1bWVudCYgZG9j
dW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWVFRFbGVtZW50KG5vZGVUeXBl
LCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNs
b25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKQogewotICAgIFJlZlB0cjxX
ZWJWVFRFbGVtZW50PiBjbG9uZSA9IGNyZWF0ZShzdGF0aWNfY2FzdDxXZWJWVFROb2RlVHlwZT4o
bV93ZWJWVFROb2RlVHlwZSksICZkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8V2ViVlRURWxlbWVu
dD4gY2xvbmUgPSBjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9k
ZVR5cGUpLCBkb2N1bWVudCgpKTsKICAgICBjbG9uZS0+c2V0TGFuZ3VhZ2UobV9sYW5ndWFnZSk7
CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBXZWJWVFRF
bGVtZW50OjpjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhU
TUxFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+
IGh0bWxFbGVtZW50OworCiAgICAgc3dpdGNoIChtX3dlYlZUVE5vZGVUeXBlKSB7CiAgICAgY2Fz
ZSBXZWJWVFROb2RlVHlwZUNsYXNzOgogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVMYW5ndWFnZToK
ICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlVm9pY2U6Ci0gICAgICAgIGh0bWxFbGVtZW50ID0gSFRN
TEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChIVE1MTmFtZXM6OnNwYW5UYWcsIGRv
Y3VtZW50KTsKLSAgICAgICAgaHRtbEVsZW1lbnQuZ2V0KCktPnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OnRpdGxlQXR0ciwgZ2V0QXR0cmlidXRlKHZvaWNlQXR0cmlidXRlTmFtZSgpKSk7Ci0gICAg
ICAgIGh0bWxFbGVtZW50LmdldCgpLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpsYW5nQXR0ciwg
Z2V0QXR0cmlidXRlKGxhbmdBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAgICAgaHRtbEVsZW1lbnQg
PSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjpzcGFuVGFnLCBk
b2N1bWVudCk7CisgICAgICAgIGh0bWxFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0
aXRsZUF0dHIsIGdldEF0dHJpYnV0ZSh2b2ljZUF0dHJpYnV0ZU5hbWUoKSkpOworICAgICAgICBo
dG1sRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6bGFuZ0F0dHIsIGdldEF0dHJpYnV0
ZShsYW5nQXR0cmlidXRlTmFtZSgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViVlRU
Tm9kZVR5cGVJdGFsaWM6Ci0gICAgICAgIGh0bWxFbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5
OjpjcmVhdGVIVE1MRWxlbWVudChIVE1MTmFtZXM6OmlUYWcsIGRvY3VtZW50KTsKKyAgICAgICAg
aHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVz
OjppVGFnLCBkb2N1bWVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViVlRUTm9kZVR5
cGVCb2xkOgotICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRl
SFRNTEVsZW1lbnQoSFRNTE5hbWVzOjpiVGFnLCBkb2N1bWVudCk7CisgICAgICAgIGh0bWxFbGVt
ZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6YlRhZywg
ZG9jdW1lbnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlVW5kZXJs
aW5lOgotICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRN
TEVsZW1lbnQoSFRNTE5hbWVzOjp1VGFnLCBkb2N1bWVudCk7CisgICAgICAgIGh0bWxFbGVtZW50
ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6dVRhZywgZG9j
dW1lbnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlUnVieToKLSAg
ICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50
KEhUTUxOYW1lczo6cnVieVRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVudCA9IEhU
TUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OnJ1YnlUYWcsIGRvY3Vt
ZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZVJ1YnlUZXh0Ogot
ICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1l
bnQoSFRNTE5hbWVzOjpydFRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVudCA9IEhU
TUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OnJ0VGFnLCBkb2N1bWVu
dCk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIAotICAgIGh0bWxFbGVtZW50LmdldCgpLT5zZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjpjbGFzc0F0dHIsIGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwot
ICAgIHJldHVybiBodG1sRWxlbWVudDsKKyAgICBBU1NFUlQoaHRtbEVsZW1lbnQpOworICAgIGlm
IChodG1sRWxlbWVudCkKKyAgICAgICAgaHRtbEVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwor
ICAgIHJldHVybiBodG1sRWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggNzUz
MDQ5YzdiZmVhZGQzZTc1MjM2ZjYwNTU1NjM0MGMyZGVlMThmZS4uZjUxNzdiMjVlOGMzYTA3Njc5
NDU2YTQzMzM2NTdlMTFmY2QxMDIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRFbGVtZW50LmgKQEAgLTQzLDkgKzQzLDggQEAgZW51bSBXZWJWVFROb2RlVHlwZSB7CiAKIGNs
YXNzIFdlYlZUVEVsZW1lbnQgRklOQUwgOiBwdWJsaWMgRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFdlYlZUVE5vZGVU
eXBlLCBEb2N1bWVudCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICBQYXNzUmVmUHRyPEhU
TUxFbGVtZW50PiBjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJWVFRFbGVtZW50PiBjcmVhdGUoY29uc3QgV2ViVlRUTm9kZVR5
cGUsIERvY3VtZW50Jik7CisgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1aXZh
bGVudEhUTUxFbGVtZW50KERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxl
bWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIE9WRVJSSURF
OwogCkBAIC03Miw4ICs3MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgV2Vi
VlRURWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICBXZWJWVFRF
bGVtZW50KFdlYlZUVE5vZGVUeXBlLCBEb2N1bWVudCopOworICAgIFdlYlZUVEVsZW1lbnQoV2Vi
VlRUTm9kZVR5cGUsIERvY3VtZW50Jik7CiAKICAgICB1bnNpZ25lZCBtX2lzUGFzdE5vZGUgOiAx
OwogICAgIHVuc2lnbmVkIG1fd2ViVlRUTm9kZVR5cGUgOiA0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDVjMjA2YmFhZDhjNDNkOGExZmY4OGIwMTVl
N2FmZjlmZTE5MTMzNWQuLjg0MzdlYzQ3NjI1ZjdjNDllNjdmNDg4YWY5OTcwNjhiMmM5ZDJmYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTUwOCw3
ICs1MDgsNyBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21Ub2tlbihEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgICAgIFJlZlB0cjxXZWJWVFRFbGVtZW50PiBjaGlsZDsKICAg
ICAgICAgV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUgPSB0b2tlblRvTm9kZVR5cGUobV90b2tlbik7
CiAgICAgICAgIGlmIChub2RlVHlwZSAhPSBXZWJWVFROb2RlVHlwZU5vbmUpCi0gICAgICAgICAg
ICBjaGlsZCA9IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShub2RlVHlwZSwgZG9jdW1lbnQpOworICAg
ICAgICAgICAgY2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVhdGUobm9kZVR5cGUsICpkb2N1bWVu
dCk7CiAgICAgICAgIGlmIChjaGlsZCkgewogICAgICAgICAgICAgaWYgKG1fdG9rZW4uY2xhc3Nl
cygpLnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShjbGFz
c0F0dHIsIEF0b21pY1N0cmluZyhtX3Rva2VuLmNsYXNzZXMoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211696</attachid>
            <date>2013-09-15 01:48:41 -0700</date>
            <delta_ts>2013-09-15 19:35:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121378-20130915014841.patch</filename>
            <type>text/plain</type>
            <size>49842</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFhMGY2YmNiN2Y1ODdl
NGExNDJiNjJjYWM3N2NjNjQ5OGJhMjdlNi4uYmQwY2M3ZDUwYjAyMDJmMWU5NzdjOGQ2MzhhNmRj
NTkzNjM4ZDlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMy0wOS0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2hyaW5rIGZhY3RvcnkgZnVu
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjEzNzgKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFRo
aXMgbWFrZXMgdGhlIGZ1bmN0aW9ucyB0aGF0IGJ1aWxkcyBmb3VyIGRpZmZlcmVudCB0eXBlcyBv
ZiBwZXItZWxlbWVudCB0YWJsZXMKKyAgICAgICAgYWxsIGhhdmUgc21hbGxlciBjb2RlIHNpemUu
CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBUd2Vha2VkIGhvdyBIVE1MIGFuZCBT
Vkcgd3JhcHBlciBmYWN0b3JpZXMgYXJlIG1hZGUgYSBiaXQuCisgICAgICAgIEl0IHdhcyBPSywg
YnV0IGEgbGl0dGxlIHNsb3BweS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRWxlbWVudCk6IENoYW5nZWQgdG8gY2FsbCB0
aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlvbnMKKyAgICAgICAgaW4gdGhlIGZhY3Rvcmllcy4gQWxz
byBkaWQgc29tZSBzdHlsZSBpbXByb3ZlbWVudC4KKworICAgICAgICAqIGRvbS9tYWtlX25hbWVz
LnBsOgorICAgICAgICAocHJpbnRDb25zdHJ1Y3RvclNpZ25hdHVyZSk6IE1ha2UgY29uc3RydWN0
b3JzIHRha2UgYSBEb2N1bWVudCYgaW5zdGVhZCBvZgorICAgICAgICBhIERvY3VtZW50Ki4KKyAg
ICAgICAgKHByaW50Q29uc3RydWN0b3JJbnRlcmlvcik6IFVwZGF0ZWQgZm9yIERvY3VtZW50JiBp
bnN0ZWFkIG9mIERvY3VtZW50Ki4KKyAgICAgICAgKHByaW50RnVuY3Rpb25UYWJsZSk6IFJlbmFt
ZWQgZnJvbSBwcmludEZ1bmN0aW9uSW5pdHMsIGJlY2F1c2UgdGhpcyBub3cKKyAgICAgICAgY3Jl
YXRlcyB0YWJsZSBlbnRyaWVzLiBUaGUgYWN0dWFsIGNvZGUgdG8gYWRkIGVhY2ggZnVuY3Rpb24g
aXMgbm93IGRvbmUKKyAgICAgICAgaW4gYSBsb29wIGluc3RlYWQuCisgICAgICAgIChwcmludE5h
bWVzSGVhZGVyRmlsZSk6IE1hZGUgdGhlIHRhYmxlIGNvbnN0LgorICAgICAgICAocHJpbnROYW1l
c0NwcEZpbGUpOiBNYWRlIHRoZSB0YWJsZSBjb25zdC4KKyAgICAgICAgKHByaW50RGVmaW5pdGlv
bnMpOiBHZW5lcmF0ZSBhIHRhYmxlLCB0YWJsZSBlbnRyaWVzLCBhbmQgYSBsb29wIHRoYXQgY2Fs
bHMKKyAgICAgICAgY3JlYXRlUXVhbGlmaWVkTmFtZSwgcmF0aGVyIHRoYW4gYW4gInVucm9sbGVk
IGxvb3AiLgorICAgICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IFR3ZWFrZWQgaW5kZW50YXRp
b24uIFVwZGF0ZWQgdG8gdGFrZSBEb2N1bWVudCYgaW5zdGVhZAorICAgICAgICBvZiBEb2N1bWVu
dCouIEdlbmVyYXRlIGEgdGFibGUsIHRhYmxlIGVudHJpZXMsIGFuZCBhIGxvb3AgdGhhdCBidWls
ZHMgYSBtYXAsCisgICAgICAgIHJhdGhlciB0aGFuIGFuICJ1bnJvbGxlZCIgbG9vcC4KKyAgICAg
ICAgKHByaW50RmFjdG9yeUhlYWRlckZpbGUpOiBFbGltaW5hdGVkIHRoZSB1bnVzZWQgY3JlYXRl
RWxlbWVudCBtZW1iZXIgZnVuY3Rpb24KKyAgICAgICAgdGhhdCB3YXMgcGFydCBvZiBhIGRyZWFt
IG9mIGZhY3Rvcnkgb2JqZWN0cyBpbiBhIG5hbWVzcGFjZSByZWdpc3RyeSwgZ2l2aW5nCisgICAg
ICAgIHRoZSBuYW1lIGNyZWF0ZUVsZW1lbnQgdG8gdGhlIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24g
c28gaXQgd291bGQgYmUgbGVzcworICAgICAgICByZWR1bmRhbnQuIEFsc28gbWFkZSB0aGUgZnVu
Y3Rpb24gdGFrZXMgYSBEb2N1bWVudCYgaW5zdGVhZCBvZiBEb2N1bWVudCouCisgICAgICAgIEFs
c28gbWFkZSB0aGUgZGVmYXVsdCAibm90IGNyZWF0ZWQgYnkgcGFyc2VyIiwgc2luY2UgdGhlIHBh
cnNlciBpcyB0aGUgc2ltcGxlcgorICAgICAgICB1c2UgY2FzZSwgb3V0bnVtYmVyZWQgYnkgdGhl
IG5vbi1wYXJzZXIgdXNlcywgYXQgbGVhc3QgYXQgdGhlIG1vbWVudC4gQWxzbywKKyAgICAgICAg
dXNlIG51bGxwdHIgaW5zdGVhZCBvZiAwLgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUNw
cEZpbGUpOiBHZW5lcmF0ZSBhIHRhYmxlLCB0YWJsZSBlbnRyaWVzLCBhbmQgYSBsb29wCisgICAg
ICAgIHRoYXQgYnVpbGRzIGEgbWFwIHJhdGhlciB0aGFuIGFuICJ1bnJvbGxlZCIgbG9vcC4KKwor
ICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSFRNTEVsZW1lbnQpOiBQdXQgdGhlIG51bGwgY2hlY2sgaGVyZSB0aGF0IHVzZWQgdG8gYmUg
aW4KKyAgICAgICAgSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50LCBhbmQgY2FsbCB3
aXRoIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYQorICAgICAgICBwb2ludGVyLiBBbHNvIGRvbid0
IG5lZWQgdG8gcGFzcyAiMCwgZmFsc2UiIHNpbmNlICJub3QgY3JlYXRlZCBieSB0aGUgcGFyc2Vy
IgorICAgICAgICBpcyBub3cgdGhlIGRlZmF1bHQuCisgICAgICAgICogaHRtbC9IVE1MRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50OjpjcmVhdGVFbGVtZW50KTog
RGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvcHVsYXRlRXZlbnROYW1lRm9yQXR0cmlidXRlTG9jYWxOYW1lTWFwKTogQ2hhbmdlZCB0
byB1c2UgYW4KKyAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogYXMgdGhlIGtleSBpbnN0ZWFkIG9m
IEF0b21pY1N0cmluZywgc2luY2UgYWxsIHRoZSBzdHJpbmdzCisgICAgICAgIGNvbWUgZnJvbSB0
aGUgbG9jYWwgbmFtZXMgb2YgdGFncywgYW5kIHNvIGRvbid0IG5lZWQgdG8gYmUgcmVmJ2QuIFRo
aXMgc2F2ZXMKKyAgICAgICAgYSBiaXQgb2YgcmVmZXJlbmNlIGNvdW50IGNodXJuIHdoZW4gYnVp
bGRpbmcgdGhlIG1hcCBhbmQgaXMgdGhlIHNhbWUgcGF0dGVybgorICAgICAgICB1c2VkIGluIHNv
bWUgbWFwcyBpbiB0aGUgbWFrZV9uYW1lcy5wbCBzY3JpcHQgYWJvdmUuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBVcGRhdGVkIGZvciBjaGFuZ2UgYWJv
dmUuCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzUmVjb2duaXplZFRhZ05hbWUpOiBNb3JlIGNvbnN0LgorCisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50KTogQ2hhbmdlZCB0byBjYWxsIHRo
ZQorICAgICAgICBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQgZnVuY3Rpb24gdW5k
ZXIgaXRzIG5ldyBuYW1lIHdpdGggYSByZWZlcmVuY2UKKyAgICAgICAgcmF0aGVyIHRoYW4gYSBw
b2ludGVyLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bmFtZUZvckluZGV4KTogTW9yZSBjb25zdC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJZGVudGlmaWVyOjphZGROYW1lcyk6IE1vcmUgY29uc3QuCisKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFwTG93
ZXJlZExvY2FsTmFtZVRvTmFtZSk6IE1vcmUgY29uc3QuCisgICAgICAgIChXZWJDb3JlOjphZGp1
c3RTVkdUYWdOYW1lQ2FzZSk6IEVsaW1pbmF0ZWQgbG9jYWwgdmFyaWFibGUgc28gd2Ugd291bGQg
bm90IGhhdmUKKyAgICAgICAgdG8gdXR0ZXIgdHlwZSB3aXRoIG1vcmUgY29uc3QuCisgICAgICAg
IChXZWJDb3JlOjphZGp1c3RBdHRyaWJ1dGVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjph
ZGROYW1lc1dpdGhQcmVmaXgpOiBNb3JlIGNvbnN0LiBBbHNvIHR3ZWFrZWQgdG8gdXNlIGEgYml0
IG1vcmUgcmVmZXJlbmNlLAorICAgICAgICBhbmQgYSBiaXQgbGVzcyBwb2ludGVyLiBBbHNvIHVz
ZWQgYXJyYXkgaW5zdGVhZCBvZiBwb2ludGVyIGZvciBhcmd1bWVudCBzaW5jZSB0aGV5CisgICAg
ICAgIGFyZSBzeW5vbnltcyBhbmQgdGhpcyB1c2UgaXMgbW9yZSBhcnJheS1saWtlIGFuZCBjb25z
dCBhcnJheSBpcyBzbGlnaHRseSBlYXNpZXIgdG8KKyAgICAgICAgdW5kZXJzdGFuZCB0aGFuIHRo
ZSBkb3VibGUgY29uc3QgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEZvcmVpZ25B
dHRyaWJ1dGVzKTogRWxpbWluYXRlZCBsb2NhbCB2YXJpYWJsZSBzbyB3ZSB3b3VsZCBub3QgaGF2
ZQorICAgICAgICB0byB1dHRlciB0eXBlIHdpdGggbW9yZSBjb25zdC4KKworICAgICAgICAqIGh0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1
ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUpOiBQYXNzIGEgcmVmZXJlbmNlIHRvCisgICAgICAg
IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRF
bGVtZW50OjpXZWJWVFRFbGVtZW50KTogVGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9p
bnRlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNyZWF0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJp
YnV0ZXNBbmRDaGlsZHJlbik6IFBhc3MgYQorICAgICAgICByZWZlcmVuY2UgaW5zdGVhZCBvZiBh
IHBvaW50ZXIgdG8gY3JlYXRlLgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y3Jl
YXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KTogVGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkCisgICAg
ICAgIG9mIGEgcG9pbnRlciwgYW5kIHVwZGF0ZSB1c2VzIG9mIEhUTUxFbGVtZW50RmFjdG9yeTo6
Y3JlYXRlRWxlbWVudC4gQWxzbyBtYWRlCisgICAgICAgIHRoaXMgcmV0dXJuIG51bGwgd2hlbiBh
IGJhZCBub2RlIHR5cGUgaXMgcGFzc2VkIGluLCB3aGljaCBzaG91bGQgbmV2ZXIgaGFwcGVuLgor
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6IFVzZSBEb2N1bWVudCYgaW5z
dGVhZCBvZiBEb2N1bWVudCouIFJlbW92ZWQgdW51c2VkCisgICAgICAgIGFuZCB1bmRlZmluZWQg
Y3JlYXRlL2NvbnN0cnVjdG9yIG92ZXJsb2Fkcy4KKworICAgICAgICAqIGh0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6Y29uc3RydWN0
VHJlZUZyb21Ub2tlbik6IFBhc3MgZG9jdW1lbnQgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAg
ICAgIHBvaW50ZXIgdG8gV2ViVlRURWxlbWVudDo6Y3JlYXRlLgorCiAyMDEzLTA5LTE1ICBBbmRy
ZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgcmlkIG9mIHJlZi1j
b3VudGluZyBvbiBSZW5kZXJBcmVuYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IGNkMGFkMWIzNDc4YjBkZGNhOTJiNzFmY2JhMDY1ODA3YmE3Yzc0MzQuLjE2NzYxOTAzNDMxOGY3
MTc4Y2UxN2MyNDMyZDBjYjNmZjRiZWZkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNjg0LDYgKzY4NCw3IEBAIGFsbCA6IFwKICAgICBIVE1MRWxlbWVudEZhY3RvcnkuY3Bw
IFwKICAgICBIVE1MRW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMuY3BwIFwKKyAgICBK
U0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKICAgICBKU1NWR0VsZW1lbnRXcmFwcGVy
RmFjdG9yeS5jcHAgXAogICAgIFBsdWdJbnNSZXNvdXJjZXMuaCBcCiAgICAgU1ZHRWxlbWVudEZh
Y3RvcnkuY3BwIFwKQEAgLTkwMSwxOCArOTAyLDE2IEBAIGVuZGlmCiAKIGlmZGVmIEhUTUxfRkxB
R1MKIAotSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBIVE1MTmFtZXMuY3BwIDogZG9tL21ha2VfbmFt
ZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNT
dHJpbmcucG0gaHRtbC9IVE1MVGFnTmFtZXMuaW4gaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4K
K0hUTUxFbGVtZW50RmFjdG9yeS5jcHAgSFRNTE5hbWVzLmNwcCBKU0hUTUxFbGVtZW50V3JhcHBl
ckZhY3RvcnkuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIu
cG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gaHRtbC9IVE1MVGFnTmFtZXMuaW4g
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mv
c2NyaXB0cyAkPCAtLXRhZ3MgJChXZWJDb3JlKS9odG1sL0hUTUxUYWdOYW1lcy5pbiAtLWF0dHJz
ICQoV2ViQ29yZSkvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gLS1mYWN0b3J5IC0td3JhcHBl
ckZhY3RvcnkgLS1leHRyYURlZmluZXMgIiQoSFRNTF9GTEFHUykiCiAKIGVsc2UKIAotSFRNTEVs
ZW1lbnRGYWN0b3J5LmNwcCBIVE1MTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgYmluZGlu
Z3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gaHRt
bC9IVE1MVGFnTmFtZXMuaW4gaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KK0hUTUxFbGVtZW50
RmFjdG9yeS5jcHAgSFRNTE5hbWVzLmNwcCBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3Bw
IDogZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mv
c2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gaHRtbC9IVE1MVGFnTmFtZXMuaW4gaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAt
LXRhZ3MgJChXZWJDb3JlKS9odG1sL0hUTUxUYWdOYW1lcy5pbiAtLWF0dHJzICQoV2ViQ29yZSkv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gLS1mYWN0b3J5IC0td3JhcHBlckZhY3RvcnkKIAog
ZW5kaWYKIAotSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCA6IEhUTUxOYW1lcy5jcHAK
LQogWE1MTlNOYW1lcy5jcHAgOiBkb20vbWFrZV9uYW1lcy5wbCBiaW5kaW5ncy9zY3JpcHRzL0hh
c2hlci5wbSBiaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSB4bWwveG1sbnNhdHRycy5p
bgogCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tYXR0cnMgJChXZWJD
b3JlKS94bWwveG1sbnNhdHRycy5pbgogCkBAIC05MzUsMTcgKzkzNCwxNSBAQCBlbmRpZgogCiBp
ZmRlZiBTVkdfRkxBR1MKIAotU1ZHRWxlbWVudEZhY3RvcnkuY3BwIFNWR05hbWVzLmNwcCA6IGRv
bS9tYWtlX25hbWVzLnBsIGJpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtIGJpbmRpbmdzL3Njcmlw
dHMvU3RhdGljU3RyaW5nLnBtIHN2Zy9zdmd0YWdzLmluIHN2Zy9zdmdhdHRycy5pbgorSlNTVkdF
bGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCBTVkdOYW1lcy5j
cHAgOiBkb20vbWFrZV9uYW1lcy5wbCBiaW5kaW5ncy9zY3JpcHRzL0hhc2hlci5wbSBiaW5kaW5n
cy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSBzdmcvc3ZndGFncy5pbiBzdmcvc3ZnYXR0cnMuaW4K
IAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLXRhZ3MgJChXZWJDb3Jl
KS9zdmcvc3ZndGFncy5pbiAtLWF0dHJzICQoV2ViQ29yZSkvc3ZnL3N2Z2F0dHJzLmluIC0tZXh0
cmFEZWZpbmVzICIkKFNWR19GTEFHUykiIC0tZmFjdG9yeSAtLXdyYXBwZXJGYWN0b3J5CiBlbHNl
CiAKLVNWR0VsZW1lbnRGYWN0b3J5LmNwcCBTVkdOYW1lcy5jcHAgOiBkb20vbWFrZV9uYW1lcy5w
bCBiaW5kaW5ncy9zY3JpcHRzL0hhc2hlci5wbSBiaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmlu
Zy5wbSBzdmcvc3ZndGFncy5pbiBzdmcvc3ZnYXR0cnMuaW4KK0pTU1ZHRWxlbWVudFdyYXBwZXJG
YWN0b3J5LmNwcCBTVkdFbGVtZW50RmFjdG9yeS5jcHAgU1ZHTmFtZXMuY3BwIDogZG9tL21ha2Vf
bmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2NyaXB0cy9TdGF0
aWNTdHJpbmcucG0gc3ZnL3N2Z3RhZ3MuaW4gc3ZnL3N2Z2F0dHJzLmluCiAJcGVybCAtSSAkKFdl
YkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvc3ZnL3N2Z3RhZ3Mu
aW4gLS1hdHRycyAkKFdlYkNvcmUpL3N2Zy9zdmdhdHRycy5pbiAtLWZhY3RvcnkgLS13cmFwcGVy
RmFjdG9yeQogCiBlbmRpZgogCi1KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgOiBTVkdO
YW1lcy5jcHAKLQogWExpbmtOYW1lcy5jcHAgOiBkb20vbWFrZV9uYW1lcy5wbCBiaW5kaW5ncy9z
Y3JpcHRzL0hhc2hlci5wbSBiaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSBzdmcveGxp
bmthdHRycy5pbgogCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tYXR0
cnMgJChXZWJDb3JlKS9zdmcveGxpbmthdHRycy5pbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCA2NWIxYjZlZTk1NWM3NTk1YWY2Njk3Y2JiYjAyM2UyZjBmMzhjYjgwLi43NjEzMzYyZGIy
ZDFjODczN2UzNjEzMzNkMTNhMmJhODUwNmUzYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTgyMCw3ICs4MjAsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVF
bGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQwogICAgIH0KIAogICAg
IGlmIChpc1hIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50RmFjdG9y
eTo6Y3JlYXRlSFRNTEVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgeGh0bWxO
YW1lc3BhY2VVUkkpLCB0aGlzLCAwLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBIVE1MRWxlbWVu
dEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgeGh0
bWxOYW1lc3BhY2VVUkkpLCAqdGhpcyk7CiAKICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChRdWFs
aWZpZWROYW1lKG51bGxBdG9tLCBuYW1lLCBudWxsQXRvbSksIGZhbHNlKTsKIH0KQEAgLTExMTIs
MzIgKzExMTIsMzIgQEAgYm9vbCBEb2N1bWVudDo6aGFzVmFsaWROYW1lc3BhY2VGb3JBdHRyaWJ1
dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQogICAgIHJldHVybiBoYXNWYWxpZE5hbWVz
cGFjZUZvckVsZW1lbnRzKHFOYW1lKTsKIH0KIAotLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxs
eSBiZSBpbiBhIHBvc3NpYmxlIEVsZW1lbnRGYWN0b3J5IGNsYXNzCi1QYXNzUmVmUHRyPEVsZW1l
bnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBi
b29sIGNyZWF0ZWRCeVBhcnNlcikKKy8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgaW4g
YSBwb3NzaWJsZSBFbGVtZW50RmFjdG9yeSBjbGFzcy4KK1Bhc3NSZWZQdHI8RWxlbWVudD4gRG9j
dW1lbnQ6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpCiB7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGU7CisgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQ7CiAKICAgICAvLyBGSVhNRTogVXNlIHJlZ2lzdGVyZWQgbmFtZXNwYWNlcyBh
bmQgbG9vayB1cCBpbiBhIGhhc2ggdG8gZmluZCB0aGUgcmlnaHQgZmFjdG9yeS4KLSAgICBpZiAo
cU5hbWUubmFtZXNwYWNlVVJJKCkgPT0geGh0bWxOYW1lc3BhY2VVUkkpCi0gICAgICAgIGUgPSBI
VE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KHFOYW1lLCB0aGlzLCAwLCBjcmVh
dGVkQnlQYXJzZXIpOworICAgIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpID09IHhodG1sTmFtZXNw
YWNlVVJJKQorICAgICAgICBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVt
ZW50KG5hbWUsICp0aGlzLCBudWxscHRyLCBjcmVhdGVkQnlQYXJzZXIpOwogI2lmIEVOQUJMRShT
VkcpCi0gICAgZWxzZSBpZiAocU5hbWUubmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05h
bWVzcGFjZVVSSSkKLSAgICAgICAgZSA9IFNWR0VsZW1lbnRGYWN0b3J5OjpjcmVhdGVTVkdFbGVt
ZW50KHFOYW1lLCB0aGlzLCBjcmVhdGVkQnlQYXJzZXIpOworICAgIGVsc2UgaWYgKG5hbWUubmFt
ZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKKyAgICAgICAgZWxlbWVu
dCA9IFNWR0VsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KG5hbWUsICp0aGlzLCBjcmVhdGVk
QnlQYXJzZXIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BVEhNTCkKLSAgICBlbHNlIGlmIChxTmFt
ZS5uYW1lc3BhY2VVUkkoKSA9PSBNYXRoTUxOYW1lczo6bWF0aG1sTmFtZXNwYWNlVVJJKQotICAg
ICAgICBlID0gTWF0aE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZU1hdGhNTEVsZW1lbnQocU5hbWUs
IHRoaXMsIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkko
KSA9PSBNYXRoTUxOYW1lczo6bWF0aG1sTmFtZXNwYWNlVVJJKQorICAgICAgICBlbGVtZW50ID0g
TWF0aE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQobmFtZSwgKnRoaXMsIGNyZWF0ZWRC
eVBhcnNlcik7CiAjZW5kaWYKIAotICAgIGlmIChlKQorICAgIGlmIChlbGVtZW50KQogICAgICAg
ICBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMgPSB0cnVlOwogICAgIGVsc2UKLSAgICAg
ICAgZSA9IEVsZW1lbnQ6OmNyZWF0ZShxTmFtZSwgJmRvY3VtZW50KCkpOworICAgICAgICBlbGVt
ZW50ID0gRWxlbWVudDo6Y3JlYXRlKG5hbWUsICZkb2N1bWVudCgpKTsKIAogICAgIC8vIDxpbWFn
ZT4gdXNlcyBpbWdUYWcgc28gd2UgbmVlZCBhIHNwZWNpYWwgcnVsZS4KLSAgICBBU1NFUlQoKHFO
YW1lLm1hdGNoZXMoaW1hZ2VUYWcpICYmIGUtPnRhZ1FOYW1lKCkubWF0Y2hlcyhpbWdUYWcpICYm
IGUtPnRhZ1FOYW1lKCkucHJlZml4KCkgPT0gcU5hbWUucHJlZml4KCkpIHx8IHFOYW1lID09IGUt
PnRhZ1FOYW1lKCkpOworICAgIEFTU0VSVCgobmFtZS5tYXRjaGVzKGltYWdlVGFnKSAmJiBlbGVt
ZW50LT50YWdRTmFtZSgpLm1hdGNoZXMoaW1nVGFnKSAmJiBlbGVtZW50LT50YWdRTmFtZSgpLnBy
ZWZpeCgpID09IG5hbWUucHJlZml4KCkpIHx8IG5hbWUgPT0gZWxlbWVudC0+dGFnUU5hbWUoKSk7
CiAKLSAgICByZXR1cm4gZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgp
OwogfQogCiBib29sIERvY3VtZW50OjpyZWdpb25CYXNlZENvbHVtbnNFbmFibGVkKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggYWMzMWU2ZjhkYmJmYTcxNjQ4MjZhMmJlYzlk
ODIzMTFlMGI0M2UzOS4uMmY1NzU2MjFhMDhhZTc2NTJmMzBlZTA3OTVmNTY0NTY4N2ZjZTIwMSAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTEyNyw3ICsxMjcsNyBAQCBpZiAobGVuZ3Ro
KCRmb250TmFtZXNJbikpIHsKICAgICBwcmludCBGIFN0YXRpY1N0cmluZzo6R2VuZXJhdGVTdHJp
bmdBc3NlcnRzKFwlcGFyYW1ldGVycyk7CiAKICAgICB3aGlsZSAoIG15ICgkbmFtZSwgJGlkZW50
aWZpZXIpID0gZWFjaCAlcGFyYW1ldGVycyApIHsKLSAgICAgICAgcHJpbnQgRiAiICAgIG5ldyAo
Tm90TnVsbCwgKHZvaWQqKSYkbmFtZSkgQXRvbWljU3RyaW5nKCR7bmFtZX1JbXBsKTtcbiI7Cisg
ICAgICAgIHByaW50IEYgIiAgICBuZXcgKE5vdE51bGwsIHN0YXRpY19jYXN0PHZvaWQqPigmJG5h
bWUpKSBBdG9taWNTdHJpbmcoJHtuYW1lfUltcGwpO1xuIjsKICAgICB9CiAKICAgICBwcmludCBG
ICJ9XG59XG59XG4iOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHN1YiBwcmludENvbnN0cnVjdG9yU2ln
bmF0dXJlCiB7CiAgICAgbXkgKCRGLCAkdGFnTmFtZSwgJGNvbnN0cnVjdG9yTmFtZSwgJGNvbnN0
cnVjdG9yVGFnTmFtZSkgPSBAXzsKIAotICAgIHByaW50IEYgInN0YXRpYyBQYXNzUmVmUHRyPCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAke2NvbnN0cnVjdG9yTmFtZX1Db25zdHJ1Y3Rv
cihjb25zdCBRdWFsaWZpZWROYW1lJiAkY29uc3RydWN0b3JUYWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQiOworICAgIHByaW50IEYgInN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1FbGVtZW50PiAke2NvbnN0cnVjdG9yTmFtZX1Db25zdHJ1Y3Rvcihjb25zdCBRdWFsaWZp
ZWROYW1lJiAkY29uc3RydWN0b3JUYWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQiOwogICAgIGlm
ICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewogICAgICAgICBwcmludCBGICIs
IEhUTUxGb3JtRWxlbWVudCoiOwogICAgICAgICBwcmludCBGICIgZm9ybUVsZW1lbnQiIGlmICRl
bmFibGVkVGFnc3skdGFnTmFtZX17Y29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50fTsKQEAgLTM5
OSw3ICszOTksNyBAQCBzdWIgcHJpbnRDb25zdHJ1Y3RvckludGVyaW9yCiAgICAgIyBIYW5kbGUg
bWVkaWEgZWxlbWVudHMuCiAgICAgaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9u
bHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKLSAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBkb2N1bWVudC5zZXR0aW5ncygpOwogICAgIGlmICghTWVkaWFQbGF5ZXI6OmlzQXZh
aWxhYmxlKCkgfHwgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+bWVkaWFFbmFibGVkKCkpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICAKQEAgLTQyNyw3ICs0MjcsNyBAQCBFTkQKIAogICAgICMgQ2Fs
bCB0aGUgY29uc3RydWN0b3Igd2l0aCB0aGUgcmlnaHQgcGFyYW1ldGVycy4KICAgICBwcmludCBG
ICIgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSgkY29uc3RydWN0b3JUYWdOYW1l
IjsKLSAgICBwcmludCBGICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yVGFrZXNE
b2N1bWVudFJlZmVyZW5jZX0gPyAiLCAqZG9jdW1lbnQiIDogIiwgZG9jdW1lbnQiKTsKKyAgICBw
cmludCBGICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yVGFrZXNEb2N1bWVudFJl
ZmVyZW5jZX0gPyAiLCBkb2N1bWVudCIgOiAiLCAmZG9jdW1lbnQiKTsKICAgICBwcmludCBGICIs
IGZvcm1FbGVtZW50IiBpZiAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNG
b3JtRWxlbWVudH07CiAgICAgcHJpbnQgRiAiLCBjcmVhdGVkQnlQYXJzZXIiIGlmICRlbmFibGVk
VGFnc3skdGFnTmFtZX17Y29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcn07CiAgICAgcHJp
bnQgRiAiKTtcbn1cbiI7CkBAIC00NzksNyArNDc5LDcgQEAgc3ViIHByaW50Q29uc3RydWN0b3Jz
CiAgICAgfQogfQogCi1zdWIgcHJpbnRGdW5jdGlvbkluaXRzCitzdWIgcHJpbnRGdW5jdGlvblRh
YmxlCiB7CiAgICAgbXkgKCRGLCAkdGFnQ29uc3RydWN0b3JNYXApID0gQF87CiAgICAgbXkgJXRh
Z0NvbnN0cnVjdG9yTWFwID0gJSR0YWdDb25zdHJ1Y3Rvck1hcDsKQEAgLTQ5NCw5ICs0OTQsOSBA
QCBzdWIgcHJpbnRGdW5jdGlvbkluaXRzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGVuYWJs
ZWRUYWdzeyR0YWdOYW1lfXttYXBUb1RhZ05hbWV9KSB7Ci0gICAgICAgICAgICBwcmludCBGICIg
ICAgYWRkVGFnKCR7dGFnTmFtZX1UYWcsICRlbmFibGVkVGFnc3skdGFnTmFtZX17bWFwVG9UYWdO
YW1lfVRvJHt0YWdOYW1lfUNvbnN0cnVjdG9yKTtcbiI7CisgICAgICAgICAgICBwcmludCBGICIg
ICAgICAgIHsgJHt0YWdOYW1lfVRhZywgJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXttYXBUb1RhZ05h
bWV9VG8ke3RhZ05hbWV9Q29uc3RydWN0b3IgfSxcbiI7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBwcmludCBGICIgICAgYWRkVGFnKCR7dGFnTmFtZX1UYWcsICR0YWdDb25zdHJ1Y3Rv
ck1hcHskdGFnTmFtZX1Db25zdHJ1Y3Rvcik7XG4iOworICAgICAgICAgICAgcHJpbnQgRiAiICAg
ICAgICB7ICR7dGFnTmFtZX1UYWcsICR0YWdDb25zdHJ1Y3Rvck1hcHskdGFnTmFtZX1Db25zdHJ1
Y3RvciB9LFxuIjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKQEAg
LTY4OSwxMiArNjg5LDEyIEBAIHN1YiBwcmludE5hbWVzSGVhZGVyRmlsZQogCiAgICAgaWYgKGtl
eXMgJWFsbFRhZ3MpIHsKICAgICAgICAgcHJpbnQgRiAiY29uc3QgdW5zaWduZWQgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfVRhZ3NDb3VudCA9ICIsIHNjYWxhcihrZXlzICVhbGxUYWdzKSwgIjtcbiI7
Ci0gICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9VGFncygpO1xuIjsKKyAgICAgICAgcHJpbnQgRiAiY29uc3QgV2ViQ29yZTo6
UXVhbGlmaWVkTmFtZSogY29uc3QgKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncygpO1xu
IjsKICAgICB9CiAKICAgICBpZiAoa2V5cyAlYWxsQXR0cnMpIHsKICAgICAgICAgcHJpbnQgRiAi
Y29uc3QgdW5zaWduZWQgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzQ291bnQgPSAiLCBzY2Fs
YXIoa2V5cyAlYWxsQXR0cnMpLCAiO1xuIjsKLSAgICAgICAgcHJpbnQgRiAiV2ViQ29yZTo6UXVh
bGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycygpO1xuIjsKKyAgICAg
ICAgcHJpbnQgRiAiY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSogY29uc3QgKiBnZXQkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoKTtcbiI7CiAgICAgfQogCiAgICAgcHJpbnRJbml0KCRG
LCAxKTsKQEAgLTcyMiwxMCArNzIyLDEwIEBAIHN1YiBwcmludE5hbWVzQ3BwRmlsZQogICAgICAg
ICAgICAgcHJpbnQgRiAiREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCAiLCAkbmFtZSwgIlRh
ZylcbiI7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHByaW50IEYgIlxuXG5XZWJDb3Jl
OjpRdWFsaWZpZWROYW1lKiogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3MoKVxuIjsKLSAg
ICAgICAgcHJpbnQgRiAie1xuICAgIHN0YXRpYyBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiAkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9VGFnc1tdID0ge1xuIjsKKyAgICAgICAgcHJpbnQgRiAiXG5cbmNv
bnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0ICogZ2V0JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVRhZ3MoKVxuIjsKKyAgICAgICAgcHJpbnQgRiAie1xuICAgIHN0YXRpYyBjb25zdCBXZWJD
b3JlOjpRdWFsaWZpZWROYW1lKiBjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnc1tdID0g
e1xuIjsKICAgICAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtleXMgJWFsbFRhZ3MpIHsKLSAgICAg
ICAgICAgIHByaW50IEYgIiAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqKSYke25hbWV9
VGFnLFxuIjsKKyAgICAgICAgICAgIHByaW50IEYgIiAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpRdWFsaWZpZWROYW1lKj4oJiR7bmFtZX1UYWcpLFxuIjsKICAgICAgICAgfQogICAg
ICAgICBwcmludCBGICIgICAgfTtcbiI7CiAgICAgICAgIHByaW50IEYgIiAgICByZXR1cm4gJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3M7XG4iOwpAQCAtNzM3LDEzICs3MzcsMTMgQEAgc3ViIHBy
aW50TmFtZXNDcHBGaWxlCiAgICAgICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICVhbGxBdHRy
cykgewogICAgICAgICAgICAgcHJpbnQgRiAiREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCAi
LCAkbmFtZSwgIkF0dHIpXG4iOwogICAgICAgICB9Ci0gICAgICAgIHByaW50IEYgIlxuXG5XZWJD
b3JlOjpRdWFsaWZpZWROYW1lKiogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzKClcbiI7
Ci0gICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSog
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJbXSA9IHtcbiI7CisgICAgICAgIHByaW50IEYgIlxu
XG5jb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiBjb25zdCAqIGdldCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1BdHRycygpXG4iOworICAgICAgICBwcmludCBGICJ7XG4gICAgc3RhdGljIGNvbnN0
IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqIGNvbnN0ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRy
c1tdID0ge1xuIjsKICAgICAgICAgZm9yIG15ICRuYW1lIChzb3J0IGtleXMgJWFsbEF0dHJzKSB7
Ci0gICAgICAgICAgICBwcmludCBGICIgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lKikm
JHtuYW1lfUF0dHIsXG4iOworICAgICAgICAgICAgcHJpbnQgRiAiICAgICAgICByZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqPigmJHtuYW1lfUF0dHIpLFxuIjsKICAgICAg
ICAgfQogICAgICAgICBwcmludCBGICIgICAgfTtcbiI7Ci0gICAgICAgIHByaW50IEYgIiAgICBy
ZXR1cm4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHI7XG4iOworICAgICAgICBwcmludCBGICIg
ICAgcmV0dXJuICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycztcbiI7CiAgICAgICAgIHByaW50
IEYgIn1cbiI7CiAgICAgfQogCkBAIC03NTIsNyArNzUyLDcgQEAgc3ViIHByaW50TmFtZXNDcHBG
aWxlCiAgICAgcHJpbnQoRiAiICAgIEF0b21pY1N0cmluZyAke2xvd2VyTmFtZXNwYWNlfU5TKFwi
JHBhcmFtZXRlcnN7bmFtZXNwYWNlVVJJfVwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTtcblxuIik7CiAKICAgICBwcmludChGICIgICAgLy8gTmFtZXNwYWNlXG4iKTsKLSAg
ICBwcmludChGICIgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJiR7bG93ZXJOYW1lc3BhY2V9TmFt
ZXNwYWNlVVJJKSBBdG9taWNTdHJpbmcoJHtsb3dlck5hbWVzcGFjZX1OUyk7XG4iKTsKKyAgICBw
cmludChGICIgICAgbmV3IChOb3ROdWxsLCBzdGF0aWNfY2FzdDx2b2lkKj4oJiR7bG93ZXJOYW1l
c3BhY2V9TmFtZXNwYWNlVVJJKSkgQXRvbWljU3RyaW5nKCR7bG93ZXJOYW1lc3BhY2V9TlMpO1xu
Iik7CiAgICAgcHJpbnQoRiAiXG4iKTsKICAgICBwcmludCBGIFN0YXRpY1N0cmluZzo6R2VuZXJh
dGVTdHJpbmdBc3NlcnRzKFwlYWxsU3RyaW5ncyk7CiAKQEAgLTg0OCwyMCArODQ4LDM0IEBAIHN1
YiBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzCiBzdWIgcHJpbnREZWZpbml0aW9ucwog
ewogICAgIG15ICgkRiwgJG5hbWVzUmVmLCAkdHlwZSwgJG5hbWVzcGFjZVVSSSkgPSBAXzsKLSAg
ICBteSAkc2luZ3VsYXJUeXBlID0gc3Vic3RyKCR0eXBlLCAwLCAtMSk7Ci0gICAgbXkgJHNob3J0
VHlwZSA9IHN1YnN0cigkc2luZ3VsYXJUeXBlLCAwLCA0KTsKLSAgICBteSAkc2hvcnRDYW1lbFR5
cGUgPSB1Y2ZpcnN0KCRzaG9ydFR5cGUpOwotICAgIG15ICRzaG9ydFVwcGVyVHlwZSA9IHVjKCRz
aG9ydFR5cGUpOworCisgICAgbXkgJHNob3J0Q2FtZWxUeXBlID0gdWNmaXJzdChzdWJzdHIoc3Vi
c3RyKCR0eXBlLCAwLCAtMSksIDAsIDQpKTsKKyAgICBteSAkY2FwaXRhbGl6ZWRUeXBlID0gdWNm
aXJzdCgkdHlwZSk7CiAgICAgCi0gICAgcHJpbnQgRiAiICAgIC8vICIgLiB1Y2ZpcnN0KCR0eXBl
KSAuICJcbiI7CitwcmludCBGIDw8RU5ECiAKKyAgICBzdHJ1Y3QgJHtjYXBpdGFsaXplZFR5cGV9
VGFibGVFbnRyeSB7CisgICAgICAgIHZvaWQqIHRhcmdldEFkZHJlc3M7CisgICAgICAgIFN0cmlu
Z0ltcGwmIG5hbWU7CisgICAgfTsKKworICAgIGNvbnN0ICR7Y2FwaXRhbGl6ZWRUeXBlfVRhYmxl
RW50cnkgJHt0eXBlfVRhYmxlW10gPSB7CitFTkQKKzsKICAgICBmb3IgbXkgJG5hbWUgKHNvcnQg
a2V5cyAlJG5hbWVzUmVmKSB7Ci0gICAgICAgICMgVG8gZ2VuZXJhdGUgbGVzcyBjb2RlIGluIGlu
aXQoKSwgdGhlIGNvbW1vbiBjYXNlIG9mIG51bGxBdG9tIGZvciB0aGUgbmFtZXNwYWNlLCB3ZSBj
YWxsIGNyZWF0ZVF1YWxpZmllZE5hbWUoKSB3aXRob3V0IHBhc3NpbmcgJG5hbWVzcGFjZVVSSS4K
LSAgICAgICAgaWYgKCRuYW1lc3BhY2VVUkkgZXEgIm51bGxBdG9tIikgewotICAgICAgICAgICAg
cHJpbnQgRiAiICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoKHZvaWQqKSYkbmFtZSIsIiR7c2hvcnRD
YW1lbFR5cGV9LCAke25hbWV9SW1wbCk7XG4iOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcHJpbnQgRiAiICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoKHZvaWQqKSYkbmFtZSIsIiR7c2hv
cnRDYW1lbFR5cGV9LCAke25hbWV9SW1wbCwgJG5hbWVzcGFjZVVSSSk7XG4iOwotICAgICAgICB9
CisgICAgICAgIHByaW50IEYgIiAgICAgICAgeyAmJG5hbWUkc2hvcnRDYW1lbFR5cGUsICoke25h
bWV9SW1wbCB9LFxuIjsKKyAgICB9CisKK3ByaW50IEYgPDxFTkQKKyAgICB9OworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoJHt0eXBlfVRhYmxlKTsgKytp
KQorRU5ECis7CisgICAgaWYgKCRuYW1lc3BhY2VVUkkgZXEgIm51bGxBdG9tIikgeworICAgICAg
ICBwcmludCBGICIgICAgICAgIGNyZWF0ZVF1YWxpZmllZE5hbWUoJHt0eXBlfVRhYmxlW2ldLnRh
cmdldEFkZHJlc3MsICYke3R5cGV9VGFibGVbaV0ubmFtZSk7XG4iOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHByaW50IEYgIiAgICAgICAgY3JlYXRlUXVhbGlmaWVkTmFtZSgke3R5cGV9VGFibGVb
aV0udGFyZ2V0QWRkcmVzcywgJiR7dHlwZX1UYWJsZVtpXS5uYW1lLCAkbmFtZXNwYWNlVVJJKTtc
biI7CiAgICAgfQogfQogCkBAIC04NzMsMTEzICs4ODcsOTkgQEAgc3ViIHByaW50RmFjdG9yeUNw
cEZpbGUKICAgICBteSAkRjsKICAgICBvcGVuIEYsICI+JGNwcFBhdGgiOwogCi1wcmludExpY2Vu
c2VIZWFkZXIoJEYpOworICAgIG15ICRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVjbGFyYXRpb24g
PSAiIjsKKyAgICBteSAkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRlZmluaXRpb24gPSAiIjsKKyAg
ICAkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRlY2xhcmF0aW9uID0gIiwgSFRNTEZvcm1FbGVtZW50
KiIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CisgICAgJGZvcm1FbGVtZW50
QXJndW1lbnRGb3JEZWZpbml0aW9uID0gIiwgSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCIg
aWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7CiAKLXByaW50IEYgPDxFTkQKKyAg
ICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOworCisgICAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogRU5ECi07CisgICAgOwogCi1wcmludCBGICJcbiNpZiAkcGFyYW1ldGVyc3tn
dWFyZEZhY3RvcnlXaXRofVxuXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9Owor
ICAgIHByaW50IEYgIlxuI2lmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9XG5cbiIgaWYg
JHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKLXByaW50IEYgPDxFTkQKKyAgICBwcmlu
dCBGIDw8RU5ECiAjaW5jbHVkZSAiJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5
LmgiCi0jaW5jbHVkZSAiJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzLmgiCi1FTkQKLTsKIAot
cHJpbnRFbGVtZW50SW5jbHVkZXMoJEYpOworI2luY2x1ZGUgIiRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1OYW1lcy5oIgogCi1wcmludCBGICJcbiNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPlxuIjsKK0VO
RAorICAgIDsKIAotcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcygkRiwgMCk7CisgICAg
cHJpbnRFbGVtZW50SW5jbHVkZXMoJEYpOworICAgIHByaW50Q29uZGl0aW9uYWxFbGVtZW50SW5j
bHVkZXMoJEYsIDApOwogCi1wcmludCBGIDw8RU5ECisgICAgcHJpbnQgRiA8PEVORAogCiAjaW5j
bHVkZSAiQ29udGV4dEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAj
aWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKICNpbmNsdWRlICJDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVnaXN0cnkuaCIKICNlbmRpZgogCi0j
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoVklERU8pCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczsK
IAotRU5ECi07Ci0KLXByaW50IEYgInR5cGVkZWYgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudD4gKCpDb25zdHJ1Y3RvckZ1bmN0aW9uKShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqIjsKLXByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiIgaWYgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7Ci1wcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTtcbiI7Ci1wcmludCBGIDw8RU5ECi10eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IENvbnN0cnVjdG9yRnVuY3Rpb24+IEZ1bmN0aW9uTWFwOwotCi1zdGF0aWMgRnVuY3Rpb25NYXAq
IGdGdW5jdGlvbk1hcCA9IDA7Cit0eXBlZGVmIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+ICgqJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24p
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYkZm9ybUVsZW1lbnRBcmd1bWVudEZvckRl
Y2xhcmF0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKIEVORAotOwotCi1teSAldGFnQ29u
c3RydWN0b3JNYXAgPSBidWlsZENvbnN0cnVjdG9yTWFwKCk7CisgICAgOwogCi1wcmludENvbnN0
cnVjdG9ycygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7CisgICAgbXkgJXRhZ0NvbnN0cnVjdG9y
TWFwID0gYnVpbGRDb25zdHJ1Y3Rvck1hcCgpOwogCi1wcmludCBGIDw8RU5ECi1zdGF0aWMgdm9p
ZCBhZGRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnLCBDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1
bmMpCi17Ci0gICAgZ0Z1bmN0aW9uTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgZnVu
Yyk7Ci19CisgICAgcHJpbnRDb25zdHJ1Y3RvcnMoJEYsIFwldGFnQ29uc3RydWN0b3JNYXApOwog
Ci1zdGF0aWMgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcCgpCisgICAgcHJpbnQgRiA8PEVORAorc3Rh
dGljIHZvaWQgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5j
dGlvbj4mIG1hcCkKIHsKLSAgICBBU1NFUlQoIWdGdW5jdGlvbk1hcCk7CisgICAgc3RydWN0IFRh
YmxlRW50cnkgeworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lOworICAgICAgICAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbiBmdW5jdGlvbjsKKyAgICB9
OwogCi0gICAgLy8gQ3JlYXRlIHRoZSB0YWJsZS4KLSAgICBnRnVuY3Rpb25NYXAgPSBuZXcgRnVu
Y3Rpb25NYXA7Ci0gICAgCi0gICAgLy8gUG9wdWxhdGUgaXQgd2l0aCBjb25zdHJ1Y3RvciBmdW5j
dGlvbnMuCisgICAgY29uc3QgVGFibGVFbnRyeSB0YWJsZVtdID0gewogRU5ECi07Ci0KLXByaW50
RnVuY3Rpb25Jbml0cygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7Ci0KLXByaW50IEYgIn1cbiI7
CisgICAgOwogCisgICAgcHJpbnRGdW5jdGlvblRhYmxlKCRGLCBcJXRhZ0NvbnN0cnVjdG9yTWFw
KTsKIAotcHJpbnQgRiAiXG5QYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZSRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQiOwotcHJpbnQgRiAiLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50IiBpZiAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKLXByaW50IEYgIiwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpXG57XG4iOworICAgIHByaW50IEYgPDxFTkQKKyAgICB9OwogCi1wcmludCBGIDw8
RU5ECi0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpCisgICAgICAgIG1h
cC5hZGQodGFibGVbaV0ubmFtZS5sb2NhbE5hbWUoKS5pbXBsKCksIHRhYmxlW2ldLmZ1bmN0aW9u
KTsKK30KIAorUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9y
RGVmaW5pdGlvbiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCit7CiBFTkQKLTsKKyAgICA7CiAKLWlm
ICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IG5lICJIVE1MIiBhbmQgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfSBuZSAiU1ZHIikgewotcHJpbnQgRiA8PEVORAorICAgIGlmICgkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9IG5lICJIVE1MIiBhbmQgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBuZSAiU1ZHIikgewor
ICAgICAgICBwcmludCBGIDw8RU5ECiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAg
IFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygpOworICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGRvY3VtZW50LnNldHRpbmdzKCk7CiAgICAgaWYgKHNldHRpbmdzICYmIHNl
dHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQogICAgICAg
ICByZXR1cm4gMDsKICNlbmRpZgogRU5ECi07Ci0KLX0KKyAgICAgICAgOworICAgIH0KIAotcHJp
bnQgRiA8PEVORAorICAgIHByaW50IEYgPDxFTkQKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KQotICAgIGlmIChkb2N1bWVudC0+cmVnaXN0cnkoKSkgewotICAgICAgICBpZiAoUmVmUHRyPEN1
c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBkb2N1bWVudC0+cmVnaXN0cnko
KS0+ZmluZChudWxsUU5hbWUoKSwgcU5hbWUpKSB7CisgICAgaWYgKGRvY3VtZW50LnJlZ2lzdHJ5
KCkpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0
cnVjdG9yID0gZG9jdW1lbnQucmVnaXN0cnkoKS0+ZmluZChudWxsUU5hbWUoKSwgbmFtZSkpIHsK
ICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY29uc3RydWN0b3ItPmNyZWF0
ZUVsZW1lbnQoKTsKICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5pcyRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nh
c3Q8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+KGVsZW1lbnQucmVsZWFzZSgpKTsKQEAg
LTk4NywyNCArOTg3LDMxIEBAIHByaW50IEYgPDxFTkQKICAgICB9CiAjZW5kaWYKIAotICAgIGlm
ICghZ0Z1bmN0aW9uTWFwKQotICAgICAgICBjcmVhdGVGdW5jdGlvbk1hcCgpOwotICAgIGlmIChD
b25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUubG9j
YWxOYW1lKCkuaW1wbCgpKSkgeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlv
bj4+IGZ1bmN0aW9uczsKKyAgICBpZiAoZnVuY3Rpb25zLmdldCgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChmdW5jdGlvbnMuZ2V0
KCkpOworICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbiBm
dW5jdGlvbiA9IGZ1bmN0aW9ucy5nZXQoKS5nZXQobmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpKSB7
CiBFTkQKLTsKKyAgICA7CiAKICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRN
TCIpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUGFzc1JlZlB0cjwkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9uKHFOYW1lLCBkb2N1bWVudCwg
Zm9ybUVsZW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpXG4iOwotICAgICAgICBwcmludCBGICIgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDtcbiI7CisgICAgICAgIHByaW50IEYgIiAgICAgICAgaWYg
KFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9u
KG5hbWUsIGRvY3VtZW50LCBmb3JtRWxlbWVudCwgY3JlYXRlZEJ5UGFyc2VyKSlcbiI7CisgICAg
ICAgIHByaW50IEYgIiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTtcbiI7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUGFzc1JlZlB0cjwkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCA9IGZ1bmN0aW9uKHFOYW1lLCBkb2N1
bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSlcbiI7Ci0gICAgICAgIHByaW50IEYgIiAgICAgICAgICAg
IHJldHVybiBlbGVtZW50O1xuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgICAgICBpZiAoUmVmUHRy
PCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50ID0gZnVuY3Rpb24obmFtZSwg
ZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpXG4iOworICAgICAgICBwcmludCBGICIgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7XG4iOwogICAgIH0KKwogICAgIHByaW50IEYg
IiAgIH1cbiI7Ci0gICAgcHJpbnQgRiAiICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50
ZXJmYWNlTmFtZX06OmNyZWF0ZShxTmFtZSwgIiAuICgkcGFyYW1ldGVyc3tjb25zdHJ1Y3RvclRh
a2VzRG9jdW1lbnRSZWZlcmVuY2V9ID8gIipkb2N1bWVudCIgOiAiZG9jdW1lbnQiKSAuICIpO1xu
IjsKKyAgICBwcmludCBGICIgICByZXR1cm4gJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VO
YW1lfTo6Y3JlYXRlKG5hbWUsICIgLiAoJHBhcmFtZXRlcnN7Y29uc3RydWN0b3JUYWtlc0RvY3Vt
ZW50UmVmZXJlbmNlfSA/ICIiIDogIiYiKSAuICJkb2N1bWVudCk7XG4iOwogCi0gICAgcHJpbnQg
RiAifVxuXG4iOwotICAgIHByaW50IEYgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcblxuIjsKKyAg
ICBwcmludCBGIDw8RU5ECit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworRU5ECisgICAg
OwogCiAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdp
dGh9OwogCkBAIC0xMDI0LDMzICsxMDMxLDIzIEBAIHN1YiBwcmludEZhY3RvcnlIZWFkZXJGaWxl
CiAjZGVmaW5lICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9oCiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVtZW50OworCiAgICAgY2xhc3MgRG9jdW1lbnQ7
CisgICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50OwotRU5ECi07CiAKLXByaW50IEYgIiAgICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50
O1xuIiBpZiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKLQotcHJpbnQgRjw8RU5E
Ci0gICAgLy8gVGhlIGlkZWEgYmVoaW5kIHRoaXMgY2xhc3MgaXMgdGhhdCB0aGVyZSB3aWxsIGV2
ZW50dWFsbHkgYmUgYSBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIFVSSXMgdG8gRWxlbWVudEZhY3Rv
cmllcyB0aGF0IGNhbiBkaXNwZW5zZQotICAgIC8vIGVsZW1lbnRzLiBJbiBhIGNvbXBvdW5kIGRv
Y3VtZW50IHdvcmxkLCB0aGUgZ2VuZXJpYyBjcmVhdGVFbGVtZW50IGZ1bmN0aW9uICh3aWxsIGVu
ZCB1cCBiZWluZyB2aXJ0dWFsKSB3aWxsIGJlIGNhbGxlZC4KICAgICBjbGFzcyAkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudEZhY3RvcnkgewogICAgIHB1YmxpYzoKLSAgICAgICAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUm
LCBXZWJDb3JlOjpEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gdHJ1ZSk7CiBFTkQK
IDsKLXByaW50IEYgIiAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+IGNyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KGNvbnN0IFdl
YkNvcmU6OlF1YWxpZmllZE5hbWUmLCBXZWJDb3JlOjpEb2N1bWVudCoiOwotcHJpbnQgRiAiLCBI
VE1MRm9ybUVsZW1lbnQqID0gMCIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCI7
Ci1wcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gdHJ1ZSk7XG4iOworCitwcmludCBG
ICIgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOworcHJpbnQg
RiAiLCBIVE1MRm9ybUVsZW1lbnQqID0gbnVsbHB0ciIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fSBlcSAiSFRNTCI7CitwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UpO1xu
IjsKIAogcHJpbnRmIEY8PEVORAogICAgIH07CkBAIC0xMTYwLDQ3ICsxMTU3LDM1IEBAIHN1YiBw
cmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZQogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAK
ICAgICBwcmludCBGICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcbiI7Ci0gICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCJKUyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnkuaFwi
XG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudFdyYXBwZXJGYWN0b3J5LmhcIlxuXG4iOwogCiAgICAgcHJpbnQgRiAiXG4jaWYgJHBhcmFt
ZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlX
aXRofTsKIAogICAgIHByaW50SlNFbGVtZW50SW5jbHVkZXMoJEYpOwotCi0gICAgcHJpbnQgRiAi
XG4jaW5jbHVkZSBcIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lcy5oXCJcblxuIjsKLQogICAg
IHByaW50RWxlbWVudEluY2x1ZGVzKCRGKTsKIAotICAgIHByaW50IEYgIlxuI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD5cbiI7Ci0KLSAgICBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1
ZGVzKCRGLCAxKTsKLQorICAgIHByaW50IEYgIlxuI2luY2x1ZGUgXCIkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9TmFtZXMuaFwiXG4iOwogICAgIHByaW50IEYgPDxFTkQKIAogI2luY2x1ZGUgIkNvbnRl
eHRGZWF0dXJlcy5oIgotI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKLQotI2lm
IEVOQUJMRShWSURFTykKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2VuZGlmCi0KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiBFTkQKIDsKIAotICAgIHByaW50IEYgPDxFTkQKLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci1FTkQK
LTsKKyAgICBwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzKCRGLCAxKTsKIAogICAgIHBy
aW50IEYgPDxFTkQKIAordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOwogCi1FTkQK
LTsKLXByaW50IEYgPDxFTkQKIHR5cGVkZWYgSlNET01XcmFwcGVyKiAoKkNyZWF0ZSRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+KTsK
IAogRU5ECkBAIC0xMjA5LDExICsxMTk0LDE1IEBAIEVORAogICAgIHByaW50V3JhcHBlckZ1bmN0
aW9ucygkRik7CiAKIHByaW50IEYgPDxFTkQKLUpTRE9NV3JhcHBlciogY3JlYXRlSlMkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+
IGVsZW1lbnQpCisKK3N0YXRpYyB2b2lkIHBvcHVsYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdy
YXBwZXJNYXAoSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ3JlYXRlJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+JiBtYXApCiB7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFdURjo6QXRvbWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50V3JhcHBlckZ1bmN0aW9uPiBGdW5jdGlvbk1hcDsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEZ1bmN0aW9uTWFwLCBtYXAsICgpKTsKLSAgICBpZiAobWFwLmlzRW1wdHkoKSkgeworICAg
IHN0cnVjdCBUYWJsZUVudHJ5IHsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZTsK
KyAgICAgICAgQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rp
b24gZnVuY3Rpb247CisgICAgfTsKKworICAgIGNvbnN0IFRhYmxlRW50cnkgdGFibGVbXSA9IHsK
IEVORAogOwogCkBAIC0xMjI4LDkgKzEyMTcsMTAgQEAgRU5ECiAgICAgICAgIH0KIAogICAgICAg
ICBteSAkdWNUYWcgPSAkZW5hYmxlZFRhZ3N7JHRhZ317SlNJbnRlcmZhY2VOYW1lfTsKKwogICAg
ICAgICAjIEZJWE1FIFJlbW92ZSB1bm5lY2Vzc2FyeSAnJicgZnJvbSB0aGUgZm9sbG93aW5nIChw
cmludCkgbGluZSBvbmNlIHdlIHN3aXRjaCB0byBhIG5vbi1icm9rZW4gVmlzdWFsIFN0dWRpbyBj
b21waWxlci4KICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIxMjM1OgotICAgICAgICBwcmludCBGICIgICAgICAgbWFwLnNldCgke3RhZ31UYWcubG9j
YWxOYW1lKCkuaW1wbCgpLCAmY3JlYXRlJHt1Y1RhZ31XcmFwcGVyKTtcbiI7CisgICAgICAgIHBy
aW50IEYgIiAgICAgICAgeyAke3RhZ31UYWcsICZjcmVhdGUke3VjVGFnfVdyYXBwZXIgfSxcbiI7
CiAKICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgcHJpbnQgRiAiI2Vu
ZGlmXG4iOwpAQCAtMTIzOCwyNyArMTIyOCwyNyBAQCBFTkQKICAgICB9CiAKICAgICBwcmludCBG
IDw8RU5ECi0gICAgfQotRU5ECi07CisgICAgfTsKIAotICAgIHByaW50IEYgPDxFTkQKLSAgICBD
cmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVX
cmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0g
ICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKLUVORAotOwotICAgIHByaW50IEYgPDxFTkQK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3Qs
IGVsZW1lbnQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHRhYmxlKTsgKytpKQorICAgICAgICBtYXAuYWRkKHRhYmxlW2ldLm5hbWUubG9jYWxOYW1lKCku
aW1wbCgpLCB0YWJsZVtpXS5mdW5jdGlvbik7Cit9CisKK0pTRE9NV3JhcHBlciogY3JlYXRlSlMk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBl
ckZ1bmN0aW9uPj4gZnVuY3Rpb25zOworICAgIGlmIChmdW5jdGlvbnMuZ2V0KCkuaXNFbXB0eSgp
KQorICAgICAgICBwb3B1bGF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyTWFwKGZ1bmN0
aW9ucy5nZXQoKSk7CisgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBmdW5jdGlvbnMuZ2V0KCkuZ2V0
KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSkpCisgICAgICAgIHJldHVybiBmdW5jdGlvbihl
eGVjLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQpOwogICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQ
RVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAkcGFyYW1ldGVyc3tmYWxsYmFja0pTSW50ZXJmYWNlTmFt
ZX0sIGVsZW1lbnQuZ2V0KCkpOwotRU5ECi07Ci0gICAgcHJpbnQgRiA8PEVORAorfQorCiB9CiBF
TkQKIDsKIAotICAgIHByaW50IEYgIn1cblxuIjsKLSAgICBwcmludCBGICIjZW5kaWZcbiIgaWYg
JHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CisgICAgcHJpbnQgRiAiXG4jZW5kaWZcbiIg
aWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKICAgICBjbG9zZSBGOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA4MzZmOWM2NzI2ZWFiOTZiODUy
YTJlZTJiZjcxMzcwOTY1YTEzYTFlLi5kZGFmMjQ0MTk3N2IxZmViM2U5MDYyOGJiNWQwNTY2YTA4
ZDRiODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtOTM5LDcg
KzkzOSw5IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsK
LSAgICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChuYW1lLCBk
b2N1bWVudCwgMCwgZmFsc2UpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQobmFt
ZSwgKmRvY3VtZW50KTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlSFRNTEVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggZThlOWU5Y2JhZTI5MmRjNzk1M2U4
NjFmN2M4OTkzN2UyNmQ3NDIzYS4uY2Q1MzE5MGVmMTNjMmJiZmI3MmUwZTJmOGQ2YTUzYmQ2ZDI0
YmMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMjkzLDcgKzI5Myw3
IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNU
RVJfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50
RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZS5s
b3dlcigpLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRoaXMsIDAsIGZhbHNlKTsKKyAgICByZXR1cm4g
SFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IG5hbWUubG93ZXIoKSwgeGh0bWxOYW1lc3BhY2VVUkkpLCAqdGhpcyk7CiB9CiAKIHN0YXRpYyB2
b2lkIGFkZExvY2FsTmFtZVRvU2V0KEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZXQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApp
bmRleCBlNzcwNmVkNzE0NjIxYTEyNTVlYmM2NjcyYWVmZTM1NjNiZmI0OTBlLi5mZTg2NTNiMjEz
MTBhY2E0NmNlZDUxM2Q1YTY2Njk3MGVjZjI0MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lCiAgICAg
ICAgIFN0eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1zdGF0aWMgdm9pZCBwb3B1bGF0ZUV2ZW50TmFtZUZv
ckF0dHJpYnV0ZUxvY2FsTmFtZU1hcChIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5n
PiYgbWFwKQorc3RhdGljIHZvaWQgcG9wdWxhdGVFdmVudE5hbWVGb3JBdHRyaWJ1dGVMb2NhbE5h
bWVNYXAoSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPiYgbWFwKQogewog
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0IHNpbXBsZVRhYmxlW10gPSB7CiAgICAgICAg
ICZvbmFib3J0QXR0ciwKQEAgLTI5NywyNCArMjk3LDI0IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRl
RXZlbnROYW1lRm9yQXR0cmlidXRlTG9jYWxOYW1lTWFwKEhhc2hNYXA8QXRvbWljU3RyaW5nLCBB
dG9tCiAgICAgICAgIC8vIGJ5IG5vdCB1c2luZyBwb2ludGVycyBmcm9tIGV2ZW50TmFtZXMoKSwg
c2ltcGxlVGFibGUgY2FuIGJlIGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS4KICAgICAgICAg
QXRvbWljU3RyaW5nIGV2ZW50TmFtZSA9IGF0dHJpYnV0ZU5hbWUuc3RyaW5nKCkuc3Vic3RyaW5n
KDIpOwogCi0gICAgICAgIG1hcC5hZGQoYXR0cmlidXRlTmFtZSwgZXZlbnROYW1lKTsKKyAgICAg
ICAgbWFwLmFkZChhdHRyaWJ1dGVOYW1lLmltcGwoKSwgZXZlbnROYW1lKTsKICAgICB9CiAKICAg
ICBzdHJ1Y3QgQ3VzdG9tTWFwcGluZyB7Ci0gICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0
dHJpYnV0ZU5hbWU7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyogZXZlbnROYW1lOworICAg
ICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lOworICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZTsKICAgICB9OwogCiAgICAgY29uc3QgQ3VzdG9tTWFwcGlu
ZyBjdXN0b21UYWJsZVtdID0gewotICAgICAgICB7ICZvbnRyYW5zaXRpb25lbmRBdHRyLCAmZXZl
bnROYW1lcygpLndlYmtpdFRyYW5zaXRpb25FbmRFdmVudCB9LAotICAgICAgICB7ICZvbndlYmtp
dGFuaW1hdGlvbmVuZEF0dHIsICZldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uRW5kRXZlbnQg
fSwKLSAgICAgICAgeyAmb253ZWJraXRhbmltYXRpb25pdGVyYXRpb25BdHRyLCAmZXZlbnROYW1l
cygpLndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50IH0sCi0gICAgICAgIHsgJm9ud2Via2l0
YW5pbWF0aW9uc3RhcnRBdHRyLCAmZXZlbnROYW1lcygpLndlYmtpdEFuaW1hdGlvblN0YXJ0RXZl
bnQgfSwKLSAgICAgICAgeyAmb253ZWJraXR0cmFuc2l0aW9uZW5kQXR0ciwgJmV2ZW50TmFtZXMo
KS53ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQgfSwKKyAgICAgICAgeyBvbnRyYW5zaXRpb25lbmRB
dHRyLCBldmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50IH0sCisgICAgICAgIHsg
b253ZWJraXRhbmltYXRpb25lbmRBdHRyLCBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uRW5k
RXZlbnQgfSwKKyAgICAgICAgeyBvbndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbkF0dHIsIGV2ZW50
TmFtZXMoKS53ZWJraXRBbmltYXRpb25JdGVyYXRpb25FdmVudCB9LAorICAgICAgICB7IG9ud2Vi
a2l0YW5pbWF0aW9uc3RhcnRBdHRyLCBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uU3RhcnRF
dmVudCB9LAorICAgICAgICB7IG9ud2Via2l0dHJhbnNpdGlvbmVuZEF0dHIsIGV2ZW50TmFtZXMo
KS53ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQgfSwKICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCwgc2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgoY3VzdG9tVGFibGUpOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICBtYXAuYWRkKGN1c3RvbVRhYmxlW2ldLmF0dHJpYnV0ZU5hbWUtPmxvY2Fs
TmFtZSgpLCAqY3VzdG9tVGFibGVbaV0uZXZlbnROYW1lKTsKKyAgICAgICAgbWFwLmFkZChjdXN0
b21UYWJsZVtpXS5hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSwgY3VzdG9tVGFibGVb
aV0uZXZlbnROYW1lKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTMz
NCwxMSArMzM0LDExIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkgewogICAgICAgICAvLyBGSVhN
RTogQ2FuIHdlIGRvIHRoaXMgZXZlbiBmYXN0ZXIgYnkgY2hlY2tpbmcgdGhlIGxvY2FsIG5hbWUg
Im9uIiBwcmVmaXggYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggdGhlIG1hcD8KLSAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbWljU3RyaW5nLCBBdG9taWNTdHJpbmc+
PiBldmVudE5hbWVzR2xvYmFsOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPj4gZXZlbnROYW1lc0dsb2JhbDsKICAg
ICAgICAgYXV0byYgZXZlbnROYW1lcyA9IGV2ZW50TmFtZXNHbG9iYWwuZ2V0KCk7CiAgICAgICAg
IGlmIChldmVudE5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBvcHVsYXRlRXZlbnROYW1l
Rm9yQXR0cmlidXRlTG9jYWxOYW1lTWFwKGV2ZW50TmFtZXMpOwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMuZ2V0KG5hbWUubG9jYWxOYW1lKCkpOwor
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMuZ2V0KG5h
bWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgaWYgKCFldmVudE5hbWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZTNkMTVhM2EzODYxZWM0
ZTBkNGQ2ZGFkZjZhYTY3YTk0NjA5MDFhNy4uYTcyYmYxYmMyYWE4OTE3ZTQyZTczM2I2NWU4YThj
NGEwNjY0ZjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAK
QEAgLTM4Niw3ICszODYsNyBAQCBzdGF0aWMgYm9vbCBpc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiwgdGFnTGlzdCwgKCkpOwogICAgIGlmICh0YWdMaXN0Lmlz
RW1wdHkoKSkgewotICAgICAgICBRdWFsaWZpZWROYW1lKiogdGFncyA9IEhUTUxOYW1lczo6Z2V0
SFRNTFRhZ3MoKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgKiB0YWdzID0g
SFRNTE5hbWVzOjpnZXRIVE1MVGFncygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IEhUTUxOYW1lczo6SFRNTFRhZ3NDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKnRhZ3Nb
aV0gPT0gYmdzb3VuZFRhZwogICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IGNvbW1hbmRU
YWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcAppbmRleCAzMzUwZjBjYTc2YTAyNTQ4NTg0NjlkN2ZjODZjODViZTA4Y2MwMTYzLi44
YTcxMDkzZDM0MmEzZWFkMGFlYjRhOThkMzljZGQyYjk5MWQ1Mzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC01NTAs
NyArNTUwLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3Jl
YXRlSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2sKICAgICAvLyBGSVhNRTogVGhpcyBj
YW4ndCB1c2UgSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUVsZW1lbnQgYmVjYXVzZSB3ZQog
ICAgIC8vIGhhdmUgdG8gcGFzcyB0aGUgY3VycmVudCBmb3JtIGVsZW1lbnQuICBXZSBzaG91bGQg
cmV3b3JrIGZvcm0gYXNzb2NpYXRpb24KICAgICAvLyB0byBvY2N1ciBhZnRlciBjb25zdHJ1Y3Rp
b24gdG8gYWxsb3cgYmV0dGVyIGNvZGUgc2hhcmluZyBoZXJlLgotICAgIFJlZlB0cjxFbGVtZW50
PiBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudCh0YWdOYW1l
LCAmb3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIGZvcm0oKSwgdHJ1ZSk7CisgICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQo
dGFnTmFtZSwgb3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIGZvcm0oKSwgdHJ1ZSk7CiAg
ICAgc2V0QXR0cmlidXRlcyhlbGVtZW50LmdldCgpLCB0b2tlbiwgbV9wYXJzZXJDb250ZW50UG9s
aWN5KTsKICAgICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsKICAgICByZXR1cm4g
ZWxlbWVudC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRl
bnRpZmllci5jcHAKaW5kZXggNmM0OGE2MjcxOTg2NTQ0NGVkMjk3NjM5Mzc4NmE5YjMyOGE4YTNi
OC4uOWUyMWJjYzI4MDdjNjE3MTcwZGRhYzNjMmNhZDhjZGY2MmIyYmRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApAQCAtODcsNyArODcsNyBA
QCBDT01QSUxFX0FTU0VSVChrSFRNTEF0dHJzSW5kZXhPZmZzZXQgPiBIVE1MVGFnc0NvdW50LCBr
SFRNTEF0dHJzSW5kZXhPZmZzZXRfc2hvdQogc3RhdGljIGNvbnN0IFN0cmluZyYgbmFtZUZvcklu
ZGV4KHVuc2lnbmVkIGluZGV4KQogewogICAgIHVuc2lnbmVkIGFkanVzdGVkSW5kZXg7Ci0gICAg
UXVhbGlmaWVkTmFtZSoqIG5hbWVzOworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0ICog
bmFtZXM7CiAgICAgaWYgKGluZGV4IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0KSB7CiAgICAgICAg
IEFTU0VSVChpbmRleCA8IGtIVE1MTmFtZXNJbmRleE9mZnNldCArIEhUTUxUYWdzQ291bnQpOwog
ICAgICAgICBhZGp1c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTE5hbWVzSW5kZXhPZmZzZXQ7CkBA
IC0xMTksNyArMTE5LDcgQEAgY29uc3QgU3RyaW5nSW1wbCogSFRNTElkZW50aWZpZXI6OmFzU3Ry
aW5nSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nLmltcGwoKTsKIH0KIAotdm9pZCBI
VE1MSWRlbnRpZmllcjo6YWRkTmFtZXMoUXVhbGlmaWVkTmFtZSoqIG5hbWVzLCB1bnNpZ25lZCBu
YW1lc0NvdW50LCB1bnNpZ25lZCBpbmRleE9mZnNldCkKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmFk
ZE5hbWVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0ICogbmFtZXMsIHVuc2lnbmVkIG5hbWVz
Q291bnQsIHVuc2lnbmVkIGluZGV4T2Zmc2V0KQogewogICAgIElkZW50aWZpZXJUYWJsZSYgdGFi
bGUgPSBpZGVudGlmaWVyVGFibGUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFt
ZXNDb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcAppbmRleCBkNGVlNjlkMGUyZTczYzdlNTEyZDhhYTViOTI3NzQwNzU2NWYzNDJh
Li4wYmM3YmZmYjI4YWI0NmM2ZGY3YjU4NGE3MmU3MjJhOWFmZGVjOGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTUyNyw3ICs1Mjcs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Nsb3NlV2hlbk5lc3RlZFRhZyhBdG9t
aWNIVE1MVG9rZW4qIHRva2VuKQogCiB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBRdWFs
aWZpZWROYW1lPiBQcmVmaXhlZE5hbWVUb1F1YWxpZmllZE5hbWVNYXA7CiAKLXN0YXRpYyB2b2lk
IG1hcExvd2VyZWRMb2NhbE5hbWVUb05hbWUoUHJlZml4ZWROYW1lVG9RdWFsaWZpZWROYW1lTWFw
KiBtYXAsIFF1YWxpZmllZE5hbWUqKiBuYW1lcywgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyB2b2lk
IG1hcExvd2VyZWRMb2NhbE5hbWVUb05hbWUoUHJlZml4ZWROYW1lVG9RdWFsaWZpZWROYW1lTWFw
KiBtYXAsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0IG5hbWVzW10sIHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gKm5hbWVzW2ldOwpAQCAtNTQzLDggKzU0Myw3IEBA
IHN0YXRpYyB2b2lkIGFkanVzdFNWR1RhZ05hbWVDYXNlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4p
CiAgICAgc3RhdGljIFByZWZpeGVkTmFtZVRvUXVhbGlmaWVkTmFtZU1hcCogY2FzZU1hcCA9IDA7
CiAgICAgaWYgKCFjYXNlTWFwKSB7CiAgICAgICAgIGNhc2VNYXAgPSBuZXcgUHJlZml4ZWROYW1l
VG9RdWFsaWZpZWROYW1lTWFwOwotICAgICAgICBRdWFsaWZpZWROYW1lKiogc3ZnVGFncyA9IFNW
R05hbWVzOjpnZXRTVkdUYWdzKCk7Ci0gICAgICAgIG1hcExvd2VyZWRMb2NhbE5hbWVUb05hbWUo
Y2FzZU1hcCwgc3ZnVGFncywgU1ZHTmFtZXM6OlNWR1RhZ3NDb3VudCk7CisgICAgICAgIG1hcExv
d2VyZWRMb2NhbE5hbWVUb05hbWUoY2FzZU1hcCwgU1ZHTmFtZXM6OmdldFNWR1RhZ3MoKSwgU1ZH
TmFtZXM6OlNWR1RhZ3NDb3VudCk7CiAgICAgfQogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYg
Y2FzZWROYW1lID0gY2FzZU1hcC0+Z2V0KHRva2VuLT5uYW1lKCkpOwpAQCAtNTUzLDE0ICs1NTIs
MTMgQEAgc3RhdGljIHZvaWQgYWRqdXN0U1ZHVGFnTmFtZUNhc2UoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKICAgICB0b2tlbi0+c2V0TmFtZShjYXNlZE5hbWUubG9jYWxOYW1lKCkpOwogfQogCi10
ZW1wbGF0ZTxRdWFsaWZpZWROYW1lKiogZ2V0QXR0cnMoKSwgdW5zaWduZWQgbGVuZ3RoPgordGVt
cGxhdGU8Y29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgKiBnZXRBdHRycygpLCB1bnNpZ25lZCBs
ZW5ndGg+CiBzdGF0aWMgdm9pZCBhZGp1c3RBdHRyaWJ1dGVzKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiB7CiAgICAgc3RhdGljIFByZWZpeGVkTmFtZVRvUXVhbGlmaWVkTmFtZU1hcCogY2FzZU1h
cCA9IDA7CiAgICAgaWYgKCFjYXNlTWFwKSB7CiAgICAgICAgIGNhc2VNYXAgPSBuZXcgUHJlZml4
ZWROYW1lVG9RdWFsaWZpZWROYW1lTWFwOwotICAgICAgICBRdWFsaWZpZWROYW1lKiogYXR0cnMg
PSBnZXRBdHRycygpOwotICAgICAgICBtYXBMb3dlcmVkTG9jYWxOYW1lVG9OYW1lKGNhc2VNYXAs
IGF0dHJzLCBsZW5ndGgpOworICAgICAgICBtYXBMb3dlcmVkTG9jYWxOYW1lVG9OYW1lKGNhc2VN
YXAsIGdldEF0dHJzKCksIGxlbmd0aCk7CiAgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRva2VuLT5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsKQEAgLTU4MSwxMyArNTc5
LDEzIEBAIHN0YXRpYyB2b2lkIGFkanVzdE1hdGhNTEF0dHJpYnV0ZXMoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKICAgICBhZGp1c3RBdHRyaWJ1dGVzPE1hdGhNTE5hbWVzOjpnZXRNYXRoTUxBdHRy
cywgTWF0aE1MTmFtZXM6Ok1hdGhNTEF0dHJzQ291bnQ+KHRva2VuKTsKIH0KIAotc3RhdGljIHZv
aWQgYWRkTmFtZXNXaXRoUHJlZml4KFByZWZpeGVkTmFtZVRvUXVhbGlmaWVkTmFtZU1hcCogbWFw
LCBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgUXVhbGlmaWVkTmFtZSoqIG5hbWVzLCBzaXpl
X3QgbGVuZ3RoKQorc3RhdGljIHZvaWQgYWRkTmFtZXNXaXRoUHJlZml4KFByZWZpeGVkTmFtZVRv
UXVhbGlmaWVkTmFtZU1hcCogbWFwLCBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSogY29uc3QgbmFtZXNbXSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFF1YWxpZmllZE5hbWUq
IG5hbWUgPSBuYW1lc1tpXTsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUg
PSBuYW1lLT5sb2NhbE5hbWUoKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSA9
ICpuYW1lc1tpXTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBuYW1l
LmxvY2FsTmFtZSgpOwogICAgICAgICBBdG9taWNTdHJpbmcgcHJlZml4Q29sb25Mb2NhbE5hbWUg
PSBwcmVmaXggKyAnOicgKyBsb2NhbE5hbWU7Ci0gICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZVdp
dGhQcmVmaXgocHJlZml4LCBsb2NhbE5hbWUsIG5hbWUtPm5hbWVzcGFjZVVSSSgpKTsKKyAgICAg
ICAgUXVhbGlmaWVkTmFtZSBuYW1lV2l0aFByZWZpeChwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZS5u
YW1lc3BhY2VVUkkoKSk7CiAgICAgICAgIG1hcC0+YWRkKHByZWZpeENvbG9uTG9jYWxOYW1lLCBu
YW1lV2l0aFByZWZpeCk7CiAgICAgfQogfQpAQCAtNTk4LDExICs1OTYsOSBAQCBzdGF0aWMgdm9p
ZCBhZGp1c3RGb3JlaWduQXR0cmlidXRlcyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgIGlm
ICghbWFwKSB7CiAgICAgICAgIG1hcCA9IG5ldyBQcmVmaXhlZE5hbWVUb1F1YWxpZmllZE5hbWVN
YXA7CiAKLSAgICAgICAgUXVhbGlmaWVkTmFtZSoqIGF0dHJzID0gWExpbmtOYW1lczo6Z2V0WExp
bmtBdHRycygpOwotICAgICAgICBhZGROYW1lc1dpdGhQcmVmaXgobWFwLCB4bGlua0F0b20sIGF0
dHJzLCBYTGlua05hbWVzOjpYTGlua0F0dHJzQ291bnQpOworICAgICAgICBhZGROYW1lc1dpdGhQ
cmVmaXgobWFwLCB4bGlua0F0b20sIFhMaW5rTmFtZXM6OmdldFhMaW5rQXR0cnMoKSwgWExpbmtO
YW1lczo6WExpbmtBdHRyc0NvdW50KTsKIAotICAgICAgICBhdHRycyA9IFhNTE5hbWVzOjpnZXRY
TUxBdHRycygpOwotICAgICAgICBhZGROYW1lc1dpdGhQcmVmaXgobWFwLCB4bWxBdG9tLCBhdHRy
cywgWE1MTmFtZXM6OlhNTEF0dHJzQ291bnQpOworICAgICAgICBhZGROYW1lc1dpdGhQcmVmaXgo
bWFwLCB4bWxBdG9tLCBYTUxOYW1lczo6Z2V0WE1MQXR0cnMoKSwgWE1MTmFtZXM6OlhNTEF0dHJz
Q291bnQpOwogCiAgICAgICAgIG1hcC0+YWRkKFdURjo6eG1sbnNBdG9tLCBYTUxOU05hbWVzOjp4
bWxuc0F0dHIpOwogICAgICAgICBtYXAtPmFkZCgieG1sbnM6eGxpbmsiLCBRdWFsaWZpZWROYW1l
KHhtbG5zQXRvbSwgeGxpbmtBdG9tLCBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVSSSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDgyYzdjNTc4
YWU2YmE4ODU1NTY4NDVkYWNmNGIwYmM4M2U4NTY4ZGYuLjEzOTYyZjcwMjAwNWJlNmQ5YmIyMWYy
ZmYyM2FkYmYyMDU4NzEzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6Y29weVdlYlZU
VE5vZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9kZSwgQ29udGFpbmVyTgogICAg
IGZvciAoTm9kZSogbm9kZSA9IHdlYlZUVE5vZGUtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9
IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVmUHRyPE5vZGU+IGNsb25lZE5vZGU7
CiAgICAgICAgIGlmIChub2RlLT5pc1dlYlZUVEVsZW1lbnQoKSkKLSAgICAgICAgICAgIGNsb25l
ZE5vZGUgPSB0b1dlYlZUVEVsZW1lbnQobm9kZSktPmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVu
dCgmb3duZXJEb2N1bWVudCgpKTsKKyAgICAgICAgICAgIGNsb25lZE5vZGUgPSB0b1dlYlZUVEVs
ZW1lbnQobm9kZSktPmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChvd25lckRvY3VtZW50KCkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjbG9uZWROb2RlID0gbm9kZS0+Y2xvbmVOb2Rl
KGZhbHNlKTsKICAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChjbG9uZWROb2RlLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRURWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQu
Y3BwCmluZGV4IGUyYzZmY2QxNDRmMjA4ZjQzMmFhZGM5YzA1OTQyMDY5NjVjZmE2N2MuLjdlZTY4
NDQyZmE4YjMwOTAwZWZiNjViOGY3NDFmMzg4NTk3NjgwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcApAQCAtNjgsNTcgKzY4LDU4IEBAIHN0YXRpYyBj
b25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFtZShXZWJWVFROb2RlVHlwZSBub2Rl
VHlwZSkKICAgICB9CiB9CiAKLVdlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQoV2ViVlRUTm9k
ZVR5cGUgbm9kZVR5cGUsIERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEVsZW1lbnQobm9kZVR5
cGVUb1RhZ05hbWUobm9kZVR5cGUpLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKK1dlYlZUVEVs
ZW1lbnQ6OldlYlZUVEVsZW1lbnQoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUsIERvY3VtZW50JiBk
b2N1bWVudCkKKyAgICA6IEVsZW1lbnQobm9kZVR5cGVUb1RhZ05hbWUobm9kZVR5cGUpLCAmZG9j
dW1lbnQsIENyZWF0ZUVsZW1lbnQpCiAgICAgLCBtX2lzUGFzdE5vZGUoMCkKICAgICAsIG1fd2Vi
VlRUTm9kZVR5cGUobm9kZVR5cGUpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4g
V2ViVlRURWxlbWVudDo6Y3JlYXRlKFdlYlZUVE5vZGVUeXBlIG5vZGVUeXBlLCBEb2N1bWVudCog
ZG9jdW1lbnQpCitQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0
ZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViVlRURWxlbWVudChub2RlVHlwZSwgZG9jdW1lbnQpKTsKIH0K
IAogUGFzc1JlZlB0cjxFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0
QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKIHsKLSAgICBSZWZQdHI8V2ViVlRURWxlbWVudD4gY2xv
bmUgPSBjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUp
LCAmZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNsb25lID0gY3JlYXRl
KHN0YXRpY19jYXN0PFdlYlZUVE5vZGVUeXBlPihtX3dlYlZUVE5vZGVUeXBlKSwgZG9jdW1lbnQo
KSk7CiAgICAgY2xvbmUtPnNldExhbmd1YWdlKG1fbGFuZ3VhZ2UpOwogICAgIHJldHVybiBjbG9u
ZTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1
aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBodG1sRWxlbWVudDsKKwog
ICAgIHN3aXRjaCAobV93ZWJWVFROb2RlVHlwZSkgewogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVD
bGFzczoKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlTGFuZ3VhZ2U6CiAgICAgY2FzZSBXZWJWVFRO
b2RlVHlwZVZvaWNlOgotICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6
Y3JlYXRlSFRNTEVsZW1lbnQoSFRNTE5hbWVzOjpzcGFuVGFnLCBkb2N1bWVudCk7Ci0gICAgICAg
IGh0bWxFbGVtZW50LmdldCgpLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0aXRsZUF0dHIsIGdl
dEF0dHJpYnV0ZSh2b2ljZUF0dHJpYnV0ZU5hbWUoKSkpOwotICAgICAgICBodG1sRWxlbWVudC5n
ZXQoKS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6bGFuZ0F0dHIsIGdldEF0dHJpYnV0ZShsYW5n
QXR0cmlidXRlTmFtZSgpKSk7CisgICAgICAgIGh0bWxFbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0
b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6c3BhblRhZywgZG9jdW1lbnQpOworICAgICAg
ICBodG1sRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6dGl0bGVBdHRyLCBnZXRBdHRy
aWJ1dGUodm9pY2VBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAgICAgaHRtbEVsZW1lbnQtPnNldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OmxhbmdBdHRyLCBnZXRBdHRyaWJ1dGUobGFuZ0F0dHJpYnV0ZU5h
bWUoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlSXRhbGljOgot
ICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlSFRNTEVsZW1l
bnQoSFRNTE5hbWVzOjppVGFnLCBkb2N1bWVudCk7CisgICAgICAgIGh0bWxFbGVtZW50ID0gSFRN
TEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6aVRhZywgZG9jdW1lbnQp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQm9sZDoKLSAgICAgICAg
aHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KEhUTUxO
YW1lczo6YlRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50
RmFjdG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OmJUYWcsIGRvY3VtZW50KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZVVuZGVybGluZToKLSAgICAgICAgaHRt
bEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KEhUTUxOYW1l
czo6dVRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50RmFj
dG9yeTo6Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OnVUYWcsIGRvY3VtZW50KTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZVJ1Ynk6Ci0gICAgICAgIGh0bWxFbGVtZW50
ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVIVE1MRWxlbWVudChIVE1MTmFtZXM6OnJ1YnlU
YWcsIGRvY3VtZW50KTsKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6
OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjpydWJ5VGFnLCBkb2N1bWVudCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVSdWJ5VGV4dDoKLSAgICAgICAgaHRtbEVsZW1l
bnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUhUTUxFbGVtZW50KEhUTUxOYW1lczo6cnRU
YWcsIGRvY3VtZW50KTsKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6
OmNyZWF0ZUVsZW1lbnQoSFRNTE5hbWVzOjpydFRhZywgZG9jdW1lbnQpOwogICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAK
LSAgICBodG1sRWxlbWVudC5nZXQoKS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRy
LCBnZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsKLSAgICByZXR1cm4gaHRtbEVs
ZW1lbnQ7CisgICAgQVNTRVJUKGh0bWxFbGVtZW50KTsKKyAgICBpZiAoaHRtbEVsZW1lbnQpCisg
ICAgICAgIGh0bWxFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsIGZh
c3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAgICByZXR1cm4gaHRtbEVs
ZW1lbnQucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmluZGV4IDc1MzA0OWM3YmZlYWRkM2U3NTIz
NmY2MDU1NTYzNDBjMmRlZTE4ZmUuLmY1MTc3YjI1ZThjM2EwNzY3OTQ1NmE0MzMzNjU3ZTExZmNk
MTAyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCkBAIC00
Myw5ICs0Myw4IEBAIGVudW0gV2ViVlRUTm9kZVR5cGUgewogCiBjbGFzcyBXZWJWVFRFbGVtZW50
IEZJTkFMIDogcHVibGljIEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlZUVEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBXZWJWVFROb2RlVHlwZSwgRG9jdW1lbnQqKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWVFRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRl
RXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFdlYlZUVE5vZGVUeXBlLCBEb2N1bWVudCYpOwor
ICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChE
b2N1bWVudCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBPVkVSUklERTsKIApAQCAtNzIsOCArNzEs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFdlYlZUVEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgV2ViVlRURWxlbWVudChXZWJWVFROb2Rl
VHlwZSwgRG9jdW1lbnQqKTsKKyAgICBXZWJWVFRFbGVtZW50KFdlYlZUVE5vZGVUeXBlLCBEb2N1
bWVudCYpOwogCiAgICAgdW5zaWduZWQgbV9pc1Bhc3ROb2RlIDogMTsKICAgICB1bnNpZ25lZCBt
X3dlYlZUVE5vZGVUeXBlIDogNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmNwcAppbmRleCA1YzIwNmJhYWQ4YzQzZDhhMWZmODhiMDE1ZTdhZmY5ZmUxOTEzMzVkLi44
NDM3ZWM0NzYyNWY3YzQ5ZTY3ZjQ4OGFmOTk3MDY4YjJjOWQyZmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBX
ZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgICAgICBSZWZQdHI8V2ViVlRURWxlbWVudD4gY2hpbGQ7CiAgICAgICAgIFdlYlZUVE5vZGVU
eXBlIG5vZGVUeXBlID0gdG9rZW5Ub05vZGVUeXBlKG1fdG9rZW4pOwogICAgICAgICBpZiAobm9k
ZVR5cGUgIT0gV2ViVlRUTm9kZVR5cGVOb25lKQotICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRF
bGVtZW50OjpjcmVhdGUobm9kZVR5cGUsIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNoaWxkID0g
V2ViVlRURWxlbWVudDo6Y3JlYXRlKG5vZGVUeXBlLCAqZG9jdW1lbnQpOwogICAgICAgICBpZiAo
Y2hpbGQpIHsKICAgICAgICAgICAgIGlmIChtX3Rva2VuLmNsYXNzZXMoKS5zaXplKCkgPiAwKQog
ICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJp
bmcobV90b2tlbi5jbGFzc2VzKCkpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>