<?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>203181</bug_id>
          
          <creation_ts>2019-10-19 08:33:54 -0700</creation_ts>
          <short_desc>imported/w3c/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html is flaky</short_desc>
          <delta_ts>2019-10-22 00:23:13 -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>Tools / Tests</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581694</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-10-19 08:33:54 -0700</bug_when>
    <thetext>The following layout test is flaky on iOS (debug/release) and linux.

imported/w3c/web-platform-tests/clipboard-apis/async-navigator-clipboard-basics.https.html

Flakiness Dashboard:

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=imported%2Fw3c%2Fweb-platform-tests%2Fclipboard-apis%2Fasync-navigator-clipboard-basics.https.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581695</commentid>
    <comment_count>1</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-10-19 08:35:29 -0700</bug_when>
    <thetext>This test failed on clean tree (run-layout-tests-without-patch step) in https://ews-build.webkit.org/#/builders/24/builds/2042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581785</commentid>
    <comment_count>2</comment_count>
      <attachid>381396</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-20 17:58:21 -0700</bug_when>
    <thetext>Created attachment 381396
Fixes the test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582018</commentid>
    <comment_count>3</comment_count>
      <attachid>381447</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-21 13:55:05 -0700</bug_when>
    <thetext>Created attachment 381447
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582102</commentid>
    <comment_count>4</comment_count>
      <attachid>381447</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-21 15:59:20 -0700</bug_when>
    <thetext>Comment on attachment 381447
Fix GTK/WPE builds

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

Since change count is a Cocoa specific concept, we need to hide that from the platform agnostic code. Perhaps something like PasteboardToken.

&gt; Source/WebCore/Modules/async-clipboard/Clipboard.h:70
&gt; -        int changeCount;
&gt; +        long changeCount;

Can we use uint32_t or uint64_t to be more explicit about the width of this count?
Also, changeCount is cocoa specific concept.
It probably doesn&apos;t belong in this platform agnostic class not that we should fix it in this patch.

&gt; Source/WebCore/platform/Pasteboard.h:325
&gt; +    long m_changeCount { 0 };
&gt; +

I don&apos;t think this change makes sense. The concept of change count doesn&apos;t exist in platforms like Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582106</commentid>
    <comment_count>5</comment_count>
      <attachid>381447</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-21 16:03:06 -0700</bug_when>
    <thetext>Comment on attachment 381447
Fix GTK/WPE builds

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

Thanks for the review!

&gt;&gt; Source/WebCore/Modules/async-clipboard/Clipboard.h:70
&gt;&gt; +        long changeCount;
&gt; 
&gt; Can we use uint32_t or uint64_t to be more explicit about the width of this count?
&gt; Also, changeCount is cocoa specific concept.
&gt; It probably doesn&apos;t belong in this platform agnostic class not that we should fix it in this patch.

Good point. This should be a int64_t, to match macOS/iOS — I’ll change it to that.

I’ll also refactor changeCount out of platform-agnostic code in a followup.

&gt;&gt; Source/WebCore/platform/Pasteboard.h:325
&gt;&gt; +
&gt; 
&gt; I don&apos;t think this change makes sense. The concept of change count doesn&apos;t exist in platforms like Windows.

Okay — I’ll undo this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582216</commentid>
    <comment_count>6</comment_count>
      <attachid>381499</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-21 19:16:47 -0700</bug_when>
    <thetext>Created attachment 381499
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582217</commentid>
    <comment_count>7</comment_count>
      <attachid>381500</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-21 19:29:48 -0700</bug_when>
    <thetext>Created attachment 381500
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582266</commentid>
    <comment_count>8</comment_count>
      <attachid>381500</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-22 00:22:27 -0700</bug_when>
    <thetext>Comment on attachment 381500
Fix GTK/WPE builds

Clearing flags on attachment: 381500

Committed r251421: &lt;https://trac.webkit.org/changeset/251421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582267</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-22 00:22:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582268</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-22 00:23:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/56491382&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381396</attachid>
            <date>2019-10-20 17:58:21 -0700</date>
            <delta_ts>2019-10-21 13:55:04 -0700</delta_ts>
            <desc>Fixes the test</desc>
            <filename>bug-203181-20191020175820.patch</filename>
            <type>text/plain</type>
            <size>40315</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhlN2NlMzIyMzIwOGVm
NDE3M2YwZGIxYzlmZTIzZjIzMzE3N2IxMS4uOTE5NzhjODEyN2UzMmI4NTAyOTAzMTEzMzY0YjM4
YWZmMDkzZDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE5LTEwLTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY2xpcGJvYXJkLWFwaXMvYXN5bmMtbmF2aWdhdG9yLWNsaXBi
b2FyZC1iYXNpY3MuaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB0ZXN0IGlzIGZsYWt5IGJlY2F1c2UgaXRzIHJl
c3VsdHMgY3VycmVudGx5IHZhcnkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgY29udGVudCBhbHJlYWR5
IGV4aXN0cyBvbiB0aGUKKyAgICAgICAgcGxhdGZvcm0gcGFzdGVib2FyZC4gSW4gdGhpcyB0ZXN0
LCB0aGUgcGFnZSBpcyBhYmxlIHRvIHJlYWQgaXRlbXMgZnJvbSB0aGUgY2xpcGJvYXJkIHNpbmNl
IERPTSBwYXN0ZSBhbmQKKyAgICAgICAgcHJvZ3JhbW1hdGljIGNsaXBib2FyZCBhY2Nlc3MgYXJl
IGVuYWJsZWQgd2hlbiBydW5uaW5nIGxheW91dCB0ZXN0cy4gSG93ZXZlciwgaW4gdGhlIGNhc2Ug
d2hlcmUgdGhlIHBhc3RlYm9hcmQKKyAgICAgICAgaXMgZW1wdHksIHdlIGVuZCB1cCByZWplY3Rp
bmcgdGhlIHByb21pc2UgZHVlIHRvIGFuIGVhcmx5IHJldHVybiBpbiBDbGlwYm9hcmQ6OnJlYWQo
KS4gSW4gY29udHJhc3QsIHdoZW4gdGhlCisgICAgICAgIHBhc3RlYm9hcmQgaGFzIGF0IGxlYXN0
IG9uZSBpdGVtLCB3ZSdsbCBlbmQgdXAgcmVzb2x2aW5nIHRoZSBwcm9taXNlIHdpdGggYSBzZXF1
ZW5jZSBvZiBDbGlwYm9hcmRJdGVtcywgd2hpY2gKKyAgICAgICAgdGhlbiBjYXVzZXMgdGhlIHRl
c3QgdG8gZmFpbCBiZWNhdXNlIGl0IGV4cGVjdHMgdGhpcyByZXN1bHQgdG8gYmUgYSBEYXRhVHJh
bnNmZXIgaW5zdGVhZCAod2hpY2gsIGF0IHRpbWUgb2YKKyAgICAgICAgd3JpdGluZywgaXMgaW5j
b3JyZWN0IHcuci50LiB0aGUgYXN5bmMgY2xpcGJvYXJkIHNwZWMpLgorCisgICAgICAgIFRvIGZp
eCB0aGlzLCB3ZSByZW1vdmUgdGhpcyBlYXJseSByZXR1cm4gdGhhdCByZWplY3RzIHRoZSBwcm9t
aXNlIHdoZW4gdGhlcmUgYXJlIG5vIHBhc3RlYm9hcmQgaXRlbXMsIGFuZAorICAgICAgICBpbnN0
ZWFkIGFsbG93IHRoZSBwcm9taXNlIHRvIHJlc29sdmUgd2l0aCBubyBpdGVtcy4gSG93ZXZlciwg
c2ltcGx5IHJlbW92aW5nIHRoaXMgY2hlY2sgd291bGQgbWVhbiB0aGF0IGlmIHRoZQorICAgICAg
ICBwYXN0ZWJvYXJkIGNoYW5nZSBjb3VudCBjaGFuZ2VzIGJldHdlZW4gdGhlIHN0YXJ0IG9mIHRo
ZSBjYWxsIHRvIENsaXBib2FyZC5yZWFkKCkgYW5kIHJldHJpZXZhbCBvZiBpdGVtCisgICAgICAg
IGluZm9ybWF0aW9uIGZyb20gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQsIHdlJ2xsIG5vIGxvbmdl
ciByZWplY3QgdGhlIHByb21pbXNlIGFzIGV4cGVjdGVkLiBUaGlzIGlzIGJlY2F1c2Ugd2UKKyAg
ICAgICAgY3VycmVudGx5IGl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9mIHRoZSBpdGVtcyBhbmQgY2hl
Y2sgdGhhdCB0aGUgaXRlbSdzIGNoYW5nZSBjb3VudCBtYXRjaGVzLCBzbyBpZiB0aGVyZSBhcmUg
bm8KKyAgICAgICAgaXRlbXMsIHdlIHNpbXBseSBhdm9pZCBjaGVja2luZyB0aGUgY2hhbmdlIGNv
dW50LgorCisgICAgICAgIFdlIGFkZHJlc3MgdGhpcyBieSBpbnN0ZWFkIHNlbmRpbmcgdGhlIGV4
cGVjdGVkIGNoYW5nZSBjb3VudCBhbG9uZyB3aXRoIHRoZSByZXF1ZXN0IGZvciBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oKSwKKyAgICAgICAgYW5kIHJlZmFjdG9yaW5nIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8gKGFuZCBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KSB0byBpbnN0ZWFkIGNoZWNrCisgICAgICAgIHRoaXMgZXhwZWN0ZWQgY2hhbmdlIGNvdW50IGFn
YWluc3QgdGhlIGN1cnJlbnQgY2hhbmdlIGNvdW50IG9mIHRoZSBwYXN0ZWJvYXJkLgorCisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZDo6cmVhZCk6CisKKyAgICAgICAgUmVtb3ZlIHRoZSBgYWxsSW5mby5p
c0VtcHR5KClgIGVhcmx5IHJldHVybiwgYW5kIGFsc28gcmVtb3ZlIGEgRklYTUUgdGhhdCBpcyBh
ZGRyZXNzZWQgYnkgdGhpcyByZWZhY3RvcmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJ
dGVtSW5mbyBjb25zdCk6CisKKyAgICAgICAgTWFrZSB0aGVzZSBtZXRob2RzIHJlcXVpcmUgYSBj
aGFuZ2VDb3VudDsgYWxzbywgbWFrZSB0aGVzZSByZXR1cm4gb3B0aW9uYWwgcmVzdWx0cy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkSXRlbUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbzo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVj
b2RlKToKKworICAgICAgICBSZW1vdmUgUGFzdGVib2FyZEl0ZW1JbmZvJ3MgY2hhbmdlQ291bnQs
IG5vdyB0aGF0IHRoZSBjaGVjayBvY2N1cnMgaW4gdGhlIGNsaWVudCBsYXllci4KKworICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmZpbGVDb250ZW50U3RhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6cmVhZEZpbGVQYXRocyk6CisKKyAgICAgICAgUmVmYWN0b3IgdGhlc2UgbWV0aG9kcyB0
byBiYWlsIHdoZW4gdGhlIHJlc3VsdGluZyBpdGVtIGluZm9ybWF0aW9uIGhhcyBubyB2YWx1ZSAo
aS5lLiBXVEY6Om51bGxvcHQpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKwogMjAx
OS0xMC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ2xpcGJvYXJkIEFQSV0gSW1wbGVtZW50IENsaXBib2FyZEl0ZW0uZ2V0VHlwZSgpIGZvciBw
bGF0Zm9ybSBjbGlwYm9hcmQgaXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDExZTFjYmFkZmZiNmJlOWY0NDk4
MTY3Zjk4OTM0MjlkYzQ3MDFiYi4uZDYyZGY1OTQwMjY1MjFmNTNkYmU4N2NhN2YwYTgxNjU0OWM1
MGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0xMC0yMCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2NsaXBib2FyZC1hcGlzL2FzeW5jLW5hdmlnYXRvci1jbGlwYm9hcmQtYmFz
aWNzLmh0dHBzLmh0bWwgaXMgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzE4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIGNoYW5nZUNvdW50IGFyZ3VtZW50IHRvIGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXggYW5kIGFsbFBhc3RlYm9hcmRJdGVtSW5mbywgYW5kIGFsc28gbWFrZSB0
aGVuIHJldHVybgorICAgICAgICBvcHRpb25hbCB2YWx1ZXMuIFNlZSBXZWJDb3JlIENoYW5nZUxv
ZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQ
cm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorCiAyMDE5
LTEwLTE5ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBGaXggbm9uLXVuaWZpZWQgYnVpbGRzIGFmdGVyIHIyNTA4NTcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA3MzY1OTJkNTJmZGE5ODNkZGYxNmQxMjUyYWVh
M2I5NDE1MDU2YjgxLi45ZDVmNjZmNDZlNmRjMTU0MWI5MzAyN2I3YThmZTYyN2RhZTE2NTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMTAtMjAg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jbGlwYm9hcmQtYXBpcy9hc3luYy1uYXZpZ2F0b3It
Y2xpcGJvYXJkLWJhc2ljcy5odHRwcy5odG1sIGlzIGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjaGFuZ2VDb3VudCBhcmd1bWVudCB0
byBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4IGFuZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8sIGFu
ZCBhbHNvIG1ha2UgdGhlbiByZXR1cm4KKyAgICAgICAgb3B0aW9uYWwgdmFsdWVzLiBTZWUgV2Vi
Q29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisKIDIwMTktMTAtMTcgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJld29yayBmcm9u
dGVuZCBhZ2VudCBjb25zdHJ1Y3Rpb24gdG8gYWxsb3cgY29tbWFuZHMvZXZlbnRzIHRvIGJlIGNv
bnRyb2xsZWQgYnkgdGhlIHJlbGF0ZWQgdGFyZ2V0J3MgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKaW5kZXggOWI5NDll
NWM3YjljZmEyZTFiZmE2MjYwMmJlNDZhZDY3YjJkNDFiNC4uOTliNWMzNjAxYjMwNDU2OWRkYmU0
MjFhNzNiYjJmNzlhZDZhOGMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQ2xp
cGJvYXJkOjpyZWFkKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICB9CiAKICAg
ICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsK
LSAgICBpbnQgY2hhbmdlQ291bnRBdFN0YXJ0ID0gcGFzdGVib2FyZC0+Y2hhbmdlQ291bnQoKTsK
KyAgICBhdXRvIGNoYW5nZUNvdW50QXRTdGFydCA9IHBhc3RlYm9hcmQtPmNoYW5nZUNvdW50KCk7
CiAKICAgICBpZiAoIWZyYW1lLT5yZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoKSkgewogICAgICAgICBy
ZWplY3RQcm9taXNlQW5kQ2xlYXJBY3RpdmVTZXNzaW9uKCk7CkBAIC0xMDMsMjMgKzEwMywxNSBA
QCB2b2lkIENsaXBib2FyZDo6cmVhZChSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAK
ICAgICBpZiAoIW1fYWN0aXZlU2Vzc2lvbiB8fCBtX2FjdGl2ZVNlc3Npb24tPmNoYW5nZUNvdW50
ICE9IGNoYW5nZUNvdW50QXRTdGFydCkgewogICAgICAgICBhdXRvIGFsbEluZm8gPSBwYXN0ZWJv
YXJkLT5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKLSAgICAgICAgaWYgKGFsbEluZm8uaXNFbXB0
eSgpKSB7CisgICAgICAgIGlmICghYWxsSW5mbykgewogICAgICAgICAgICAgcmVqZWN0UHJvbWlz
ZUFuZENsZWFyQWN0aXZlU2Vzc2lvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgVmVjdG9yPFJlZjxDbGlwYm9hcmRJdGVtPj4gY2xpcGJvYXJkSXRlbXM7Ci0g
ICAgICAgIGNsaXBib2FyZEl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYWxsSW5mby5zaXpl
KCkpOwotICAgICAgICBmb3IgKGF1dG8mIGl0ZW1JbmZvIDogYWxsSW5mbykgewotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgc3VjaCB0aGF0IHRoZSBpbml0
aWFsIGNoYW5nZUNvdW50IGlzIGRlbGl2ZXJlZCB0byB0aGUgY2xpZW50LCB3aGVyZSBpdCBpcyB0
aGVuIGNoZWNrZWQKLSAgICAgICAgICAgIC8vIGFnYWluc3QgdGhlIGN1cnJlbnQgY2hhbmdlQ291
bnQgb2YgdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQuIEZvciBpbnN0YW5jZSwgaW4gV2ViS2l0Miwg
dGhpcyB3b3VsZCByZWxvY2F0ZSB0aGUgY2hhbmdlQ291bnQKLSAgICAgICAgICAgIC8vIGNoZWNr
IHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YgdGhlIHdlYiBjb250ZW50IHByb2Nlc3MuCi0g
ICAgICAgICAgICBpZiAoaXRlbUluZm8uY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnRBdFN0YXJ0
KSB7Ci0gICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZUFuZENsZWFyQWN0aXZlU2Vzc2lvbigp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgY2xpcGJv
YXJkSXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhbGxJbmZvLT5zaXplKCkpOworICAgICAg
ICBmb3IgKGF1dG8mIGl0ZW1JbmZvIDogKmFsbEluZm8pCiAgICAgICAgICAgICBjbGlwYm9hcmRJ
dGVtcy51bmNoZWNrZWRBcHBlbmQoQ2xpcGJvYXJkSXRlbTo6Y3JlYXRlKCp0aGlzLCBpdGVtSW5m
bykpOwotICAgICAgICB9CiAgICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9IHt7IFdURk1vdmUocGFz
dGVib2FyZCksIFdURk1vdmUoY2xpcGJvYXJkSXRlbXMpLCBjaGFuZ2VDb3VudEF0U3RhcnQgfX07
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZC5oCmluZGV4IDg3YWU1N2FjODQwZTc3YTA3ZTdlOTFmNjAxMzEzMmEwMzU2MmMx
NGQuLjEwNjA4NWExOGQ4NTM4NDQ5NGRmZjExY2JkMTA4OWQ3ZDc0OTNmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCkBAIC02
Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFNlc3Npb24gewogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFzdGVib2FyZDsKICAgICAgICAgVmVjdG9yPFJlZjxD
bGlwYm9hcmRJdGVtPj4gaXRlbXM7Ci0gICAgICAgIGludCBjaGFuZ2VDb3VudDsKKyAgICAgICAg
bG9uZyBjaGFuZ2VDb3VudDsKICAgICB9OwogCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXgg
ZDA3YTVmYWUwNjU2ODc4NjZmNmFmMGJiODI0NDQzM2UzNzgxZGE4Mi4uYjc0ZWUyZjAyNTRjNjU5
MjFkNjc0MjM4MGZmNGU3OGUyZDI0ODI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5jcHAKQEAgLTYyLDE3ICs2MiwxNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpy
ZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJpbmcmIHR5cGUpCiAKICNlbmRpZgogCi1WZWN0b3I8UGFz
dGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25z
dAorT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBh
c3RlYm9hcmRJdGVtSW5mbygpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4g
c3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCkpOwotICAgIHJldHVybiB7IH07
CisgICAgICAgIHJldHVybiBzdHJhdGVneS0+YWxsUGFzdGVib2FyZEl0ZW1JbmZvKG5hbWUoKSwg
bV9jaGFuZ2VDb3VudCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotUGFzdGVib2Fy
ZEl0ZW1JbmZvIFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNv
bnN0CitPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJ
dGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1
cm4gc3RyYXRlZ3ktPmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSk7Cisg
ICAgICAgIHJldHVybiBzdHJhdGVneS0+aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwg
bmFtZSgpLCBtX2NoYW5nZUNvdW50KTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggM2JjZGQ4MjM1YzNkYTE5NTdlMTNmMjQ5NGJhOWZk
YzRjZGUxZWNlYS4uODhkMWJkZDdlYTRkMmE5ODAwMTQ3NTJlNTRkYzY5YjZlNGNiYTI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjczLDggKzI3Myw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYsIGNvbnN0IFVSTCYp
OyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogI2VuZGlmCiAKLSAgICBWZWN0b3I8UGFz
dGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKLSAgICBQYXN0
ZWJvYXJkSXRlbUluZm8gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7Cisg
ICAgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVt
SW5mbygpIGNvbnN0OworICAgIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2Fy
ZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7
CkBAIC0zMTgsMTAgKzMxOCwxMSBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgU3RyaW5nIG1fcGFzdGVib2FyZE5hbWU7Ci0gICAgbG9uZyBtX2NoYW5nZUNvdW50OwogICAg
IE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBtX2N1c3RvbURhdGFDYWNoZTsKICNlbmRp
ZgogCisgICAgbG9uZyBtX2NoYW5nZUNvdW50IHsgMCB9OworCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFZlY3RvcjxTdHJpbmc+IG1fcHJvbWlzZWRGaWxlUGF0aHM7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKaW5kZXggM2IzOTdjMzczNGQz
MmEwZmI2MGU3MDMxZWY5ZDBiYzVhYjQ4MzJjMS4uMDllZThmOTc2ODIxMzkyN2U4ZjNjNTU4ZTNj
OTA2NWI1Y2I0NmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEl0ZW1JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0
ZW1JbmZvLmgKQEAgLTczLDcgKzczLDYgQEAgc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbyB7CiAg
ICAgYm9vbCBpc05vblRleHRUeXBlIHsgZmFsc2UgfTsKICAgICBib29sIGNvbnRhaW5zRmlsZVVS
TEFuZEZpbGVVcGxvYWRDb250ZW50IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8U3RyaW5nPiB3ZWJT
YWZlVHlwZXNCeUZpZGVsaXR5OwotICAgIGludCBjaGFuZ2VDb3VudCB7IDAgfTsKICAgICBQYXN0
ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlIHsg
UGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6VW5zcGVjaWZpZWQgfTsKIAogICAgIFN0
cmluZyBwYXRoRm9yQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApAQCAtMTI3
LDcgKzEyNiw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm8gewogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgUGFzdGVib2FyZEl0ZW1JbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9y
bVR5cGVzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eSA8PCBzdWdnZXN0
ZWRGaWxlTmFtZSA8PCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplIDw8IGlzTm9uVGV4dFR5cGUg
PDwgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgPDwgd2ViU2FmZVR5cGVzQnlG
aWRlbGl0eSA8PCBjaGFuZ2VDb3VudDsKKyAgICBlbmNvZGVyIDw8IHBhdGhzRm9yRmlsZVVwbG9h
ZCA8PCBwbGF0Zm9ybVR5cGVzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVzQnlGaWRlbGl0
eSA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplIDw8IGlz
Tm9uVGV4dFR5cGUgPDwgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgPDwgd2Vi
U2FmZVR5cGVzQnlGaWRlbGl0eTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGUpOwogfQogCkBAIC0xNTksOSArMTU4LDYgQEAgT3B0aW9uYWw8UGFzdGVi
b2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkSXRlbUluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlNhZmVUeXBlc0J5RmlkZWxpdHkp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuY2hhbmdlQ291bnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCA2MTYyOTQyZjczY2JiYTIyMWUyMDE5
ZTJiOTc3YjIwMTVhODE1NmRkLi43ZjU1OGMxNTQxYjgxMGIxMmEzNmQzNTJjY2ZkNmUzNTNlOTA2
MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApA
QCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0
dWFsIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgVmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGxvbmcgY2hhbmdlQ291bnQpID0gMDsKKyAgICB2aXJ0dWFs
IE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgbG9uZyBjaGFuZ2VDb3VudCkgPSAwOwog
ICAgIHZpcnR1YWwgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZl
Rm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKaW5kZXggZmYwMzRlNzE3YTc3YjFiNjQ0MTYxNGFiNjMwYjBiZmVlNDc5ZTVl
OS4uZGM1MTA0ZGRkOTM0NGVjNGViZDc1NTNkYTczMzk1YjUxNmQ5NzQ2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTYyLDggKzYyLDggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtUGFzdGVib2FyZCgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcyk7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJv
YXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbygpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5m
bz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGxvbmcgY2hhbmdlQ291
bnQpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUlu
Zm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8obG9uZyBjaGFuZ2VDb3VudCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFN0cmluZyB1bmlxdWVOYW1lKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRv
UmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggMTY2MzY5YmY3ZGI4ZGIx
MjdkNDllNDdhZmM5ZDFmNmQ0YjliYWRmMS4uNDZlYmVhMDQzZTVlMjdlYjFiODFmZjlkNmUwOWIx
ODNlZWZiYjZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQpAQCAtMTQ0LDcgKzE0NCwxMCBAQCBQYXN0ZWJvYXJkOjpGaWxlQ29udGVu
dFN0YXRlIFBhc3RlYm9hcmQ6OmZpbGVDb250ZW50U3RhdGUoKQogICAgICAgICAvLyBhbiBpbmxp
bmUgcGllY2Ugb2YgdGV4dCwgd2l0aCBubyBmaWxlcyBpbiB0aGUgcGFzdGVib2FyZCAoYW5kIHRo
ZXJlZm9yZSwgbm8gcmlzayBvZiBsZWFraW5nIGZpbGUgcGF0aHMKICAgICAgICAgLy8gdG8gd2Vi
IGNvbnRlbnQpLiBJbiBjYXNlcyBzdWNoIGFzIHRoZXNlLCB3ZSBzaG91bGQgbm90IHN1cHByZXNz
IERhdGFUcmFuc2ZlciBhY2Nlc3MuCiAgICAgICAgIGF1dG8gaXRlbXMgPSBhbGxQYXN0ZWJvYXJk
SXRlbUluZm8oKTsKLSAgICAgICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGl0ZW1zLnNpemUoKSAh
PSAxIHx8IG5vdEZvdW5kICE9IGl0ZW1zLmZpbmRNYXRjaGluZyhbXSAoYXV0byYgaXRlbSkgewor
ICAgICAgICBpZiAoIWl0ZW1zKQorICAgICAgICAgICAgcmV0dXJuIEZpbGVDb250ZW50U3RhdGU6
Ok5vRmlsZU9ySW1hZ2VEYXRhOworCisgICAgICAgIG1heUNvbnRhaW5GaWxlUGF0aHMgPSBpdGVt
cy0+c2l6ZSgpICE9IDEgfHwgbm90Rm91bmQgIT0gaXRlbXMtPmZpbmRNYXRjaGluZyhbXSAoYXV0
byYgaXRlbSkgewogICAgICAgICAgICAgcmV0dXJuIGl0ZW0uY2FuQmVUcmVhdGVkQXNBdHRhY2ht
ZW50T3JGaWxlKCkgfHwgaXRlbS5pc05vblRleHRUeXBlIHx8IGl0ZW0uY29udGFpbnNGaWxlVVJM
QW5kRmlsZVVwbG9hZENvbnRlbnQ7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0K
aW5kZXggMzQ5NTQzM2VhY2U5NjhiNjM2MmY2ZTU2YzQ0Y2Q1ODgzM2RhZWJjNS4uMTQ2ODAwOWEw
ZWRiMDYzNzFlNmY4MDE5OGViZjIzNGQxNWNmZTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTI4
LDE1ICsyOCwyNyBAQAogCiAjaW1wb3J0ICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKIAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0ICJBYnN0cmFjdFBhc3RlYm9hcmQuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IFBs
YXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkKK09wdGlvbmFsPFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhsb25nIGNoYW5nZUNvdW50KQogeworICAgIGlmIChjaGFuZ2VDb3VudCAhPSBbbV9w
YXN0ZWJvYXJkIGNoYW5nZUNvdW50XSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwog
ICAgIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGl0ZW1JbmZvOwogICAgIGludCBudW1iZXJP
Zkl0ZW1zID0gY291bnQoKTsKICAgICBpdGVtSW5mby5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51
bWJlck9mSXRlbXMpOwotICAgIGZvciAoTlNJbnRlZ2VyIGl0ZW1JbmRleCA9IDA7IGl0ZW1JbmRl
eCA8IG51bWJlck9mSXRlbXM7ICsraXRlbUluZGV4KQotICAgICAgICBpdGVtSW5mby51bmNoZWNr
ZWRBcHBlbmQoaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpdGVtSW5kZXgpKTsKKyAgICBmb3Ig
KE5TSW50ZWdlciBpdGVtSW5kZXggPSAwOyBpdGVtSW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2l0
ZW1JbmRleCkgeworICAgICAgICBhdXRvIGl0ZW0gPSBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGl0ZW1JbmRleCwgY2hhbmdlQ291bnQpOworICAgICAgICBpZiAoIWl0ZW0pCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGl0ZW1JbmZvLnVuY2hlY2tlZEFwcGVu
ZChXVEZNb3ZlKCppdGVtKSk7CisgICAgfQogICAgIHJldHVybiBpdGVtSW5mbzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCBlZDJmMGUz
YTAyYmY1ODBmMjcyMWM1OTk2NjI4MjdlY2UxYmZhM2NjLi4yNzRmMWM1MDA2NzQ5N2EyMzc3MTll
OTliMDM2NDVjNmQ3ZDc1ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQpAQCAtMzEzLDEzICszMTMsMTYgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9s
aWMKICAgICAgICAgaWYgKGl0ZW1JbmRleCAmJiBpICE9ICppdGVtSW5kZXgpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGksIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBhdXRvIGluZm8gPSBz
dHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGksIG1fcGFzdGVib2FyZE5hbWUsIG1f
Y2hhbmdlQ291bnQpOworICAgICAgICBpZiAoIWluZm8pCisgICAgICAgICAgICByZXR1cm47CisK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgICAgICBpZiAoY2FuUmVhZEF0dGFj
aG1lbnQgJiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbihpbmZvKSkgewotICAgICAg
ICAgICAgYXV0byB0eXBlRm9yRmlsZVVwbG9hZCA9IGluZm8uY29udGVudFR5cGVGb3JIaWdoZXN0
RmlkZWxpdHlJdGVtKCk7CisgICAgICAgIGlmIChjYW5SZWFkQXR0YWNobWVudCAmJiBwcmVmZXJz
QXR0YWNobWVudFJlcHJlc2VudGF0aW9uKCppbmZvKSkgeworICAgICAgICAgICAgYXV0byB0eXBl
Rm9yRmlsZVVwbG9hZCA9IGluZm8tPmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgp
OwogICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lKSkgewogICAg
ICAgICAgICAgICAgIHJlYWRVUkxBbG9uZ3NpZGVBdHRhY2htZW50SWZOZWNlc3NhcnkocmVhZGVy
LCBzdHJhdGVneSwgdHlwZUZvckZpbGVVcGxvYWQsIG1fcGFzdGVib2FyZE5hbWUsIGkpOwotICAg
ICAgICAgICAgICAgIHJlYWRlci5yZWFkRGF0YUJ1ZmZlcigqYnVmZmVyLCB0eXBlRm9yRmlsZVVw
bG9hZCwgaW5mby5zdWdnZXN0ZWRGaWxlTmFtZSwgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKTsKKyAgICAgICAgICAgICAgICByZWFkZXIucmVhZERhdGFCdWZmZXIoKmJ1ZmZlciwgdHlw
ZUZvckZpbGVVcGxvYWQsIGluZm8tPnN1Z2dlc3RlZEZpbGVOYW1lLCBpbmZvLT5wcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMzMwLDcgKzMzMyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGlj
CiAgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQb2xpY3kodHlwZSwgcG9s
aWN5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgYXV0byBpdGVt
UmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJh
dGVneSwgdHlwZSwgaW5mbywgaSk7CisgICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFk
UGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCAq
aW5mbywgaSk7CiAgICAgICAgICAgICBpZiAoaXRlbVJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBh
c3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTM1NywyNCArMzYwLDI3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElG
aWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgIGF1
dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFz
dGVib2FyZE5hbWUpOwotICAgICAgICBhdXRvIGF0dGFjaG1lbnRGaWxlUGF0aCA9IGluZm8ucGF0
aEZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKTsKKyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3ku
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFu
Z2VDb3VudCk7CisgICAgICAgIGlmICghaW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIGF0dGFjaG1lbnRGaWxlUGF0aCA9IGluZm8tPnBhdGhGb3JIaWdoZXN0RmlkZWxp
dHlJdGVtKCk7CiAgICAgICAgIGJvb2wgY2FuUmVhZEF0dGFjaG1lbnQgPSBwb2xpY3kgPT0gV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSAmJiAhYXR0YWNobWVu
dEZpbGVQYXRoLmlzRW1wdHkoKTsKLSAgICAgICAgYXV0byBjb250ZW50VHlwZSA9IGluZm8uY29u
dGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7Ci0gICAgICAgIGlmIChjYW5SZWFkQXR0
YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKGluZm8pKSB7CisgICAg
ICAgIGF1dG8gY29udGVudFR5cGUgPSBpbmZvLT5jb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0
eUl0ZW0oKTsKKyAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIHByZWZlcnNBdHRhY2ht
ZW50UmVwcmVzZW50YXRpb24oKmluZm8pKSB7CiAgICAgICAgICAgICByZWFkVVJMQWxvbmdzaWRl
QXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRlZ3ksIGNvbnRlbnRUeXBlLCBtX3Bh
c3RlYm9hcmROYW1lLCBpbmRleCk7Ci0gICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdU
Rk1vdmUoYXR0YWNobWVudEZpbGVQYXRoKSwgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXpl
LCBjb250ZW50VHlwZSk7CisgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUo
YXR0YWNobWVudEZpbGVQYXRoKSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29u
dGVudFR5cGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgogICAg
ICAgICAvLyBUcnkgdG8gcmVhZCBkYXRhIGZyb20gZWFjaCB0eXBlIGlkZW50aWZpZXIgdGhhdCB0
aGlzIHBhc3RlYm9hcmQgaXRlbSBzdXBwb3J0cywgYW5kIFdlYktpdCBhbHNvIHJlY29nbml6ZXMu
IFR5cGUgaWRlbnRpZmllcnMgYXJlCiAgICAgICAgIC8vIHJlYWQgaW4gb3JkZXIgb2YgZmlkZWxp
dHksIGFzIHNwZWNpZmllZCBieSBlYWNoIHBhc3RlYm9hcmQgaXRlbS4KICAgICAgICAgUmVhZGVy
UmVzdWx0IHJlc3VsdCA9IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7Ci0gICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGluZm8ucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiB0eXBlIDogaW5mby0+cGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpIHsKICAgICAg
ICAgICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICByZXN1bHQgPSByZWFkUGFz
dGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmZv
LCBpbmRleCk7CisgICAgICAgICAgICByZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCAqaW5mbywgaW5kZXgpOwogICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0
ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAocmVzdWx0
ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUpCkBAIC0zODIsNyArMzg4LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRS
ZWFkZXImIHJlYWRlciwKICAgICAgICAgfQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgICAgIGlmIChjYW5SZWFkQXR0YWNobWVudCAmJiByZXN1bHQgPT0gUmVhZGVyUmVzdWx0
OjpEaWROb3RSZWFkVHlwZSkKLSAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGgoV1RGTW92
ZShhdHRhY2htZW50RmlsZVBhdGgpLCBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUsIGNv
bnRlbnRUeXBlKTsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGgoV1RGTW92ZShhdHRh
Y2htZW50RmlsZVBhdGgpLCBpbmZvLT5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplLCBjb250ZW50
VHlwZSk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC01MjQsNyArNTMwLDExIEBAIFZlY3RvcjxTdHJp
bmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMoKQogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICBmb3IgKE5TVUlu
dGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRl
eCkgewogICAgICAgICAvLyBDdXJyZW50bHksIGRyYWcgYW5kIGRyb3AgaXMgdGhlIG9ubHkgY2Fz
ZSBvbiBpT1Mgd2hlcmUgdGhlICJwYXN0ZWJvYXJkIiBtYXkgY29udGFpbiBmaWxlIHBhdGhzLgot
ICAgICAgICBhdXRvIGZpbGVQYXRoID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSkucGF0aEZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKTsK
KyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CisgICAgICAgIGlmICghaW5m
bykKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IGlu
Zm8tPnBhdGhGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CiAgICAgICAgIGlmICghZmlsZVBhdGgu
aXNFbXB0eSgpKQogICAgICAgICAgICAgZmlsZVBhdGhzLmFwcGVuZChXVEZNb3ZlKGZpbGVQYXRo
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOGNiM2I2MDE3YjFkMmMyNDNmOGM0MWI2OTYwMWRlOWVh
YWRkMzU2NC4uMzhkNTQ5NGYyOWMwNTFiOGI5YzljYzEwZTQxMTg3OTg3MWRjODMxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCkBAIC0xNjQsMTAgKzE2NCwxMyBAQCBzdGF0aWMgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRp
b25TdHlsZSBwYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlKFVJUHJlZmVycgogCiAjZW5k
aWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFU
QQogCi1QYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkKK09wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgbG9uZyBjaGFuZ2VDb3VudCkKIHsKICAgICBpZiAoaW5kZXggPj0gc3RhdGljX2Nhc3Q8TlNV
SW50ZWdlcj4oW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkpCi0gICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAodGhpcy0+Y2hhbmdl
Q291bnQoKSAhPSBjaGFuZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAog
ICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOwogICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJv
dmlkZXIgPSBbW21fcGFzdGVib2FyZCBpdGVtUHJvdmlkZXJzXSBvYmplY3RBdEluZGV4OmluZGV4
XTsKQEAgLTIzMCw3ICsyMzMsNiBAQCBQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJv
YXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAgICAgaW5m
by5pc05vblRleHRUeXBlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpbmZvLmNoYW5nZUNvdW50ID0g
Y2hhbmdlQ291bnQoKTsKICAgICBpbmZvLndlYlNhZmVUeXBlc0J5RmlkZWxpdHkgPSB3ZWJTYWZl
VHlwZXMocmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycywgWyZdIHsKICAgICAgICAgcmV0dXJuIHNo
b3VsZFRyZWF0QXRMZWFzdE9uZVR5cGVBc0ZpbGUocmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycykg
JiYgIVBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0Zp
bGVzKHJlYWRTdHJpbmcoaW5kZXgsIGtVVFR5cGVVUkwpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggODhmNDRiNjI2M2Y2MDEz
OTY5NGE2M2ZiMDk3ODUyOWU4YzI3OWU3Ni4uNmNhN2Q1ZjRiZmU2MTA5ODcxMTFkMGNlYjI0YTA0
MzY3YzNhOWE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KQEAgLTMyMyw5ICszMjMsMTAgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICBh
dXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBpZiAoaXRlbUluZGV4KQotICAg
ICAgICB0eXBlcyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoKml0ZW1JbmRl
eCAsIG1fcGFzdGVib2FyZE5hbWUpLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5OwotICAgIGVsc2UK
KyAgICBpZiAoaXRlbUluZGV4KSB7CisgICAgICAgIGlmIChhdXRvIGl0ZW1JbmZvID0gc3RyYXRl
Z3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgqaXRlbUluZGV4ICwgbV9wYXN0ZWJvYXJkTmFt
ZSwgbV9jaGFuZ2VDb3VudCkpCisgICAgICAgICAgICB0eXBlcyA9IGl0ZW1JbmZvLT5wbGF0Zm9y
bVR5cGVzQnlGaWRlbGl0eTsKKyAgICB9IGVsc2UKICAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXMo
dHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nKSkpIHsKQEAgLTQwNiw5ICs0MDcsMTAgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNv
bnRlbnRSZWFkaW5nUG9saWMKICAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsK
LSAgICBpZiAoaXRlbUluZGV4KQotICAgICAgICB0eXBlcyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoKml0ZW1JbmRleCAsIG1fcGFzdGVib2FyZE5hbWUpLnBsYXRmb3JtVHlw
ZXNCeUZpZGVsaXR5OwotICAgIGVsc2UKKyAgICBpZiAoaXRlbUluZGV4KSB7CisgICAgICAgIGlm
IChhdXRvIGl0ZW1JbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgqaXRl
bUluZGV4ICwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCkpCisgICAgICAgICAgICB0
eXBlcyA9IGl0ZW1JbmZvLT5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eTsKKyAgICB9IGVsc2UKICAg
ICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogCiAgICAg
cmVhZGVyLmNvbnRlbnRPcmlnaW4gPSByZWFkT3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBmNWU0YzQw
Nzg5ODQxNmEwNWQyNGVhZjFjOTRmNTQ4NWM2YTNjY2VlLi4wMDA2ZWMwYWE3YWVmODYxZGU1Y2Yx
YjA0NDVkM2FmY2JkZTY3ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTQ5OSwxMSArNDk5LDE0IEBAIGxvbmcg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURh
dGE+JiBpdGVtRGF0YSkKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBjaGFuZ2VDb3VudF07CiB9
CiAKLVBhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4KQorT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBsb25nIGNoYW5nZUNvdW50KQogeworICAgIGlmIChjaGFuZ2VDb3VudCAhPSBbbV9wYXN0ZWJv
YXJkIGNoYW5nZUNvdW50XSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE5T
UGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVt
KQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87CiAgICAgTlNBcnJheTxOU1Bhc3RlYm9hcmRUeXBl
PiAqcGxhdGZvcm1UeXBlcyA9IFtpdGVtIHR5cGVzXTsKQEAgLTUyMCw3ICs1MjMsNiBAQCBQYXN0
ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCkKICAgICB9CiAgICAgaW5mby5jb250YWluc0ZpbGVVUkxBbmRGaWxl
VXBsb2FkQ29udGVudCA9IGNvbnRhaW5zRmlsZVVSTCA9PSBDb250YWluc0ZpbGVVUkw6OlllczsK
ICAgICBpbmZvLndlYlNhZmVUeXBlc0J5RmlkZWxpdHkgPSBjb3B5VG9WZWN0b3Iod2ViU2FmZVR5
cGVzKTsKLSAgICBpbmZvLmNoYW5nZUNvdW50ID0gY2hhbmdlQ291bnQoKTsKICAgICByZXR1cm4g
aW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCBkOTMwMjI4M2VkYTM1NzM3Y2ViZWE5Y2Zh
Y2M3YWMxNjI3ZTZlODJkLi4zYTRiMTgzOGRhYWY1NjdkNjNmNGZjYjc4NDJhNzcxMWMyYWQ0MWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0
ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTgwLDE0ICsxODAsMTQgQEAgdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURh
dGE+JiBkYXQKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLndyaXRlKGRhdGEpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBsb25nIGNoYW5nZUNvdW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjaGFuZ2VDb3VudCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGFzdGVib2FyZEl0ZW1J
bmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBsb25nIGNoYW5nZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
Y29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGluZGV4LCBjaGFuZ2VDb3VudCkpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRleCAwOTA4MWI5
NWJkYWQ3ZDY3NzFjNTJkMmVhMmQ4YjI5MjQ3N2JiZjRlLi5kM2E3OTI3ZTkyNTJmZjQ2NzEzMjU2
MzhkYzEwZDI4MzJiMmZmNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
c3RlYm9hcmRQcm94eS5jcHAKQEAgLTgwLDEyICs4MCwxMiBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRAogICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1J
bmZvKGNvbnN0IFN0cmluZyYsIGludCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90LCBjb25zdCBTdHJpbmcm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCwgY29uc3QgU3RyaW5nJiwgaW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKaW5kZXggZDg5MGUzMGZm
ZmZkZDkyOTBlM2FhMWYzMDA0NjAyZDBjMzk5MDI1OS4uNjY1OWE3MDM3NDk0ODVhYTgyZDZkZmJk
MzMwNDAxNzJjMzg5NmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5LmgKQEAgLTk5LDggKzk5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYp
OwogICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCBzaXpl
KT4mJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAg
dm9pZCBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8mJik+JiYpOwotICAgIHZvaWQgYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYpOworICAgIHZvaWQgaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGxvbmcgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJik7CisgICAgdm9pZCBhbGxQYXN0ZWJvYXJkSXRl
bUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgbG9uZyBjaGFuZ2VDb3VudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPj4mJik+JiYpOwogCiAgICAgdm9pZCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICAgICB2b2lkIHR5
cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyZTRlMjZlNDM1N2E4MDNmZDJmZDRhOTU5YWU2
YjEzZTY3NWRmY2M3Li4xOTdkNmFhNDJhZjhiYjEzMDU5NWE3ZTY3Y2Y1NmU3YjNlNmYyZWJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0zMSw4ICszMSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQ
cm94eSB7CiAKICAgICBXcml0ZUN1c3RvbURhdGEoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhPiBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFu
Z2VDb3VudCkgU3luY2hyb25vdXMKICAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4pIC0+IChWZWN0b3I8U3RyaW5nPiB0
eXBlcykgU3luY2hyb25vdXMKLSAgICBBbGxQYXN0ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsSW5m
bykgU3luY2hyb25vdXMKLSAgICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGlu
ZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvIGluZm8pIFN5bmNocm9ub3VzCisgICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QgY2hhbmdlQ291bnQpIC0+IChPcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hyb25vdXMK
KyAgICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+IGluZm8pIFN5bmNocm9ub3VzCiAgICAgR2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkg
U3luY2hyb25vdXMKICAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgs
IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5n
IHN0cmluZykgU3luY2hyb25vdXMKICAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3Qg
aW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0aXRs
ZSkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNDc5
MzBhMmE2OTQxMzMwZGM0MzM1ODVkNzQxZjA5ZDI4NjExNjAwNi4uMDY5ZmMzYTA0YzBlMjg3NzUx
Zjk0Mzc0YjMwM2Y4ZDc3OTFmY2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKQEAgLTMzMiwxNyArMzMyLDE3IEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgcmV0
dXJuIGl0ZW1zQ291bnQ7CiB9CiAKLVZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCitPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgbG9uZyBjaGFuZ2VDb3VudCkKIHsKLSAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1J
bmZvPiBhbGxJbmZvOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOworICAgIE9w
dGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxJbmZvOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbyhwYXN0ZWJvYXJk
TmFtZSwgY2hhbmdlQ291bnQpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0
ZWJvYXJkSXRlbUluZm86OlJlcGx5KGFsbEluZm8pLCAwKTsKICAgICByZXR1cm4gYWxsSW5mbzsK
IH0KIAotUGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCitPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGxvbmcgY2hhbmdlQ291bnQpCiB7Ci0gICAgUGFzdGVib2FyZEl0ZW1JbmZv
IGluZm87Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwgMCk7Cisg
ICAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3Rl
Ym9hcmROYW1lLCBjaGFuZ2VDb3VudCksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Oklu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXg6OlJlcGx5KGluZm8pLCAwKTsKICAgICByZXR1cm4gaW5m
bzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDgxYTdhNDQxZTkzNTli
NmU2NTYzMjA2ZTRlNWI3ODc1NzI0ZWQ2MWMuLjFiN2MzNmU2YmUwY2MwNTc0NWY2MDA4NTc4NzJj
YjkyMWJjNDU2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTg1LDggKzg1
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBVUkwgcmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9y
PFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxvbmcgY2hhbmdlQ291bnQpIG92ZXJy
aWRlOworICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBh
bGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgbG9uZyBj
aGFuZ2VDb3VudCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9N
VG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4pIG92ZXJyaWRlOwogICAgIGxvbmcgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDM5NTExZTA2N2QwZWI2ZTI5
ZDhhM2U0Y2IyZDBkNDVjMDRjNjhiZDUuLjg0ZTFiOWZkNzM0MDkzZGIwMTcxOTc3NjU0OWJiZTM2
Yjg4YWI4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Nyw4ICs1Nyw4IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBsb25nIGNoYW5nZUNvdW50KSBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFz
dGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxvbmcgY2hhbmdl
Q291bnQpIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDBmN2E5MTUwMjY2YTFiNTVhNmI0MDNh
YTU2YTg3YWQ5NDVkZjRkYmYuLjU1MDQzOWM4MjQwOTU5NWE4NmVmMzNlZDljNWUyNjJmMzM1ODYx
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTE3MywxNCArMTczLDE0IEBA
IGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkud3JpdGUoZGF0YSk7CiB9CiAKLVdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorT3B0aW9uYWw8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBsb25nIGNoYW5nZUNvdW50KQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoaW5kZXgsIGNoYW5nZUNvdW50KTsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9h
cmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8o
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK09wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBsb25nIGNoYW5nZUNvdW50KQog
ewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbygpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjaGFuZ2VDb3VudCk7CiB9CiAKIGludCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381447</attachid>
            <date>2019-10-21 13:55:05 -0700</date>
            <delta_ts>2019-10-21 19:16:46 -0700</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-203181-20191021135504.patch</filename>
            <type>text/plain</type>
            <size>40539</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJlYTQ1ZWI3YjczMzQx
MjA5NTBhZTU0OGUyMWE2ZGUwZmU2MDMyMi4uYzJkY2E1YmFiNzYwNzFjMzIyNjg5MTQ5YTEzYTJj
ZTc1MDRjOTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE5LTEwLTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY2xpcGJvYXJkLWFwaXMvYXN5bmMtbmF2aWdhdG9yLWNsaXBi
b2FyZC1iYXNpY3MuaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB0ZXN0IGlzIGZsYWt5IGJlY2F1c2UgaXRzIHJl
c3VsdHMgY3VycmVudGx5IHZhcnkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgY29udGVudCBhbHJlYWR5
IGV4aXN0cyBvbiB0aGUKKyAgICAgICAgcGxhdGZvcm0gcGFzdGVib2FyZC4gSW4gdGhpcyB0ZXN0
LCB0aGUgcGFnZSBpcyBhYmxlIHRvIHJlYWQgaXRlbXMgZnJvbSB0aGUgY2xpcGJvYXJkIHNpbmNl
IERPTSBwYXN0ZSBhbmQKKyAgICAgICAgcHJvZ3JhbW1hdGljIGNsaXBib2FyZCBhY2Nlc3MgYXJl
IGVuYWJsZWQgd2hlbiBydW5uaW5nIGxheW91dCB0ZXN0cy4gSG93ZXZlciwgaW4gdGhlIGNhc2Ug
d2hlcmUgdGhlIHBhc3RlYm9hcmQKKyAgICAgICAgaXMgZW1wdHksIHdlIGVuZCB1cCByZWplY3Rp
bmcgdGhlIHByb21pc2UgZHVlIHRvIGFuIGVhcmx5IHJldHVybiBpbiBDbGlwYm9hcmQ6OnJlYWQo
KS4gSW4gY29udHJhc3QsIHdoZW4gdGhlCisgICAgICAgIHBhc3RlYm9hcmQgaGFzIGF0IGxlYXN0
IG9uZSBpdGVtLCB3ZSdsbCBlbmQgdXAgcmVzb2x2aW5nIHRoZSBwcm9taXNlIHdpdGggYSBzZXF1
ZW5jZSBvZiBDbGlwYm9hcmRJdGVtcywgd2hpY2gKKyAgICAgICAgdGhlbiBjYXVzZXMgdGhlIHRl
c3QgdG8gZmFpbCBiZWNhdXNlIGl0IGV4cGVjdHMgdGhpcyByZXN1bHQgdG8gYmUgYSBEYXRhVHJh
bnNmZXIgaW5zdGVhZCAod2hpY2gsIGF0IHRpbWUgb2YKKyAgICAgICAgd3JpdGluZywgaXMgaW5j
b3JyZWN0IHcuci50LiB0aGUgYXN5bmMgY2xpcGJvYXJkIHNwZWMpLgorCisgICAgICAgIFRvIGZp
eCB0aGlzLCB3ZSByZW1vdmUgdGhpcyBlYXJseSByZXR1cm4gdGhhdCByZWplY3RzIHRoZSBwcm9t
aXNlIHdoZW4gdGhlcmUgYXJlIG5vIHBhc3RlYm9hcmQgaXRlbXMsIGFuZAorICAgICAgICBpbnN0
ZWFkIGFsbG93IHRoZSBwcm9taXNlIHRvIHJlc29sdmUgd2l0aCBubyBpdGVtcy4gSG93ZXZlciwg
c2ltcGx5IHJlbW92aW5nIHRoaXMgY2hlY2sgd291bGQgbWVhbiB0aGF0IGlmIHRoZQorICAgICAg
ICBwYXN0ZWJvYXJkIGNoYW5nZSBjb3VudCBjaGFuZ2VzIGJldHdlZW4gdGhlIHN0YXJ0IG9mIHRo
ZSBjYWxsIHRvIENsaXBib2FyZC5yZWFkKCkgYW5kIHJldHJpZXZhbCBvZiBpdGVtCisgICAgICAg
IGluZm9ybWF0aW9uIGZyb20gdGhlIHBsYXRmb3JtIHBhc3RlYm9hcmQsIHdlJ2xsIG5vIGxvbmdl
ciByZWplY3QgdGhlIHByb21pbXNlIGFzIGV4cGVjdGVkLiBUaGlzIGlzIGJlY2F1c2Ugd2UKKyAg
ICAgICAgY3VycmVudGx5IGl0ZXJhdGUgdGhyb3VnaCBlYWNoIG9mIHRoZSBpdGVtcyBhbmQgY2hl
Y2sgdGhhdCB0aGUgaXRlbSdzIGNoYW5nZSBjb3VudCBtYXRjaGVzLCBzbyBpZiB0aGVyZSBhcmUg
bm8KKyAgICAgICAgaXRlbXMsIHdlIHNpbXBseSBhdm9pZCBjaGVja2luZyB0aGUgY2hhbmdlIGNv
dW50LgorCisgICAgICAgIFdlIGFkZHJlc3MgdGhpcyBieSBpbnN0ZWFkIHNlbmRpbmcgdGhlIGV4
cGVjdGVkIGNoYW5nZSBjb3VudCBhbG9uZyB3aXRoIHRoZSByZXF1ZXN0IGZvciBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oKSwKKyAgICAgICAgYW5kIHJlZmFjdG9yaW5nIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8gKGFuZCBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KSB0byBpbnN0ZWFkIGNoZWNrCisgICAgICAgIHRoaXMgZXhwZWN0ZWQgY2hhbmdlIGNvdW50IGFn
YWluc3QgdGhlIGN1cnJlbnQgY2hhbmdlIGNvdW50IG9mIHRoZSBwYXN0ZWJvYXJkLgorCisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsaXBib2FyZDo6cmVhZCk6CisKKyAgICAgICAgUmVtb3ZlIHRoZSBgYWxsSW5mby5p
c0VtcHR5KClgIGVhcmx5IHJldHVybiwgYW5kIGFsc28gcmVtb3ZlIGEgRklYTUUgdGhhdCBpcyBh
ZGRyZXNzZWQgYnkgdGhpcyByZWZhY3RvcmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0
ZW1JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJ
dGVtSW5mbyBjb25zdCk6CisKKyAgICAgICAgTWFrZSB0aGVzZSBtZXRob2RzIHJlcXVpcmUgYSBj
aGFuZ2VDb3VudDsgYWxzbywgbWFrZSB0aGVzZSByZXR1cm4gb3B0aW9uYWwgcmVzdWx0cy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkSXRlbUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbzo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVj
b2RlKToKKworICAgICAgICBSZW1vdmUgUGFzdGVib2FyZEl0ZW1JbmZvJ3MgY2hhbmdlQ291bnQs
IG5vdyB0aGF0IHRoZSBjaGVjayBvY2N1cnMgaW4gdGhlIGNsaWVudCBsYXllci4KKworICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmZpbGVDb250ZW50U3RhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6cmVhZEZpbGVQYXRocyk6CisKKyAgICAgICAgUmVmYWN0b3IgdGhlc2UgbWV0aG9kcyB0
byBiYWlsIHdoZW4gdGhlIHJlc3VsdGluZyBpdGVtIGluZm9ybWF0aW9uIGhhcyBubyB2YWx1ZSAo
aS5lLiBXVEY6Om51bGxvcHQpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKwogMjAx
OS0xMC0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtTVkcyXTogQWRkICdhdXRvJyBiZWhhdmlvciB0byB0aGUgJ3dpZHRoJyBhbmQgJ2hl
aWdodCcgcHJvcGVydGllcyBvZiB0aGUgU1ZHIDxpbWFnZT4gZWxlbWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBl
NDFkZTM4YzcwNTZjM2MzYTc3NzNiNjcyZWFiYTRjNjZmMDRhZDA3Li41ZmFhMGIxNjQyZjQ2MGY3
OGEwODVlYzJjZDg5Mjg0ZjQyMDMxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5
LTEwLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY2xpcGJvYXJkLWFwaXMvYXN5bmMtbmF2
aWdhdG9yLWNsaXBib2FyZC1iYXNpY3MuaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY2hhbmdlQ291bnQgYXJn
dW1lbnQgdG8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCBhbmQgYWxsUGFzdGVib2FyZEl0ZW1J
bmZvLCBhbmQgYWxzbyBtYWtlIHRoZW4gcmV0dXJuCisgICAgICAgIG9wdGlvbmFsIHZhbHVlcy4g
U2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmg6CisKIDIwMTktMTAtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgbW9yZSByZWxlYXNlIGxvZ2dpbmcgZm9yICJVbmV4cGVjdGVkbHkg
cmVzdW1lZCIgYXNzZXJ0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzM2NTky
ZDUyZmRhOTgzZGRmMTZkMTI1MmFlYTNiOTQxNTA1NmI4MS4uOWQ1ZjY2ZjQ2ZTZkYzE1NDFiOTMw
MjdiN2E4ZmU2MjdkYWUxNjU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDE5LTEwLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY2xpcGJvYXJk
LWFwaXMvYXN5bmMtbmF2aWdhdG9yLWNsaXBib2FyZC1iYXNpY3MuaHR0cHMuaHRtbCBpcyBmbGFr
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEg
Y2hhbmdlQ291bnQgYXJndW1lbnQgdG8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCBhbmQgYWxs
UGFzdGVib2FyZEl0ZW1JbmZvLCBhbmQgYWxzbyBtYWtlIHRoZW4gcmV0dXJuCisgICAgICAgIG9w
dGlvbmFsIHZhbHVlcy4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8pOgorCiAyMDE5
LTEwLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiByZXdvcmsgZnJvbnRlbmQgYWdlbnQgY29uc3RydWN0aW9uIHRvIGFsbG93IGNv
bW1hbmRzL2V2ZW50cyB0byBiZSBjb250cm9sbGVkIGJ5IHRoZSByZWxhdGVkIHRhcmdldCdzIHR5
cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwCmluZGV4IGI4MTQwMGRmMjEyNzMwZTUyYTBmMDU4ZmE1YWJiZWIwMzA1NGVjZmIu
LjRmOGEzOTVhMDlkMzk2M2IzYmM1ZTE3NTc4ZWM1NWI4Njc4OTdjZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAt
OTQsNyArOTQsNyBAQCB2b2lkIENsaXBib2FyZDo6cmVhZChSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiAgICAgfQogCiAgICAgYXV0byBwYXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCk7Ci0gICAgaW50IGNoYW5nZUNvdW50QXRTdGFydCA9IHBhc3Rl
Ym9hcmQtPmNoYW5nZUNvdW50KCk7CisgICAgYXV0byBjaGFuZ2VDb3VudEF0U3RhcnQgPSBwYXN0
ZWJvYXJkLT5jaGFuZ2VDb3VudCgpOwogCiAgICAgaWYgKCFmcmFtZS0+cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKCkpIHsKICAgICAgICAgcmVqZWN0UHJvbWlzZUFuZENsZWFyQWN0aXZlU2Vzc2lvbigp
OwpAQCAtMTAzLDIzICsxMDMsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWQoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogCiAgICAgaWYgKCFtX2FjdGl2ZVNlc3Npb24gfHwgbV9hY3Rp
dmVTZXNzaW9uLT5jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudEF0U3RhcnQpIHsKICAgICAgICAg
YXV0byBhbGxJbmZvID0gcGFzdGVib2FyZC0+YWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7Ci0gICAg
ICAgIGlmIChhbGxJbmZvLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIWFsbEluZm8pIHsKICAg
ICAgICAgICAgIHJlamVjdFByb21pc2VBbmRDbGVhckFjdGl2ZVNlc3Npb24oKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3RvcjxSZWY8Q2xpcGJvYXJkSXRl
bT4+IGNsaXBib2FyZEl0ZW1zOwotICAgICAgICBjbGlwYm9hcmRJdGVtcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGFsbEluZm8uc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBpdGVtSW5mbyA6
IGFsbEluZm8pIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZWZhY3Rv
cmVkIHN1Y2ggdGhhdCB0aGUgaW5pdGlhbCBjaGFuZ2VDb3VudCBpcyBkZWxpdmVyZWQgdG8gdGhl
IGNsaWVudCwgd2hlcmUgaXQgaXMgdGhlbiBjaGVja2VkCi0gICAgICAgICAgICAvLyBhZ2FpbnN0
IHRoZSBjdXJyZW50IGNoYW5nZUNvdW50IG9mIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLiBGb3Ig
aW5zdGFuY2UsIGluIFdlYktpdDIsIHRoaXMgd291bGQgcmVsb2NhdGUgdGhlIGNoYW5nZUNvdW50
Ci0gICAgICAgICAgICAvLyBjaGVjayB0byB0aGUgVUkgcHJvY2VzcyBpbnN0ZWFkIG9mIHRoZSB3
ZWIgY29udGVudCBwcm9jZXNzLgotICAgICAgICAgICAgaWYgKGl0ZW1JbmZvLmNoYW5nZUNvdW50
ICE9IGNoYW5nZUNvdW50QXRTdGFydCkgewotICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2VB
bmRDbGVhckFjdGl2ZVNlc3Npb24oKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9CisgICAgICAgIGNsaXBib2FyZEl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYWxs
SW5mby0+c2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBpdGVtSW5mbyA6ICphbGxJbmZvKQog
ICAgICAgICAgICAgY2xpcGJvYXJkSXRlbXMudW5jaGVja2VkQXBwZW5kKENsaXBib2FyZEl0ZW06
OmNyZWF0ZSgqdGhpcywgaXRlbUluZm8pKTsKLSAgICAgICAgfQogICAgICAgICBtX2FjdGl2ZVNl
c3Npb24gPSB7eyBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBXVEZNb3ZlKGNsaXBib2FyZEl0ZW1zKSwg
Y2hhbmdlQ291bnRBdFN0YXJ0IH19OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaAppbmRleCA4N2FlNTdhYzg0MGU3N2Ew
N2U3ZTkxZjYwMTMxMzJhMDM1NjJjMTRkLi4xMDYwODVhMThkODUzODQ0OTRkZmYxMWNiZDEwODlk
N2Q3NDkzZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmQuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBT
ZXNzaW9uIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQ7
CiAgICAgICAgIFZlY3RvcjxSZWY8Q2xpcGJvYXJkSXRlbT4+IGl0ZW1zOwotICAgICAgICBpbnQg
Y2hhbmdlQ291bnQ7CisgICAgICAgIGxvbmcgY2hhbmdlQ291bnQ7CiAgICAgfTsKIAogICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCmluZGV4IGQwN2E1ZmFlMDY1Njg3ODY2ZjZhZjBiYjgyNDQ0MzNlMzc4
MWRhODIuLmI3NGVlMmYwMjU0YzY1OTIxZDY3NDIzODBmZjRlNzhlMmQyNDgyNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC02MiwxNyArNjIsMTcgQEAgVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEFsbFN0cmluZ3MoY29uc3QgU3RyaW5nJiB0eXBlKQog
CiAjZW5kaWYKIAotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZDo6YWxsUGFz
dGVib2FyZEl0ZW1JbmZvKCkgY29uc3QKK09wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUlu
Zm8+PiBQYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdAogewogICAgIGlm
IChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKSkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5hbGxQYXN0ZWJvYXJkSXRlbUluZm8obmFt
ZSgpKTsKLSAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhuYW1lKCksIG1fY2hhbmdlQ291bnQpOworICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiB9CiAKLVBhc3RlYm9hcmRJdGVtSW5mbyBQYXN0ZWJvYXJkOjpwYXN0ZWJvYXJkSXRl
bUluZm8oc2l6ZV90IGluZGV4KSBjb25zdAorT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQ
YXN0ZWJvYXJkOjpwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdAogewogICAg
IGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKSkKLSAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5pbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KGluZGV4LCBuYW1lKCkpOworICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSwgbV9jaGFuZ2VDb3VudCk7CiAgICAgcmV0dXJu
IHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDNiY2RkODIz
NWMzZGExOTU3ZTEzZjI0OTRiYTlmZGM0Y2RlMWVjZWEuLjg4ZDFiZGQ3ZWE0ZDJhOTgwMDE0NzUy
ZTU0ZGM2OWI2ZTRjYmEyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAg
LTI3Myw4ICsyNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cml0ZUltYWdlVG9EYXRhT2JqZWN0
KEVsZW1lbnQmLCBjb25zdCBVUkwmKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlvbi4KICNl
bmRpZgogCi0gICAgVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKCkgY29uc3Q7Ci0gICAgUGFzdGVib2FyZEl0ZW1JbmZvIHBhc3RlYm9hcmRJdGVtSW5mbyhz
aXplX3QgaW5kZXgpIGNvbnN0OworICAgIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUlu
Zm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdDsKKyAgICBPcHRpb25hbDxQYXN0ZWJv
YXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAg
ICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpOwpAQCAtMzE4LDEwICszMTgsMTEgQEAgcHJpdmF0ZToKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyBtX3Bhc3RlYm9hcmROYW1lOwotICAgIGxv
bmcgbV9jaGFuZ2VDb3VudDsKICAgICBPcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gbV9j
dXN0b21EYXRhQ2FjaGU7CiAjZW5kaWYKIAorICAgIGxvbmcgbV9jaGFuZ2VDb3VudCB7IDAgfTsK
KwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBWZWN0b3I8U3RyaW5nPiBtX3Byb21pc2VkRmlsZVBh
dGhzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5m
by5oCmluZGV4IDNiMzk3YzM3MzRkMzJhMGZiNjBlNzAzMWVmOWQwYmM1YWI0ODMyYzEuLjA5ZWU4
Zjk3NjgyMTM5MjdlOGYzYzU1OGUzYzkwNjViNWNiNDZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCkBAIC03Myw3ICs3Myw2IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm8gewogICAgIGJvb2wgaXNOb25UZXh0VHlwZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBjb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudCB7IGZhbHNlIH07CiAg
ICAgVmVjdG9yPFN0cmluZz4gd2ViU2FmZVR5cGVzQnlGaWRlbGl0eTsKLSAgICBpbnQgY2hhbmdl
Q291bnQgeyAwIH07CiAgICAgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZSB7IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OlVu
c3BlY2lmaWVkIH07CiAKICAgICBTdHJpbmcgcGF0aEZvckNvbnRlbnRUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKQEAgLTEyNyw3ICsxMjYsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1J
bmZvIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFBhc3RlYm9hcmRJdGVtSW5mbzo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBwYXRoc0Zv
ckZpbGVVcGxvYWQgPDwgcGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQgPDwgcGxhdGZvcm1UeXBl
c0J5RmlkZWxpdHkgPDwgc3VnZ2VzdGVkRmlsZU5hbWUgPDwgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250
ZW50IDw8IHdlYlNhZmVUeXBlc0J5RmlkZWxpdHkgPDwgY2hhbmdlQ291bnQ7CisgICAgZW5jb2Rl
ciA8PCBwYXRoc0ZvckZpbGVVcGxvYWQgPDwgcGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQgPDwg
cGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkgPDwgc3VnZ2VzdGVkRmlsZU5hbWUgPDwgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA8PCBpc05vblRleHRUeXBlIDw8IGNvbnRhaW5zRmlsZVVSTEFuZEZp
bGVVcGxvYWRDb250ZW50IDw8IHdlYlNhZmVUeXBlc0J5RmlkZWxpdHk7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKTsKIH0KIApAQCAtMTU5LDkgKzE1
OCw2IEBAIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53
ZWJTYWZlVHlwZXNCeUZpZGVsaXR5KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNoYW5nZUNvdW50KSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5w
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXgg
NjE2Mjk0MmY3M2NiYmEyMjFlMjAxOWUyYjk3N2IyMDE1YTgxNTZkZC4uN2Y1NThjMTU0MWI4MTBi
MTJhMzZkMzUyY2NmZDZlMzUzZTkwNjIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTcwLDggKzcwLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVh
bCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBsb25nIGNoYW5nZUNv
dW50KSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZv
Pj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxv
bmcgY2hhbmdlQ291bnQpID0gMDsKICAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGZmMDM0ZTcxN2E3N2IxYjY0
NDE2MTRhYjYzMGIwYmZlZTQ3OWU1ZTkuLmRjNTEwNGRkZDkzNDRlYzRlYmQ3NTUzZGE3MzM5NWI1
MTZkOTc0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9y
bVBhc3RlYm9hcmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogI2VuZGlmCi0gICAg
V0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoc2l6ZV90IGluZGV4KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UGFzdGVib2FyZEl0
ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRp
b25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBsb25nIGNoYW5nZUNvdW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxW
ZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGxvbmcgY2hh
bmdlQ291bnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgdW5pcXVlTmFtZSgp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRU
eXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
CmluZGV4IDE2NjM2OWJmN2RiOGRiMTI3ZDQ5ZTQ3YWZjOWQxZjZkNGI5YmFkZjEuLjQ2ZWJlYTA0
M2U1ZTI3ZWIxYjgxZmY5ZDZlMDliMTgzZWVmYmI2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTE0NCw3ICsxNDQsMTAgQEAg
UGFzdGVib2FyZDo6RmlsZUNvbnRlbnRTdGF0ZSBQYXN0ZWJvYXJkOjpmaWxlQ29udGVudFN0YXRl
KCkKICAgICAgICAgLy8gYW4gaW5saW5lIHBpZWNlIG9mIHRleHQsIHdpdGggbm8gZmlsZXMgaW4g
dGhlIHBhc3RlYm9hcmQgKGFuZCB0aGVyZWZvcmUsIG5vIHJpc2sgb2YgbGVha2luZyBmaWxlIHBh
dGhzCiAgICAgICAgIC8vIHRvIHdlYiBjb250ZW50KS4gSW4gY2FzZXMgc3VjaCBhcyB0aGVzZSwg
d2Ugc2hvdWxkIG5vdCBzdXBwcmVzcyBEYXRhVHJhbnNmZXIgYWNjZXNzLgogICAgICAgICBhdXRv
IGl0ZW1zID0gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7Ci0gICAgICAgIG1heUNvbnRhaW5GaWxl
UGF0aHMgPSBpdGVtcy5zaXplKCkgIT0gMSB8fCBub3RGb3VuZCAhPSBpdGVtcy5maW5kTWF0Y2hp
bmcoW10gKGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgaWYgKCFpdGVtcykKKyAgICAgICAgICAgIHJl
dHVybiBGaWxlQ29udGVudFN0YXRlOjpOb0ZpbGVPckltYWdlRGF0YTsKKworICAgICAgICBtYXlD
b250YWluRmlsZVBhdGhzID0gaXRlbXMtPnNpemUoKSAhPSAxIHx8IG5vdEZvdW5kICE9IGl0ZW1z
LT5maW5kTWF0Y2hpbmcoW10gKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgICAgIHJldHVybiBpdGVt
LmNhbkJlVHJlYXRlZEFzQXR0YWNobWVudE9yRmlsZSgpIHx8IGl0ZW0uaXNOb25UZXh0VHlwZSB8
fCBpdGVtLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50OwogICAgICAgICB9KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF0Zm9y
bVBhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRm
b3JtUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDM0OTU0MzNlYWNlOTY4YjYzNjJmNmU1NmM0NGNk
NTg4MzNkYWViYzUuLjE0NjgwMDlhMGVkYjA2MzcxZTZmODAxOThlYmYyMzRkMTVjZmUzMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2Fy
ZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFz
dGVib2FyZENvY29hLm1tCkBAIC0yOCwxNSArMjgsMjcgQEAKIAogI2ltcG9ydCAiUGFzdGVib2Fy
ZEl0ZW1JbmZvLmgiCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWJzdHJh
Y3RQYXN0ZWJvYXJkLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVt
SW5mbygpCitPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8obG9uZyBjaGFuZ2VDb3VudCkKIHsKKyAgICBp
ZiAoY2hhbmdlQ291bnQgIT0gW21fcGFzdGVib2FyZCBjaGFuZ2VDb3VudF0pCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBpdGVt
SW5mbzsKICAgICBpbnQgbnVtYmVyT2ZJdGVtcyA9IGNvdW50KCk7CiAgICAgaXRlbUluZm8ucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZkl0ZW1zKTsKLSAgICBmb3IgKE5TSW50ZWdlciBp
dGVtSW5kZXggPSAwOyBpdGVtSW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2l0ZW1JbmRleCkKLSAg
ICAgICAgaXRlbUluZm8udW5jaGVja2VkQXBwZW5kKGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
aXRlbUluZGV4KSk7CisgICAgZm9yIChOU0ludGVnZXIgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4
IDwgbnVtYmVyT2ZJdGVtczsgKytpdGVtSW5kZXgpIHsKKyAgICAgICAgYXV0byBpdGVtID0gaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpdGVtSW5kZXgsIGNoYW5nZUNvdW50KTsKKyAgICAgICAg
aWYgKCFpdGVtKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBp
dGVtSW5mby51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqaXRlbSkpOworICAgIH0KICAgICByZXR1
cm4gaXRlbUluZm87CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KaW5kZXggMTAzMWU1MTdhZjZmODQ2M2JmYWQzMjY4ZDEzN2UxZGNhZTdiY2NiZC4u
ZTcxZWM4M2M4NGE3NGQzMzMwNjA2YWM5ZGI3ZjQyNzhjYjIwYjQxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTMxMywxMyArMzEzLDE2IEBA
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVy
LCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAgICAgIGlmIChpdGVtSW5kZXggJiYgaSAhPSAq
aXRlbUluZGV4KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBpbmZvID0g
c3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpLCBtX3Bhc3RlYm9hcmROYW1lKTsK
KyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
LCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNvdW50KTsKKyAgICAgICAgaWYgKCFpbmZvKQor
ICAgICAgICAgICAgcmV0dXJuOworCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAg
ICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIHByZWZlcnNBdHRhY2htZW50UmVwcmVzZW50
YXRpb24oaW5mbykpIHsKLSAgICAgICAgICAgIGF1dG8gdHlwZUZvckZpbGVVcGxvYWQgPSBpbmZv
LmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOworICAgICAgICBpZiAoY2FuUmVh
ZEF0dGFjaG1lbnQgJiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbigqaW5mbykpIHsK
KyAgICAgICAgICAgIGF1dG8gdHlwZUZvckZpbGVVcGxvYWQgPSBpbmZvLT5jb250ZW50VHlwZUZv
ckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKTsKICAgICAgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHN0
cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpLCB0eXBlRm9yRmlsZVVwbG9hZCwgbV9w
YXN0ZWJvYXJkTmFtZSkpIHsKICAgICAgICAgICAgICAgICByZWFkVVJMQWxvbmdzaWRlQXR0YWNo
bWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRlZ3ksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bh
c3RlYm9hcmROYW1lLCBpKTsKLSAgICAgICAgICAgICAgICByZWFkZXIucmVhZERhdGFCdWZmZXIo
KmJ1ZmZlciwgdHlwZUZvckZpbGVVcGxvYWQsIGluZm8uc3VnZ2VzdGVkRmlsZU5hbWUsIGluZm8u
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSk7CisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRE
YXRhQnVmZmVyKCpidWZmZXIsIHR5cGVGb3JGaWxlVXBsb2FkLCBpbmZvLT5zdWdnZXN0ZWRGaWxl
TmFtZSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSk7CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzMCw3ICszMzMsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwg
V2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAgICAgICAgICAgaWYgKCFpc1R5cGVBbGxvd2VkQnlS
ZWFkaW5nUG9saWN5KHR5cGUsIHBvbGljeSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERh
dGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGluZm8sIGkpOworICAgICAgICAgICAg
YXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVh
ZGVyLCBzdHJhdGVneSwgdHlwZSwgKmluZm8sIGkpOwogICAgICAgICAgICAgaWYgKGl0ZW1SZXN1
bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTcsMjQgKzM2MCwyNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
ciYgcmVhZGVyLAogICAgICAgICAgICAgY29udGludWU7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQotICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICAgICAgYXV0byBhdHRhY2ht
ZW50RmlsZVBhdGggPSBpbmZvLnBhdGhGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CisgICAgICAg
IGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1f
cGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQpOworICAgICAgICBpZiAoIWluZm8pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBhdHRhY2htZW50RmlsZVBhdGggPSBpbmZv
LT5wYXRoRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOwogICAgICAgICBib29sIGNhblJlYWRBdHRh
Y2htZW50ID0gcG9saWN5ID09IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpBbnlUeXBlICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRF
bmFibGVkKCkgJiYgIWF0dGFjaG1lbnRGaWxlUGF0aC5pc0VtcHR5KCk7Ci0gICAgICAgIGF1dG8g
Y29udGVudFR5cGUgPSBpbmZvLmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOwot
ICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNl
bnRhdGlvbihpbmZvKSkgeworICAgICAgICBhdXRvIGNvbnRlbnRUeXBlID0gaW5mby0+Y29udGVu
dFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CisgICAgICAgIGlmIChjYW5SZWFkQXR0YWNo
bWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJlc2VudGF0aW9uKCppbmZvKSkgewogICAgICAg
ICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1lbnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0
ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgaW5kZXgpOwotICAgICAgICAgICAg
cmVhZGVyLnJlYWRGaWxlUGF0aChXVEZNb3ZlKGF0dGFjaG1lbnRGaWxlUGF0aCksIGluZm8ucHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVudFR5cGUpOworICAgICAgICAgICAgcmVhZGVy
LnJlYWRGaWxlUGF0aChXVEZNb3ZlKGF0dGFjaG1lbnRGaWxlUGF0aCksIGluZm8tPnByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUsIGNvbnRlbnRUeXBlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgLy8gVHJ5IHRvIHJlYWQgZGF0YSBmcm9tIGVhY2gg
dHlwZSBpZGVudGlmaWVyIHRoYXQgdGhpcyBwYXN0ZWJvYXJkIGl0ZW0gc3VwcG9ydHMsIGFuZCBX
ZWJLaXQgYWxzbyByZWNvZ25pemVzLiBUeXBlIGlkZW50aWZpZXJzIGFyZQogICAgICAgICAvLyBy
ZWFkIGluIG9yZGVyIG9mIGZpZGVsaXR5LCBhcyBzcGVjaWZpZWQgYnkgZWFjaCBwYXN0ZWJvYXJk
IGl0ZW0uCiAgICAgICAgIFJlYWRlclJlc3VsdCByZXN1bHQgPSBSZWFkZXJSZXN1bHQ6OkRpZE5v
dFJlYWRUeXBlOwotICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBpbmZvLnBsYXRmb3JtVHlwZXNC
eUZpZGVsaXR5KSB7CisgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGluZm8tPnBsYXRmb3JtVHlw
ZXNCeUZpZGVsaXR5KSB7CiAgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQ
b2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVy
LCBzdHJhdGVneSwgdHlwZSwgaW5mbywgaW5kZXgpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVh
ZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwg
KmluZm8sIGluZGV4KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQ
YXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlKQpAQCAtMzgy
LDcgKzM4OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVz
KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsCiAgICAgICAgIH0KICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYg
cmVzdWx0ID09IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGUpCi0gICAgICAgICAgICByZWFk
ZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZpbGVQYXRoKSwgaW5mby5wcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplLCBjb250ZW50VHlwZSk7CisgICAgICAgICAgICByZWFkZXIucmVh
ZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZpbGVQYXRoKSwgaW5mby0+cHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSwgY29udGVudFR5cGUpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtNTI0LDcg
KzUzMCwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZVBhdGhzKCkKICAg
ICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMCwgbnVtYmVyT2ZJdGVtcyA9IHN0
cmF0ZWd5LmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOyBpbmRleCA8
IG51bWJlck9mSXRlbXM7ICsraW5kZXgpIHsKICAgICAgICAgLy8gQ3VycmVudGx5LCBkcmFnIGFu
ZCBkcm9wIGlzIHRoZSBvbmx5IGNhc2Ugb24gaU9TIHdoZXJlIHRoZSAicGFzdGVib2FyZCIgbWF5
IGNvbnRhaW4gZmlsZSBwYXRocy4KLSAgICAgICAgYXV0byBmaWxlUGF0aCA9IHN0cmF0ZWd5Lmlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpLnBhdGhGb3JI
aWdoZXN0RmlkZWxpdHlJdGVtKCk7CisgICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291
bnQpOworICAgICAgICBpZiAoIWluZm8pCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIGF1dG8gZmlsZVBhdGggPSBpbmZvLT5wYXRoRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOwog
ICAgICAgICBpZiAoIWZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGZpbGVQYXRocy5h
cHBlbmQoV1RGTW92ZShmaWxlUGF0aCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDhjYjNiNjAxN2Ix
ZDJjMjQzZjhjNDFiNjk2MDFkZTllYWFkZDM1NjQuLjM4ZDU0OTRmMjljMDUxYjhiOWM5Y2MxMGU0
MTE4Nzk4NzFkYzgzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMTY0LDEwICsxNjQsMTMgQEAgc3RhdGljIFBh
c3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUgcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25T
dHlsZShVSVByZWZlcnIKIAogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFU
SU9OX1NUWUxFX0FORF9URUFNX0RBVEEKIAotUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFz
dGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCitPcHRpb25h
bDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGxvbmcgY2hhbmdlQ291bnQpCiB7CiAgICAgaWYgKGlu
ZGV4ID49IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVt
c10pKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgaWYgKHRoaXMtPmNoYW5nZUNvdW50KCkgIT0gY2hhbmdlQ291bnQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKICAgICBO
U0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gW1ttX3Bhc3RlYm9hcmQgaXRlbVByb3ZpZGVy
c10gb2JqZWN0QXRJbmRleDppbmRleF07CkBAIC0yMzAsNyArMjMzLDYgQEAgUGFzdGVib2FyZEl0
ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXpl
X3QgaW5kZXgpCiAgICAgICAgIGluZm8uaXNOb25UZXh0VHlwZSA9IHRydWU7CiAgICAgfQogCi0g
ICAgaW5mby5jaGFuZ2VDb3VudCA9IGNoYW5nZUNvdW50KCk7CiAgICAgaW5mby53ZWJTYWZlVHlw
ZXNCeUZpZGVsaXR5ID0gd2ViU2FmZVR5cGVzKHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMsIFsm
XSB7CiAgICAgICAgIHJldHVybiBzaG91bGRUcmVhdEF0TGVhc3RPbmVUeXBlQXNGaWxlKHJlZ2lz
dGVyZWRUeXBlSWRlbnRpZmllcnMpICYmICFQYXN0ZWJvYXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdo
ZW5QYXN0ZWJvYXJkQ29udGFpbnNGaWxlcyhyZWFkU3RyaW5nKGluZGV4LCBrVVRUeXBlVVJMKSk7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IDg4ZjQ0YjYyNjNmNjAxMzk2OTRhNjNmYjA5Nzg1MjllOGMyNzllNzYuLjZjYTdkNWY0
YmZlNjEwOTg3MTExZDBjZWIyNGEwNDM2N2MzYTlhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMjMsOSArMzIzLDEwIEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5IGFsbG93CiAgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0g
ICAgaWYgKGl0ZW1JbmRleCkKLSAgICAgICAgdHlwZXMgPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KCppdGVtSW5kZXggLCBtX3Bhc3RlYm9hcmROYW1lKS5wbGF0Zm9ybVR5cGVz
QnlGaWRlbGl0eTsKLSAgICBlbHNlCisgICAgaWYgKGl0ZW1JbmRleCkgeworICAgICAgICBpZiAo
YXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoKml0ZW1J
bmRleCAsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQpKQorICAgICAgICAgICAgdHlw
ZXMgPSBpdGVtSW5mby0+cGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7CisgICAgfSBlbHNlCiAgICAg
ICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKIAogICAgIGlm
ICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJkVHlwZVN0cmluZykpKSB7CkBAIC00
MDYsOSArNDA3LDEwIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVu
dFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAgYXV0byYgc3RyYXRl
Z3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCiAgICAg
VmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgaWYgKGl0ZW1JbmRleCkKLSAgICAgICAgdHlwZXMg
PSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KCppdGVtSW5kZXggLCBtX3Bhc3Rl
Ym9hcmROYW1lKS5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eTsKLSAgICBlbHNlCisgICAgaWYgKGl0
ZW1JbmRleCkgeworICAgICAgICBpZiAoYXV0byBpdGVtSW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoKml0ZW1JbmRleCAsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdl
Q291bnQpKQorICAgICAgICAgICAgdHlwZXMgPSBpdGVtSW5mby0+cGxhdGZvcm1UeXBlc0J5Rmlk
ZWxpdHk7CisgICAgfSBlbHNlCiAgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bh
c3RlYm9hcmROYW1lKTsKIAogICAgIHJlYWRlci5jb250ZW50T3JpZ2luID0gcmVhZE9yaWdpbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KaW5kZXggZjVlNGM0MDc4OTg0MTZhMDVkMjRlYWYxYzk0ZjU0ODVjNmEzY2NlZS4u
MDAwNmVjMGFhN2FlZjg2MWRlNWNmMWIwNDQ1ZDNhZmNiZGU2N2UxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC00
OTksMTEgKzQ5OSwxNCBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgVmVj
dG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYgaXRlbURhdGEpCiAgICAgcmV0dXJuIFttX3Bhc3Rl
Ym9hcmQgY2hhbmdlQ291bnRdOwogfQogCi1QYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0
ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkKK09wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgbG9uZyBjaGFuZ2VDb3VudCkKIHsKKyAgICBpZiAoY2hh
bmdlQ291bnQgIT0gW21fcGFzdGVib2FyZCBjaGFuZ2VDb3VudF0pCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgo
aW5kZXgpOwogICAgIGlmICghaXRlbSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOwogICAgIE5T
QXJyYXk8TlNQYXN0ZWJvYXJkVHlwZT4gKnBsYXRmb3JtVHlwZXMgPSBbaXRlbSB0eXBlc107CkBA
IC01MjAsNyArNTIzLDYgQEAgUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgfQogICAgIGluZm8u
Y29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRlbnQgPSBjb250YWluc0ZpbGVVUkwgPT0g
Q29udGFpbnNGaWxlVVJMOjpZZXM7CiAgICAgaW5mby53ZWJTYWZlVHlwZXNCeUZpZGVsaXR5ID0g
Y29weVRvVmVjdG9yKHdlYlNhZmVUeXBlcyk7Ci0gICAgaW5mby5jaGFuZ2VDb3VudCA9IGNoYW5n
ZUNvdW50KCk7CiAgICAgcmV0dXJuIGluZm87CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggZDkz
MDIyODNlZGEzNTczN2NlYmVhOWNmYWNjN2FjMTYyN2U2ZTgyZC4uM2E0YjE4MzhkYWFmNTY3ZDYz
ZjRmY2I3ODQyYTc3MTFjMmFkNDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE4MCwxNCArMTgw
LDE0IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVj
dG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYgZGF0CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKSk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UGFzdGVib2FyZEl0
ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgbG9u
ZyBjaGFuZ2VDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8UGFz
dGVib2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJv
YXJkSXRlbUluZm8oKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oY2hhbmdlQ291bnQpKTsKIH0K
IAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgbG9uZyBjaGFuZ2VDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgY2hhbmdlQ291bnQpKTsKIH0KIAogdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5jcHAKaW5kZXggMDkwODFiOTViZGFkN2Q2NzcxYzUyZDJlYTJkOGIyOTI0NzdiYmY0ZS4u
ZjA0NjY1YjYyYzM1MGJhOWQ4OTdkNGM5YTgyYWE3NGFkMTE3MWM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCkBAIC04MCwxNCArODAsMTQg
QEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbUQKICAgICBjb21wbGV0aW9uSGFuZGxlcigwKTsKIH0K
IAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBT
dHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmLCBsb25nLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiB9CiAKLXZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCwgY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QsIGNvbnN0IFN0cmluZyYsIGxvbmcsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKaW5kZXggNDU4ZGExNDBkN2UxZGM4
NjgxNWFhZjIwYWE5NWM1NmJiMTFjNjlkNS4uYzRkNWJmODQ3ZjFkNjgxNTVmMjg0YjUxYzU3NzRk
OTZmMzY0YjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5LmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJik7CiAg
ICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYm
KTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lk
IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbyYmKT4mJik7Ci0gICAgdm9pZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJik7CisgICAgdm9pZCBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgbG9u
ZyBjaGFuZ2VDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBsb25nIGNoYW5nZUNvdW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+PiYmKT4mJik7CiAKICAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAgIHZvaWQgdHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2Fy
ZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2Fy
ZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJlNGUyNmU0MzU3YTgwM2ZkMmZkNGE5NTlhZTZiMTNl
Njc1ZGZjYzcuLjE5N2Q2YWE0MmFmOGJiMTMwNTk1YTdlNjdjZjU2ZTdiM2U2ZjJlYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVz
c2FnZXMuaW4KQEAgLTMxLDggKzMxLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5
IHsKIAogICAgIFdyaXRlQ3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE+IGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGNoYW5nZUNv
dW50KSBTeW5jaHJvbm91cwogICAgIFR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9yaWdpbikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVz
KSBTeW5jaHJvbm91cwotICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvKSBT
eW5jaHJvbm91cwotICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgs
IFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8gaW5mbykgU3luY2hyb25vdXMKKyAgICBBbGxQYXN0ZWJvYXJkSXRlbUluZm8oU3RyaW5n
IHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCBjaGFuZ2VDb3VudCkgLT4gKE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxJbmZvKSBTeW5jaHJvbm91cworICAg
IEluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4gaW5mbykgU3luY2hyb25vdXMKICAgICBHZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBTeW5j
aHJvbm91cwogICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3Ry
aW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgc3Ry
aW5nKSBTeW5jaHJvbm91cwogICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRl
eCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBT
eW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0NzkzMGEy
YTY5NDEzMzBkYzQzMzU4NWQ3NDFmMDlkMjg2MTE2MDA2Li4wNjlmYzNhMDRjMGUyODc3NTFmOTQz
NzRiMzAzZjhkNzc5MWZjZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMzMyLDE3ICszMzIsMTcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICByZXR1cm4g
aXRlbXNDb3VudDsKIH0KIAotVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKK09wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBsb25nIGNoYW5nZUNvdW50KQogewotICAgIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+
IGFsbEluZm87Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvOjpSZXBseShhbGxJbmZvKSwgMCk7CisgICAgT3B0aW9u
YWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbEluZm87CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1l
LCBjaGFuZ2VDb3VudCksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9h
cmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOwogICAgIHJldHVybiBhbGxJbmZvOwogfQog
Ci1QYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
K09wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgbG9uZyBjaGFuZ2VDb3VudCkKIHsKLSAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5m
bzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXg6OlJlcGx5KGluZm8pLCAwKTsKKyAgICBP
cHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm87CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2Fy
ZE5hbWUsIGNoYW5nZUNvdW50KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHkoaW5mbyksIDApOwogICAgIHJldHVybiBpbmZvOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggODFhN2E0NDFlOTM1OWI2ZTY1
NjMyMDZlNGU1Yjc4NzU3MjRlZDYxYy4uMWI3YzM2ZTZiZTBjYzA1NzQ1ZjYwMDg1Nzg3MmNiOTIx
YmM0NTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtODUsOCArODUsOCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgbG9uZyBjaGFuZ2VDb3VudCkgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBh
c3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBsb25nIGNoYW5n
ZUNvdW50KSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9y
aWdpbikgb3ZlcnJpZGU7CiAgICAgbG9uZyB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMzk1MTFlMDY3ZDBlYjZlMjlkOGEz
ZTRjYjJkMGQ0NWMwNGM2OGJkNS4uODRlMWI5ZmQ3MzQwOTNkYjAxNzE5Nzc2NTQ5YmJlMzZiODhh
YjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU3LDggKzU3LDggQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9h
cmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxvbmcgY2hhbmdlQ291bnQpIG92ZXJyaWRlOworICAg
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgbG9uZyBjaGFuZ2VDb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMGY3YTkxNTAyNjZhMWI1NWE2YjQwM2FhNTZh
ODdhZDk0NWRmNGRiZi4uNTUwNDM5YzgyNDA5NTk1YTg2ZWYzM2VkOWM1ZTI2MmYzMzU4NjEwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTczLDE0ICsxNzMsMTQgQEAgbG9u
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3QKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS53cml0ZShkYXRhKTsKIH0KIAotV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitPcHRpb25hbDxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxv
bmcgY2hhbmdlQ291bnQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCk7CisgICAgcmV0dXJuIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgY2hhbmdlQ291bnQpOwogfQogCi1WZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1J
bmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxvbmcgY2hhbmdlQ291bnQpCiB7Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKCk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNoYW5nZUNvdW50KTsKIH0KIAogaW50IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381499</attachid>
            <date>2019-10-21 19:16:47 -0700</date>
            <delta_ts>2019-10-21 19:29:47 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-203181-20191021191646.patch</filename>
            <type>text/plain</type>
            <size>84886</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAxYjEwZTRhOTFmZmQz
ZDQyZGRmN2VjNGQyZTIyZmQ2MzY3NTIxMC4uODA4OTNlZTEwODMxYWI2MjFlMzk5NDIxZTFmNzIz
ZmZkOWQyOTJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxOS0xMC0yMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NsaXBib2FyZC1hcGlzL2FzeW5jLW5hdmlnYXRvci1jbGlw
Ym9hcmQtYmFzaWNzLmh0dHBzLmh0bWwgaXMgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzE4MQorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YS4KKworICAgICAgICBUaGlzIHRlc3QgaXMgZmxha3kgYmVjYXVzZSBpdHMgcmVz
dWx0cyBjdXJyZW50bHkgdmFyeSBkZXBlbmRpbmcgb24gd2hldGhlciBjb250ZW50IGFscmVhZHkg
ZXhpc3RzIG9uIHRoZQorICAgICAgICBwbGF0Zm9ybSBwYXN0ZWJvYXJkLiBJbiB0aGlzIHRlc3Qs
IHRoZSBwYWdlIGlzIGFibGUgdG8gcmVhZCBpdGVtcyBmcm9tIHRoZSBjbGlwYm9hcmQgc2luY2Ug
RE9NIHBhc3RlIGFuZAorICAgICAgICBwcm9ncmFtbWF0aWMgY2xpcGJvYXJkIGFjY2VzcyBhcmUg
ZW5hYmxlZCB3aGVuIHJ1bm5pbmcgbGF5b3V0IHRlc3RzLiBIb3dldmVyLCBpbiB0aGUgY2FzZSB3
aGVyZSB0aGUgcGFzdGVib2FyZAorICAgICAgICBpcyBlbXB0eSwgd2UgZW5kIHVwIHJlamVjdGlu
ZyB0aGUgcHJvbWlzZSBkdWUgdG8gYW4gZWFybHkgcmV0dXJuIGluIENsaXBib2FyZDo6cmVhZCgp
LiBJbiBjb250cmFzdCwgd2hlbiB0aGUKKyAgICAgICAgcGFzdGVib2FyZCBoYXMgYXQgbGVhc3Qg
b25lIGl0ZW0sIHdlJ2xsIGVuZCB1cCByZXNvbHZpbmcgdGhlIHByb21pc2Ugd2l0aCBhIHNlcXVl
bmNlIG9mIENsaXBib2FyZEl0ZW1zLCB3aGljaAorICAgICAgICB0aGVuIGNhdXNlcyB0aGUgdGVz
dCB0byBmYWlsIGJlY2F1c2UgaXQgZXhwZWN0cyB0aGlzIHJlc3VsdCB0byBiZSBhIERhdGFUcmFu
c2ZlciBpbnN0ZWFkICh3aGljaCwgYXQgdGltZSBvZgorICAgICAgICB3cml0aW5nLCBpcyBpbmNv
cnJlY3Qgdy5yLnQuIHRoZSBhc3luYyBjbGlwYm9hcmQgc3BlYykuCisKKyAgICAgICAgVG8gZml4
IHRoaXMsIHdlIHJlbW92ZSB0aGlzIGVhcmx5IHJldHVybiB0aGF0IHJlamVjdHMgdGhlIHByb21p
c2Ugd2hlbiB0aGVyZSBhcmUgbm8gcGFzdGVib2FyZCBpdGVtcywgYW5kCisgICAgICAgIGluc3Rl
YWQgYWxsb3cgdGhlIHByb21pc2UgdG8gcmVzb2x2ZSB3aXRoIG5vIGl0ZW1zLiBIb3dldmVyLCBz
aW1wbHkgcmVtb3ZpbmcgdGhpcyBjaGVjayB3b3VsZCBtZWFuIHRoYXQgaWYgdGhlCisgICAgICAg
IHBhc3RlYm9hcmQgY2hhbmdlIGNvdW50IGNoYW5nZXMgYmV0d2VlbiB0aGUgc3RhcnQgb2YgdGhl
IGNhbGwgdG8gQ2xpcGJvYXJkLnJlYWQoKSBhbmQgcmV0cmlldmFsIG9mIGl0ZW0KKyAgICAgICAg
aW5mb3JtYXRpb24gZnJvbSB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCwgd2UnbGwgbm8gbG9uZ2Vy
IHJlamVjdCB0aGUgcHJvbWltc2UgYXMgZXhwZWN0ZWQuIFRoaXMgaXMgYmVjYXVzZSB3ZQorICAg
ICAgICBjdXJyZW50bHkgaXRlcmF0ZSB0aHJvdWdoIGVhY2ggb2YgdGhlIGl0ZW1zIGFuZCBjaGVj
ayB0aGF0IHRoZSBpdGVtJ3MgY2hhbmdlIGNvdW50IG1hdGNoZXMsIHNvIGlmIHRoZXJlIGFyZSBu
bworICAgICAgICBpdGVtcywgd2Ugc2ltcGx5IGF2b2lkIGNoZWNraW5nIHRoZSBjaGFuZ2UgY291
bnQuCisKKyAgICAgICAgV2UgYWRkcmVzcyB0aGlzIGJ5IGluc3RlYWQgc2VuZGluZyB0aGUgZXhw
ZWN0ZWQgY2hhbmdlIGNvdW50IGFsb25nIHdpdGggdGhlIHJlcXVlc3QgZm9yIGFsbFBhc3RlYm9h
cmRJdGVtSW5mbygpLAorICAgICAgICBhbmQgcmVmYWN0b3JpbmcgdGhlIGltcGxlbWVudGF0aW9u
IG9mIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyAoYW5kIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgp
IHRvIGluc3RlYWQgY2hlY2sKKyAgICAgICAgdGhpcyBleHBlY3RlZCBjaGFuZ2UgY291bnQgYWdh
aW5zdCB0aGUgY3VycmVudCBjaGFuZ2UgY291bnQgb2YgdGhlIHBhc3RlYm9hcmQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkOjpyZWFkKToKKworICAgICAgICBSZW1vdmUgdGhlIGBhbGxJbmZvLmlz
RW1wdHkoKWAgZWFybHkgcmV0dXJuLCBhbmQgYWxzbyByZW1vdmUgYSBGSVhNRSB0aGF0IGlzIGFk
ZHJlc3NlZCBieSB0aGlzIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvIGNv
bnN0KToKKworICAgICAgICBNYWtlIHRoZXNlIG1ldGhvZHMgcmVxdWlyZSBhIGNoYW5nZUNvdW50
OyBhbHNvLCBtYWtlIHRoZXNlIHJldHVybiBvcHRpb25hbCByZXN1bHRzLgorCisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y2hh
bmdlQ291bnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUpOgorCisgICAgICAg
IFJlbW92ZSBQYXN0ZWJvYXJkSXRlbUluZm8ncyBjaGFuZ2VDb3VudCwgbm93IHRoYXQgdGhlIGNo
ZWNrIG9jY3VycyBpbiB0aGUgY2xpZW50IGxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyk6CisKKyAgICAgICAgTm9ybWFsaXplIGNoYW5n
ZUNvdW50IHRvIGJlIGEgYGludDY0X3RgLCB3aGljaCBtYXRjaGVzIGlPUyBhbmQgbWFjT1MgcGxh
dGZvcm1zLiBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIG5vdGlvbiBvZgorICAgICAgICBjaGFuZ2VD
b3VudCBpcyB2ZXJ5IGlsbC1kZWZpbmVkLCB3aXRoIHNvbWUgY2FsbCBzaXRlcyBleHBlY3Rpbmcg
YGxvbmdgIHR5cGVzLCBvdGhlciBjYWxsIHNpdGVzIGV4cGVjdGluZworICAgICAgICBgaW50YCwg
YW5kIHlldCBvdGhlcnMgZXhwZWN0aW5nIGB1aW50NjRfdGAuIFRoaXMgY2hhbmdlcyBhbGwgb2Yg
dGhlc2UgdG8gZXhwZWN0IGBpbnQ2NF90YC4KKworICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6cmVhZEZpbGVQYXRocyk6CisKKyAgICAgICAgUmVmYWN0b3IgdGhlc2UgbWV0aG9kcyB0byBi
YWlsIHdoZW4gdGhlIHJlc3VsdGluZyBpdGVtIGluZm9ybWF0aW9uIGhhcyBubyB2YWx1ZSAoaS5l
LiBXVEY6Om51bGxvcHQpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjphZGRUeXBl
cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybVBhc3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTEZvclR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
Ojp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNoYW5nZUNv
dW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29weSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisKIDIwMTktMTAtMjEgIERl
YW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudENvbnRl
eHQgZnJvbSBXZWJLaXQgdG8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZTE5NjI2OTkzMmE0ZGU4ODgy
NTA3NTM1OGI4OTFkYjUwYzE5NzJjLi5kMzZmMTRjOTgxOTZjYzk0NDA5NTcyYjZhN2NkYmE5ZmVj
NWJiMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTEwLTIxICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY2xpcGJvYXJkLWFwaXMvYXN5bmMtbmF2aWdhdG9yLWNsaXBib2FyZC1i
YXNpY3MuaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgorCisgICAgICAgIEFkZCBhIGNoYW5nZUNvdW50IGFyZ3VtZW50IHRvIGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXggYW5kIGFsbFBhc3RlYm9hcmRJdGVtSW5mbywgYW5kIGFsc28gbWFrZSB0
aGVuIHJldHVybgorICAgICAgICBvcHRpb25hbCB2YWx1ZXM7IGFsc28sIGFkanVzdCBjaGFuZ2VD
b3VudCB0byBiZSBhbiBgaW50NjRfdGAgaW4gYSBmZXcgcGxhY2VzLiBTZWUgV2ViQ29yZSBDaGFu
Z2VMb2cgZm9yIG1vcmUKKyAgICAgICAgZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZFByb3h5OjpwYXN0ZWJvYXJkQ29weSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZENoYW5nZUNvdW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJkVHlwZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRUeXBlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFVSTCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZENvbG9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9t
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJv
YXJkSXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKwogMjAxOS0xMC0yMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgTW92ZSBFbGVtZW50Q29udGV4dCBmcm9tIFdlYktpdCB0byBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzM2NTkyZDUyZmRhOTgzZGRmMTZkMTI1MmFlYTNi
OTQxNTA1NmI4MS4uYTUzOTVjNTJjMDg4N2JlMmEyZTc5MDJmZDJlZTY5NGExN2MxYjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTEwLTIxICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY2xpcGJvYXJkLWFwaXMvYXN5bmMtbmF2aWdhdG9yLWNs
aXBib2FyZC1iYXNpY3MuaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Unlvc3VrZSBOaXdhLgorCisgICAgICAgIEFkZCBhIGNoYW5nZUNvdW50IGFyZ3VtZW50IHRvIGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXggYW5kIGFsbFBhc3RlYm9hcmRJdGVtSW5mbywgYW5kIGFs
c28gbWFrZSB0aGVuIHJldHVybgorICAgICAgICBvcHRpb25hbCB2YWx1ZXMuIFNlZSBXZWJDb3Jl
IENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFu
Z2VDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFR5cGVzKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0VVJMKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29sb3IpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBl
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6
CisKIDIwMTktMTAtMTcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJld29yayBmcm9udGVuZCBhZ2VudCBjb25zdHJ1Y3Rpb24gdG8g
YWxsb3cgY29tbWFuZHMvZXZlbnRzIHRvIGJlIGNvbnRyb2xsZWQgYnkgdGhlIHJlbGF0ZWQgdGFy
Z2V0J3MgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZC5jcHAKaW5kZXggYjgxNDAwZGYyMTI3MzBlNTJhMGYwNThmYTVhYmJlYjAz
MDU0ZWNmYi4uNGY4YTM5NWEwOWQzOTYzYjNiYzVlMTc1NzhlYzU1Yjg2Nzg5N2NmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKICAgICB9CiAKICAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKLSAgICBpbnQgY2hhbmdlQ291bnRBdFN0YXJ0
ID0gcGFzdGVib2FyZC0+Y2hhbmdlQ291bnQoKTsKKyAgICBhdXRvIGNoYW5nZUNvdW50QXRTdGFy
dCA9IHBhc3RlYm9hcmQtPmNoYW5nZUNvdW50KCk7CiAKICAgICBpZiAoIWZyYW1lLT5yZXF1ZXN0
RE9NUGFzdGVBY2Nlc3MoKSkgewogICAgICAgICByZWplY3RQcm9taXNlQW5kQ2xlYXJBY3RpdmVT
ZXNzaW9uKCk7CkBAIC0xMDMsMjMgKzEwMywxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZChSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAKICAgICBpZiAoIW1fYWN0aXZlU2Vzc2lvbiB8
fCBtX2FjdGl2ZVNlc3Npb24tPmNoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50QXRTdGFydCkgewog
ICAgICAgICBhdXRvIGFsbEluZm8gPSBwYXN0ZWJvYXJkLT5hbGxQYXN0ZWJvYXJkSXRlbUluZm8o
KTsKLSAgICAgICAgaWYgKGFsbEluZm8uaXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghYWxsSW5m
bykgewogICAgICAgICAgICAgcmVqZWN0UHJvbWlzZUFuZENsZWFyQWN0aXZlU2Vzc2lvbigpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgVmVjdG9yPFJlZjxDbGlw
Ym9hcmRJdGVtPj4gY2xpcGJvYXJkSXRlbXM7Ci0gICAgICAgIGNsaXBib2FyZEl0ZW1zLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoYWxsSW5mby5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIGl0
ZW1JbmZvIDogYWxsSW5mbykgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHJlZmFjdG9yZWQgc3VjaCB0aGF0IHRoZSBpbml0aWFsIGNoYW5nZUNvdW50IGlzIGRlbGl2ZXJl
ZCB0byB0aGUgY2xpZW50LCB3aGVyZSBpdCBpcyB0aGVuIGNoZWNrZWQKLSAgICAgICAgICAgIC8v
IGFnYWluc3QgdGhlIGN1cnJlbnQgY2hhbmdlQ291bnQgb2YgdGhlIHBsYXRmb3JtIHBhc3RlYm9h
cmQuIEZvciBpbnN0YW5jZSwgaW4gV2ViS2l0MiwgdGhpcyB3b3VsZCByZWxvY2F0ZSB0aGUgY2hh
bmdlQ291bnQKLSAgICAgICAgICAgIC8vIGNoZWNrIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQg
b2YgdGhlIHdlYiBjb250ZW50IHByb2Nlc3MuCi0gICAgICAgICAgICBpZiAoaXRlbUluZm8uY2hh
bmdlQ291bnQgIT0gY2hhbmdlQ291bnRBdFN0YXJ0KSB7Ci0gICAgICAgICAgICAgICAgcmVqZWN0
UHJvbWlzZUFuZENsZWFyQWN0aXZlU2Vzc2lvbigpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgY2xpcGJvYXJkSXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShhbGxJbmZvLT5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIGl0ZW1JbmZvIDogKmFs
bEluZm8pCiAgICAgICAgICAgICBjbGlwYm9hcmRJdGVtcy51bmNoZWNrZWRBcHBlbmQoQ2xpcGJv
YXJkSXRlbTo6Y3JlYXRlKCp0aGlzLCBpdGVtSW5mbykpOwotICAgICAgICB9CiAgICAgICAgIG1f
YWN0aXZlU2Vzc2lvbiA9IHt7IFdURk1vdmUocGFzdGVib2FyZCksIFdURk1vdmUoY2xpcGJvYXJk
SXRlbXMpLCBjaGFuZ2VDb3VudEF0U3RhcnQgfX07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCmluZGV4IDg3YWU1N2Fj
ODQwZTc3YTA3ZTdlOTFmNjAxMzEzMmEwMzU2MmMxNGQuLmQ1OTc1MWJmNTI0OTg1OTIwMDQ2YjUy
YTViNTYzNjQ0ZWEzYmU2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAg
c3RydWN0IFNlc3Npb24gewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFz
dGVib2FyZDsKICAgICAgICAgVmVjdG9yPFJlZjxDbGlwYm9hcmRJdGVtPj4gaXRlbXM7Ci0gICAg
ICAgIGludCBjaGFuZ2VDb3VudDsKKyAgICAgICAgaW50NjRfdCBjaGFuZ2VDb3VudDsKICAgICB9
OwogCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggZDA3YTVmYWUwNjU2ODc4NjZmNmFmMGJi
ODI0NDQzM2UzNzgxZGE4Mi4uNTEwNjRmZjNkYTg3ZTNjMzFlNzliZWFlMjFkZDU1ZGMxOWZjODk4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTYyLDE4ICs2Miwy
NCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJp
bmcmIHR5cGUpCiAKICNlbmRpZgogCi1WZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJv
YXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdAorT3B0aW9uYWw8VmVjdG9yPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpIGNvbnN0
CiB7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3Ry
YXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCkpOwotICAgIHJldHVybiB7IH07Cisg
ICAgICAgIHJldHVybiBzdHJhdGVneS0+YWxsUGFzdGVib2FyZEl0ZW1JbmZvKG5hbWUoKSwgbV9j
aGFuZ2VDb3VudCk7CisjZW5kaWYKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1QYXN0
ZWJvYXJkSXRlbUluZm8gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRl
eCkgY29uc3QKK09wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZDo6cGFzdGVi
b2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCkpCi0gICAgICAgIHJldHVybiBzdHJhdGVneS0+aW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChpbmRleCwgbmFtZSgpKTsKLSAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4g
c3RyYXRlZ3ktPmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSwgbV9jaGFu
Z2VDb3VudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCAzYmNkZDgyMzVjM2RhMTk1N2UxM2YyNDk0YmE5ZmRjNGNkZTFlY2VhLi45
NGZiMWQwNjRkOTg2YzU0MzcxZjdiODU4YjM2YjQzZDUxMjRlZGJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yMzgsNyArMjM4LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQobG9uZyBj
aGFuZ2VDb3VudCk7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChpbnQ2NF90IGNoYW5nZUNvdW50
KTsKICAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogCiAgICAgc3RhdGljIE5TQXJyYXkgKnN1cHBvcnRlZFdlYkNvbnRlbnRQYXN0ZWJvYXJkVHlw
ZXMoKTsKQEAgLTI1MiwxMCArMjUyLDEwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdENvY29hVHlwZUFzRmlsZShjb25zdCBTdHJpbmcm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNBcnJheSAqc3VwcG9ydGVkRmlsZVVwbG9h
ZFBhc3RlYm9hcmRUeXBlcygpOwotICAgIGxvbmcgY2hhbmdlQ291bnQoKSBjb25zdDsKKyAgICBp
bnQ2NF90IGNoYW5nZUNvdW50KCkgY29uc3Q7CiAgICAgY29uc3QgUGFzdGVib2FyZEN1c3RvbURh
dGEmIHJlYWRDdXN0b21EYXRhKCk7CiAjZWxzZQotICAgIGxvbmcgY2hhbmdlQ291bnQoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgaW50NjRfdCBjaGFuZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yNzMsOCArMjczLDggQEAg
cHVibGljOgogICAgIHZvaWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50JiwgY29uc3Qg
VVJMJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAjZW5kaWYKIAotICAgIFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpIGNvbnN0OwotICAg
IFBhc3RlYm9hcmRJdGVtSW5mbyBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25z
dDsKKyAgICBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKCkgY29uc3Q7CisgICAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0
ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFkU3Ry
aW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKTsKQEAgLTMwMiw3ICszMDIsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRocygpOwotICAgIFZlY3RvcjxTdHJpbmc+
IHJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGxvbmcg
Y2hhbmdlQ291bnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFZlY3RvcjxT
dHJpbmc+IHJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyhjb25zdCBTdHJpbmcmIGRvbVR5cGUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAg
IHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNl
dDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0
cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7CkBAIC0zMTgsNyArMzE4LDcg
QEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyBtX3Bhc3RlYm9h
cmROYW1lOwotICAgIGxvbmcgbV9jaGFuZ2VDb3VudDsKKyAgICBpbnQ2NF90IG1fY2hhbmdlQ291
bnQ7CiAgICAgT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IG1fY3VzdG9tRGF0YUNhY2hl
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRJdGVtSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZv
LmgKaW5kZXggM2IzOTdjMzczNGQzMmEwZmI2MGU3MDMxZWY5ZDBiYzVhYjQ4MzJjMS4uMDllZThm
OTc2ODIxMzkyN2U4ZjNjNTU4ZTNjOTA2NWI1Y2I0NmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKQEAgLTczLDcgKzczLDYgQEAgc3RydWN0IFBh
c3RlYm9hcmRJdGVtSW5mbyB7CiAgICAgYm9vbCBpc05vblRleHRUeXBlIHsgZmFsc2UgfTsKICAg
ICBib29sIGNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50IHsgZmFsc2UgfTsKICAg
ICBWZWN0b3I8U3RyaW5nPiB3ZWJTYWZlVHlwZXNCeUZpZGVsaXR5OwotICAgIGludCBjaGFuZ2VD
b3VudCB7IDAgfTsKICAgICBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHByZWZlcnJl
ZFByZXNlbnRhdGlvblN0eWxlIHsgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6VW5z
cGVjaWZpZWQgfTsKIAogICAgIFN0cmluZyBwYXRoRm9yQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdApAQCAtMTI3LDcgKzEyNiw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFzdGVib2FyZEl0ZW1JbmZvOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHBhdGhzRm9y
RmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVz
QnlGaWRlbGl0eSA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplIDw8IGlzTm9uVGV4dFR5cGUgPDwgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRl
bnQgPDwgd2ViU2FmZVR5cGVzQnlGaWRlbGl0eSA8PCBjaGFuZ2VDb3VudDsKKyAgICBlbmNvZGVy
IDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVzRm9yRmlsZVVwbG9hZCA8PCBw
bGF0Zm9ybVR5cGVzQnlGaWRlbGl0eSA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplIDw8IGlzTm9uVGV4dFR5cGUgPDwgY29udGFpbnNGaWxlVVJMQW5kRmls
ZVVwbG9hZENvbnRlbnQgPDwgd2ViU2FmZVR5cGVzQnlGaWRlbGl0eTsKICAgICBlbmNvZGVyLmVu
Y29kZUVudW0ocHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOwogfQogCkBAIC0xNTksOSArMTU4
LDYgQEAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkSXRlbUluZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lndl
YlNhZmVUeXBlc0J5RmlkZWxpdHkpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhbmdlQ291bnQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCA2
MTYyOTQyZjczY2JiYTIyMWUyMDE5ZTJiOTc3YjIwMTVhODE1NmRkLi41ODU2MjBmY2MzOGI0MWQy
ZDM1YmQxYmE4NjExNzNiNjA0N2U0YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtNTQsMjggKzU0LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVh
bCBsb25nIGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAg
ICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUoKSA9IDA7CiAgICAgdmlydHVh
bCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKIAotICAgIHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmly
dHVhbCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGxvbmcgc2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBsb25nIHNl
dFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwotICAgIHZpcnR1YWwgbG9uZyBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGxvbmcgc2V0U3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90
IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJv
YXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0ZWJv
YXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25h
bDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpID0gMDsKICAgICB2
aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKSA9IDA7Ci0gICAgdmlydHVhbCBsb25nIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBW
ZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9y
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTZWxlY3Rpb25EYXRhJikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBm
ZjAzNGU3MTdhNzdiMWI2NDQxNjE0YWI2MzBiMGJmZWU0NzllNWU5Li42MGJiOTFiYmFkYmM5N2Y1
MzgwM2YwMjMwMTZkZTY1YWQ4Y2YxNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
KTsKICNlbmRpZgotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhpbnQ2NF90IGNoYW5nZUNvdW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIHVuaXF1ZU5hbWUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
Y29uc3QgU3RyaW5nJiBkb21UeXBlKTsKQEAgLTczLDIwICs3MywyMCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIGxvbmcgY2hhbmdlQ291bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2
NF90IGNoYW5nZUNvdW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgY29sb3Io
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgdXJsKCk7CiAKICAgICAvLyBUYWtlIG93bmVyc2hp
cCBvZiB0aGUgcGFzdGVib2FyZCwgYW5kIHJldHVybiBuZXcgY2hhbmdlIGNvdW50LgotICAgIFdF
QkNPUkVfRVhQT1JUIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGFk
ZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOworICAgIFdFQkNP
UkVfRVhQT1JUIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcyk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVi
b2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KLSAgICBXRUJDT1JFX0VYUE9S
VCBsb25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgc2V0VVJMKGNvbnN0IFBh
c3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHNldENvbG9yKGNvbnN0IENv
bG9yJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwo
Y29uc3QgUGFzdGVib2FyZFVSTCYpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29s
b3IoY29uc3QgQ29sb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmKTsKQEAgLTk2LDggKzk2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IG51bWJlck9mRmlsZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHdyaXRl
KGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBsb25nIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgaW50NjRfdCB3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+Jik7
CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgb3JpZ2luKSBjb25zdDsKIAogI2lmIFBMQVRG
T1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbQppbmRleCAxNjYzNjliZjdkYjhkYjEyN2Q0OWU0N2FmYzlkMWY2ZDRiOWJhZGYxLi42
ZGViNjJjZDAyYjljNWNjOGFjNjhlNTdmNDU5YjA0Y2MxZmQyYzAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xNDQsNyArMTQ0
LDEwIEBAIFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50U3RhdGUgUGFzdGVib2FyZDo6ZmlsZUNvbnRl
bnRTdGF0ZSgpCiAgICAgICAgIC8vIGFuIGlubGluZSBwaWVjZSBvZiB0ZXh0LCB3aXRoIG5vIGZp
bGVzIGluIHRoZSBwYXN0ZWJvYXJkIChhbmQgdGhlcmVmb3JlLCBubyByaXNrIG9mIGxlYWtpbmcg
ZmlsZSBwYXRocwogICAgICAgICAvLyB0byB3ZWIgY29udGVudCkuIEluIGNhc2VzIHN1Y2ggYXMg
dGhlc2UsIHdlIHNob3VsZCBub3Qgc3VwcHJlc3MgRGF0YVRyYW5zZmVyIGFjY2Vzcy4KICAgICAg
ICAgYXV0byBpdGVtcyA9IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwotICAgICAgICBtYXlDb250
YWluRmlsZVBhdGhzID0gaXRlbXMuc2l6ZSgpICE9IDEgfHwgbm90Rm91bmQgIT0gaXRlbXMuZmlu
ZE1hdGNoaW5nKFtdIChhdXRvJiBpdGVtKSB7CisgICAgICAgIGlmICghaXRlbXMpCisgICAgICAg
ICAgICByZXR1cm4gRmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFnZURhdGE7CisKKyAgICAg
ICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGl0ZW1zLT5zaXplKCkgIT0gMSB8fCBub3RGb3VuZCAh
PSBpdGVtcy0+ZmluZE1hdGNoaW5nKFtdIChhdXRvJiBpdGVtKSB7CiAgICAgICAgICAgICByZXR1
cm4gaXRlbS5jYW5CZVRyZWF0ZWRBc0F0dGFjaG1lbnRPckZpbGUoKSB8fCBpdGVtLmlzTm9uVGV4
dFR5cGUgfHwgaXRlbS5jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudDsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMjgwLDcgKzI4Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVD
dXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEpCiAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+d3JpdGVDdXN0b21EYXRhKGRhdGEsIG5hbWUoKSk7CiB9CiAKLWxvbmcgUGFzdGVib2FyZDo6
Y2hhbmdlQ291bnQoKSBjb25zdAoraW50NjRfdCBQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCmlu
ZGV4IDM0OTU0MzNlYWNlOTY4YjYzNjJmNmU1NmM0NGNkNTg4MzNkYWViYzUuLmMzOTNjYWNlYTNk
YWE1YWI0M2NhMzE1ZGU5ZjNlMTZmNTA5OTRjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCkBAIC0yOCwx
NSArMjgsMjcgQEAKIAogI2ltcG9ydCAiUGFzdGVib2FyZEl0ZW1JbmZvLmgiCiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWJzdHJhY3RQYXN0ZWJvYXJkLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpCitPcHRpb25hbDxWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8oaW50NjRfdCBjaGFuZ2VDb3VudCkKIHsKKyAgICBpZiAoY2hhbmdlQ291bnQgIT0gW21f
cGFzdGVib2FyZCBjaGFuZ2VDb3VudF0pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
ICAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBpdGVtSW5mbzsKICAgICBpbnQgbnVtYmVy
T2ZJdGVtcyA9IGNvdW50KCk7CiAgICAgaXRlbUluZm8ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
dW1iZXJPZkl0ZW1zKTsKLSAgICBmb3IgKE5TSW50ZWdlciBpdGVtSW5kZXggPSAwOyBpdGVtSW5k
ZXggPCBudW1iZXJPZkl0ZW1zOyArK2l0ZW1JbmRleCkKLSAgICAgICAgaXRlbUluZm8udW5jaGVj
a2VkQXBwZW5kKGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaXRlbUluZGV4KSk7CisgICAgZm9y
IChOU0ludGVnZXIgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytp
dGVtSW5kZXgpIHsKKyAgICAgICAgYXV0byBpdGVtID0gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpdGVtSW5kZXgsIGNoYW5nZUNvdW50KTsKKyAgICAgICAgaWYgKCFpdGVtKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBpdGVtSW5mby51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZSgqaXRlbSkpOworICAgIH0KICAgICByZXR1cm4gaXRlbUluZm87CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0
ay5jcHAKaW5kZXggZjljZjYwMWQxMDE4ZmE1Nzc4ZThkZWRmNDlkODIyM2M5NGRlMWU3MS4uMzhi
MTVjZmViM2Q5YmQ3YmM2ZDYwNzA5YmUzZmU3NzgwNjY3YmYyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKQEAgLTUx
LDEyICs1MSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21E
YXRhJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikKK2ludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURh
dGE+JikKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMTAzMWU1MTdhZjZmODQ2M2JmYWQzMjY4ZDEzN2UxZGNh
ZTdiY2NiZC4uNTVkYzczM2Y2MWUyM2QwODU3N2FlODE5MmUzYzNhZjNkOTYxMWE4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTc2LDcgKzc2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRy
YWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmEKIAogI2VuZGlmCiAKLXN0YXRpYyBsb25nIGNo
YW5nZUNvdW50Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lID0geyB9
KQorc3RhdGljIGludDY0X3QgY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUgPSB7IH0pCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQocGFzdGVib2FyZE5hbWUpOwogfQpA
QCAtOTAsNyArOTAsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKIHsKIH0KIAotUGFzdGVi
b2FyZDo6UGFzdGVib2FyZChsb25nIGNoYW5nZUNvdW50KQorUGFzdGVib2FyZDo6UGFzdGVib2Fy
ZChpbnQ2NF90IGNoYW5nZUNvdW50KQogICAgIDogbV9jaGFuZ2VDb3VudChjaGFuZ2VDb3VudCkK
IHsKIH0KQEAgLTMxMywxMyArMzEzLDE2IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAg
ICAgIGlmIChpdGVtSW5kZXggJiYgaSAhPSAqaXRlbUluZGV4KQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3ku
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpLCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNv
dW50KTsKKyAgICAgICAgaWYgKCFpbmZvKQorICAgICAgICAgICAgcmV0dXJuOworCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYm
IHByZWZlcnNBdHRhY2htZW50UmVwcmVzZW50YXRpb24oaW5mbykpIHsKLSAgICAgICAgICAgIGF1
dG8gdHlwZUZvckZpbGVVcGxvYWQgPSBpbmZvLmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5
SXRlbSgpOworICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYgcHJlZmVyc0F0dGFjaG1l
bnRSZXByZXNlbnRhdGlvbigqaW5mbykpIHsKKyAgICAgICAgICAgIGF1dG8gdHlwZUZvckZpbGVV
cGxvYWQgPSBpbmZvLT5jb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKTsKICAgICAg
ICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpLCB0eXBlRm9yRmlsZVVwbG9hZCwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKICAgICAgICAgICAg
ICAgICByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRl
Z3ksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lLCBpKTsKLSAgICAgICAgICAg
ICAgICByZWFkZXIucmVhZERhdGFCdWZmZXIoKmJ1ZmZlciwgdHlwZUZvckZpbGVVcGxvYWQsIGlu
Zm8uc3VnZ2VzdGVkRmlsZU5hbWUsIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSk7Cisg
ICAgICAgICAgICAgICAgcmVhZGVyLnJlYWREYXRhQnVmZmVyKCpidWZmZXIsIHR5cGVGb3JGaWxl
VXBsb2FkLCBpbmZvLT5zdWdnZXN0ZWRGaWxlTmFtZSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTMzMCw3ICszMzMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAgICAg
ICAgICAgaWYgKCFpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9saWN5KHR5cGUsIHBvbGljeSkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9
IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5
cGUsIGluZm8sIGkpOworICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9h
cmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgKmluZm8sIGkp
OwogICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJk
V2FzQ2hhbmdlZEV4dGVybmFsbHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTcs
MjQgKzM2MCwyNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGll
cyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLAogICAgICAgICAgICAgY29udGlu
dWU7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgICAgICBhdXRvIGluZm8g
PSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmRO
YW1lKTsKLSAgICAgICAgYXV0byBhdHRhY2htZW50RmlsZVBhdGggPSBpbmZvLnBhdGhGb3JIaWdo
ZXN0RmlkZWxpdHlJdGVtKCk7CisgICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQp
OworICAgICAgICBpZiAoIWluZm8pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byBhdHRhY2htZW50RmlsZVBhdGggPSBpbmZvLT5wYXRoRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgp
OwogICAgICAgICBib29sIGNhblJlYWRBdHRhY2htZW50ID0gcG9saWN5ID09IFdlYkNvbnRlbnRS
ZWFkaW5nUG9saWN5OjpBbnlUeXBlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkgJiYgIWF0dGFjaG1lbnRGaWxlUGF0
aC5pc0VtcHR5KCk7Ci0gICAgICAgIGF1dG8gY29udGVudFR5cGUgPSBpbmZvLmNvbnRlbnRUeXBl
Rm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOwotICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQg
JiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbihpbmZvKSkgeworICAgICAgICBhdXRv
IGNvbnRlbnRUeXBlID0gaW5mby0+Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7
CisgICAgICAgIGlmIChjYW5SZWFkQXR0YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJl
c2VudGF0aW9uKCppbmZvKSkgewogICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1l
bnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJk
TmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlUGF0aChXVEZNb3ZlKGF0
dGFjaG1lbnRGaWxlUGF0aCksIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVu
dFR5cGUpOworICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlUGF0aChXVEZNb3ZlKGF0dGFjaG1l
bnRGaWxlUGF0aCksIGluZm8tPnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUsIGNvbnRlbnRUeXBl
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgLy8g
VHJ5IHRvIHJlYWQgZGF0YSBmcm9tIGVhY2ggdHlwZSBpZGVudGlmaWVyIHRoYXQgdGhpcyBwYXN0
ZWJvYXJkIGl0ZW0gc3VwcG9ydHMsIGFuZCBXZWJLaXQgYWxzbyByZWNvZ25pemVzLiBUeXBlIGlk
ZW50aWZpZXJzIGFyZQogICAgICAgICAvLyByZWFkIGluIG9yZGVyIG9mIGZpZGVsaXR5LCBhcyBz
cGVjaWZpZWQgYnkgZWFjaCBwYXN0ZWJvYXJkIGl0ZW0uCiAgICAgICAgIFJlYWRlclJlc3VsdCBy
ZXN1bHQgPSBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwotICAgICAgICBmb3IgKGF1dG8m
IHR5cGUgOiBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5KSB7CisgICAgICAgIGZvciAoYXV0
byYgdHlwZSA6IGluZm8tPnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5KSB7CiAgICAgICAgICAgICBp
ZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRX
ZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaW5mbywgaW5kZXgp
OworICAgICAgICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5
cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgKmluZm8sIGluZGV4KTsKICAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFk
ZXJSZXN1bHQ6OlJlYWRUeXBlKQpAQCAtMzgyLDcgKzM4OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiBy
ZWFkZXIsCiAgICAgICAgIH0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAg
ICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYgcmVzdWx0ID09IFJlYWRlclJlc3VsdDo6RGlkTm90
UmVhZFR5cGUpCi0gICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNo
bWVudEZpbGVQYXRoKSwgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplLCBjb250ZW50VHlw
ZSk7CisgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZp
bGVQYXRoKSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVudFR5cGUpOwog
I2VuZGlmCiAgICAgfQogfQpAQCAtNDU3LDcgKzQ2Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xl
YXIoKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3Jp
dGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0K
IAotVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdz
KGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgbG9uZyBjaGFuZ2VDb3VudCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK1ZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZh
bHVlc0FzU3RyaW5ncyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgYXV0byYgc3RyYXRlZ3kgPSAq
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCkBAIC01MjQsNyAr
NTMwLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMoKQogICAg
IGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKTsKICAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0ZW1zID0gc3Ry
YXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7IGluZGV4IDwg
bnVtYmVyT2ZJdGVtczsgKytpbmRleCkgewogICAgICAgICAvLyBDdXJyZW50bHksIGRyYWcgYW5k
IGRyb3AgaXMgdGhlIG9ubHkgY2FzZSBvbiBpT1Mgd2hlcmUgdGhlICJwYXN0ZWJvYXJkIiBtYXkg
Y29udGFpbiBmaWxlIHBhdGhzLgotICAgICAgICBhdXRvIGZpbGVQYXRoID0gc3RyYXRlZ3kuaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSkucGF0aEZvckhp
Z2hlc3RGaWRlbGl0eUl0ZW0oKTsKKyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3Vu
dCk7CisgICAgICAgIGlmICghaW5mbykKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAg
ICAgYXV0byBmaWxlUGF0aCA9IGluZm8tPnBhdGhGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CiAg
ICAgICAgIGlmICghZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICAgICAgZmlsZVBhdGhzLmFw
cGVuZChXVEZNb3ZlKGZpbGVQYXRoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOGNiM2I2MDE3YjFk
MmMyNDNmOGM0MWI2OTYwMWRlOWVhYWRkMzU2NC4uMDg4NWVhM2E0M2I2YTNjNThkODUxMjFlNmQy
NjA0ODU3MTY1NzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xNjQsMTAgKzE2NCwxMyBAQCBzdGF0aWMgUGFz
dGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZSBwYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlKFVJUHJlZmVycgogCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJ
T05fU1RZTEVfQU5EX1RFQU1fREFUQQogCi1QYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0
ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkKK09wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCkKIHsKICAgICBpZiAo
aW5kZXggPj0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oW21fcGFzdGVib2FyZCBudW1iZXJPZkl0
ZW1zXSkpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBpZiAodGhpcy0+Y2hhbmdlQ291bnQoKSAhPSBjaGFuZ2VDb3VudCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOwogICAg
IE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbW21fcGFzdGVib2FyZCBpdGVtUHJvdmlk
ZXJzXSBvYmplY3RBdEluZGV4OmluZGV4XTsKQEAgLTIzMCw3ICsyMzMsNiBAQCBQYXN0ZWJvYXJk
SXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCkKICAgICAgICAgaW5mby5pc05vblRleHRUeXBlID0gdHJ1ZTsKICAgICB9CiAK
LSAgICBpbmZvLmNoYW5nZUNvdW50ID0gY2hhbmdlQ291bnQoKTsKICAgICBpbmZvLndlYlNhZmVU
eXBlc0J5RmlkZWxpdHkgPSB3ZWJTYWZlVHlwZXMocmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycywg
WyZdIHsKICAgICAgICAgcmV0dXJuIHNob3VsZFRyZWF0QXRMZWFzdE9uZVR5cGVBc0ZpbGUocmVn
aXN0ZXJlZFR5cGVJZGVudGlmaWVycykgJiYgIVBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9N
V2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKHJlYWRTdHJpbmcoaW5kZXgsIGtVVFR5cGVVUkwp
KTsKICAgICB9KTsKQEAgLTI0MCw5ICsyNDIsOSBAQCBQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZv
cm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkKIAog
I2Vsc2UKIAotUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChzaXplX3QpCitPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBs
YXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QsIGludDY0
X3QpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiAj
ZW5kaWYKQEAgLTI4MCwzNyArMjgyLDM3IEBAIFVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgp
CiAgICAgcmV0dXJuIFVSTCgpOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29weShj
b25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvcHkoY29uc3QgU3Ry
aW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFk
ZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
OjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAK
LWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
CitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKQogewogICAgIHJldHVybiAwOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLWxvbmcg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQogCi1sb25n
IFBsYXRmb3JtUGFzdGVib2FyZDo6Y2hhbmdlQ291bnQoKSBjb25zdAoraW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gW21fcGFzdGVi
b2FyZCBjaGFuZ2VDb3VudF07CiB9CkBAIC0zNzUsNyArMzc3LDcgQEAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0
ICpyZXByZXMKICAgICByZWdpc3Rlckl0ZW1zVG9QYXN0ZWJvYXJkKEBbIHJlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgXSwgcGFzdGVib2FyZCk7CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZv
TGlzdCBhbGxvY10gaW5pdF0pOwogICAgIFVJQ29sb3IgKnVpQ29sb3IgPSBbUEFMOjpnZXRVSUNv
bG9yQ2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXTsKQEAgLTYx
Myw3ICs2MTUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlv
bkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIHJldHVybiByZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYgaXRlbURhdGEpCitpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYgaXRlbURhdGEpCiB7CiAgICAgYXV0byByZWdpc3RyYXRpb25MaXN0cyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTppdGVtRGF0YS5zaXplKCldKTsK
ICAgICBmb3IgKGF1dG8mIGRhdGEgOiBpdGVtRGF0YSkgewpAQCAtNjI2LDcgKzYyOCw3IEBAIGxv
bmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3Rv
bURhdGE+JiBpdGVtRGF0YSkKIAogI2Vsc2UKIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dENvbG9yKGNvbnN0IENvbG9yJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRDb2xv
cihjb25zdCBDb2xvciYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC02NTcsNyArNjU5LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWxvbmcgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
K2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2Fy
ZEN1c3RvbURhdGE+JikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTc1OCw3ICs3NjAsNyBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0eQogICAgIFttX3Bhc3RlYm9hcmQgdXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzOnR5cGVzQXJyYXldOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCitpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiB7
CiAgICAgcmV0dXJuIHdyaXRlKFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4geyBkYXRhIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3Jt
UGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxh
dGZvcm1QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCBkNTI3MWU4OTA4ZDAyZWQzYWZhOTQ2Nzhm
OTdmMWFmMmE1MDVhZjYzLi4zZGQ0OGU5ZjE4ZjI3MTEwZTgxNmUyNjIwMTA1YWZiOGZlZDhkMDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZvcm1QYXN0
ZWJvYXJkTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxh
dGZvcm1QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtMTIyLDEyICsxMjIsMTIgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYpCitpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmKQogewogICAgIHJl
dHVybiAwOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgVmVjdG9y
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYpCiB7CiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4
IDg4ZjQ0YjYyNjNmNjAxMzk2OTRhNjNmYjA5Nzg1MjllOGMyNzllNzYuLmU2MjJiNjFhN2IxYzM4
MTM2MzRlMDQzMWY1NmI3NjVmNGMzYmZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbiBz
bWFydFJlcGwKIAogc3RhdGljIGxvbmcgd3JpdGVVUkxGb3JUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7Ci0gICAgbG9uZyBuZXdDaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIHBh
c3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgcGFzdGVib2FyZE5h
bWUpOwogICAgIAogICAgIEFTU0VSVCghcGFzdGVib2FyZFVSTC51cmwuaXNFbXB0eSgpKTsKICAg
ICAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIo
Y29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgcmV0dXJuIHdyYXBw
ZXI7CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5T
RmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxvbmcm
IG5ld0NoYW5nZUNvdW50KQorc3RhdGljIHZvaWQgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFj
aG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpCiB7CiAgICAgTlNUZXh0QXR0YWNobWVudCAqYXR0
YWNobWVudCA9IFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjp3
cmFwcGVyXTsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJpYnV0ZWRT
dHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0dGFjaG1lbnRdOwpAQCAtMzIz
LDkgKzMyMywxMCBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYg
dGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIGF1dG8mIHN0cmF0ZWd5
ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGlmIChpdGVtSW5kZXgpCi0gICAgICAgIHR5cGVzID0g
c3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgqaXRlbUluZGV4ICwgbV9wYXN0ZWJv
YXJkTmFtZSkucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7Ci0gICAgZWxzZQorICAgIGlmIChpdGVt
SW5kZXgpIHsKKyAgICAgICAgaWYgKGF1dG8gaXRlbUluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KCppdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291
bnQpKQorICAgICAgICAgICAgdHlwZXMgPSBpdGVtSW5mby0+cGxhdGZvcm1UeXBlc0J5RmlkZWxp
dHk7CisgICAgfSBlbHNlCiAgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJk
VHlwZVN0cmluZykpKSB7CkBAIC00MDYsOSArNDA3LDEwIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1Bv
bGljCiAgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgaWYgKGl0ZW1J
bmRleCkKLSAgICAgICAgdHlwZXMgPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KCppdGVtSW5kZXggLCBtX3Bhc3RlYm9hcmROYW1lKS5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eTsK
LSAgICBlbHNlCisgICAgaWYgKGl0ZW1JbmRleCkgeworICAgICAgICBpZiAoYXV0byBpdGVtSW5m
byA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoKml0ZW1JbmRleCwgbV9wYXN0
ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCkpCisgICAgICAgICAgICB0eXBlcyA9IGl0ZW1JbmZv
LT5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eTsKKyAgICB9IGVsc2UKICAgICAgICAgc3RyYXRlZ3ku
Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogCiAgICAgcmVhZGVyLmNvbnRlbnRP
cmlnaW4gPSByZWFkT3JpZ2luKCk7CkBAIC01ODAsNyArNTgyLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShlbXB0
eVN0cmluZygpLCBjb2NvYVR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogfQogCi1WZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5n
JiBkb21UeXBlLCBsb25nIGNoYW5nZUNvdW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQorVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdz
KGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAgICAgYXV0byBjb2NvYVR5cGUgPSBjb2Nv
YVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoZG9tVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBmNWU0YzQw
Nzg5ODQxNmEwNWQyNGVhZjFjOTRmNTQ4NWM2YTNjY2VlLi41ZWM1OWQyZmZkOWRlNWMxZGJjYTQx
NzZmMDcwZTY2ZmQwOWQ5Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTIyMiw3ICsyMjIsNyBAQCBWZWN0b3I8
U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRl
KGNvbnN0IFN0cmluZyYgbwogICAgIHJldHVybiBjb3B5VG9WZWN0b3IoZG9tUGFzdGVib2FyZFR5
cGVzKTsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRDdXN0b21EYXRhJiBkYXRhKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogewogICAgIE5TTXV0YWJsZUFycmF5ICp0
eXBlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgZGF0YS5mb3JFYWNoVHlwZShbJl0g
KGF1dG8mIHR5cGUpIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgcmV0dXJuIGNo
YW5nZUNvdW50KCk7CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCgp
IGNvbnN0CitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6Y2hhbmdlQ291bnQoKSBjb25zdAog
ewogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGNoYW5nZUNvdW50XTsKIH0KQEAgLTI4
NCw3ICsyODQsNyBAQCBVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogICAgIHJldHVybiBb
TlNVUkwgVVJMRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXTsKIH0KIAotbG9uZyBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCkKK2lu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9h
cmQpCiB7CiAgICAgTlNQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0
ZWJvYXJkV2l0aE5hbWU6ZnJvbVBhc3RlYm9hcmRdOwogICAgIE5TQXJyYXkqIHR5cGVzID0gW3Bh
c3RlYm9hcmQgdHlwZXNdOwpAQCAtMjk4LDcgKzI5OCw3IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpCiAgICAgcmV0dXJuIGNoYW5n
ZUNvdW50KCk7CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjphZGRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiB7CiAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFzdGVib2Fy
ZFR5cGVzLnNpemUoKTsgKytpKQpAQCAtMzA3LDcgKzMwNyw3IEBAIGxvbmcgUGxhdGZvcm1QYXN0
ZWJvYXJkOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQog
ICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVzOnR5cGVzLmdldCgpIG93bmVy
Om5pbF07CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiB7CiAgICAg
aWYgKHBhc3RlYm9hcmRUeXBlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBbbV9wYXN0ZWJv
YXJkIGRlY2xhcmVUeXBlczpAW10gb3duZXI6bmlsXTsKQEAgLTMxOSw3ICszMTksNyBAQCBsb25n
IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZC5nZXQoKSBkZWNsYXJlVHlwZXM6
dHlwZXMuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAg
ICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwog
ICAgIGlmICghZGlkV3JpdGVEYXRhKQpAQCAtMzI3LDcgKzMyNyw3IEBAIGxvbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHBhCiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CiB9CiAKLWxvbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKK2lu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFz
dGVib2FyZFVSTCkKIHsKICAgICBOU1VSTCAqY29jb2FVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybDsK
ICAgICBOU0FycmF5ICp1cmxXaXRoVGl0bGUgPSBAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmlu
ZyBdLCBAWyBwYXN0ZWJvYXJkVVJMLnRpdGxlIF0gXTsKQEAgLTMzOSwxNCArMzM5LDE0IEBAIGxv
bmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVi
b2FyZFVSTCkKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKIH0KIAotbG9uZyBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK2ludDY0X3QgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgTlNDb2xvciAq
cGFzdGVib2FyZENvbG9yID0gbnNDb2xvcihjb2xvcik7CiAgICAgW3Bhc3RlYm9hcmRDb2xvciB3
cml0ZVRvUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOwogICAgIHJldHVybiBjaGFuZ2VD
b3VudCgpOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0
X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIEJPT0wgZGlkV3JpdGVE
YXRhOwogCkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJ
dGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICBy
ZXR1cm4gaXRlbTsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZl
Y3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0ZW1EYXRhKQoraW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0ZW1E
YXRhKQogewogICAgIGlmIChpdGVtRGF0YS5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIHdy
aXRlKGl0ZW1EYXRhLmZpcnN0KCkpOwpAQCAtNDk5LDExICs0OTksMTQgQEAgbG9uZyBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0
ZW1EYXRhKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGNoYW5nZUNvdW50XTsKIH0KIAotUGFz
dGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgpCitPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0
X3QgY2hhbmdlQ291bnQpCiB7CisgICAgaWYgKGNoYW5nZUNvdW50ICE9IFttX3Bhc3RlYm9hcmQg
Y2hhbmdlQ291bnRdKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgTlNQYXN0
ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCi0g
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBQ
YXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKICAgICBOU0FycmF5PE5TUGFzdGVib2FyZFR5cGU+ICpw
bGF0Zm9ybVR5cGVzID0gW2l0ZW0gdHlwZXNdOwpAQCAtNTIwLDcgKzUyMyw2IEBAIFBhc3RlYm9h
cmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIH0KICAgICBpbmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxv
YWRDb250ZW50ID0gY29udGFpbnNGaWxlVVJMID09IENvbnRhaW5zRmlsZVVSTDo6WWVzOwogICAg
IGluZm8ud2ViU2FmZVR5cGVzQnlGaWRlbGl0eSA9IGNvcHlUb1ZlY3Rvcih3ZWJTYWZlVHlwZXMp
OwotICAgIGluZm8uY2hhbmdlQ291bnQgPSBjaGFuZ2VDb3VudCgpOwogICAgIHJldHVybiBpbmZv
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0
ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IGQ5MzAyMjgzZWRhMzU3MzdjZWJlYTljZmFjYzdh
YzE2MjdlNmU4MmQuLjRlZmY0ZDhlNjY5YWY5YTIwM2JhZWNjOTZmNDE0ZGQzY2E3MWY5YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tCkBAIC05NywxMiArOTcsMTIgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZSksIHNpemUpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cGFzdGVib2FyZENvcHkoY29uc3QgU3RyaW5nJiBmcm9t
UGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3RlYm9hcmQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnBhc3RlYm9hcmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0
IFN0cmluZyYgdG9QYXN0ZWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFz
dGVib2FyZCh0b1Bhc3RlYm9hcmQpLmNvcHkoZnJvbVBhc3RlYm9hcmQpKTsKIH0KIAotdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ2hh
bmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5nZUNvdW50KCkpOwog
fQpAQCAtMTIyLDE3ICsxMjIsMTcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRVUkwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGkKICAgICBjb21w
bGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVybCgpLnN0
cmluZygpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFkZFBhc3RlYm9hcmRUeXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJkVHlwZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmFkZFR5cGVzKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFz
dGVib2FyZFR5cGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJv
YXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgZm9yIChhdXRvKiB3ZWJQcm9jZXNzUHJveHkgOiBtX3dlYlByb2Nlc3NQ
cm94eUxpc3QpIHsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHktPmhhc0Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikpCkBAIC0xNDYsMTcgKzE0NiwxNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFBh
cwogICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVi
b2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnNldENvbG9yKGNvbG9yKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5zZXRTdHJpbmdGb3JUeXBlKHN0cmluZywgcGFzdGVib2FyZFR5
cGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90IHNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90IHNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZSgwLCBwYXN0
ZWJvYXJkVHlwZSkpOwpAQCAtMTc1LDE5ICsxNzUsMTkgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE4KICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKG9yaWdpbikpOwogfQogCi12b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1
c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoZGF0
YSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNoYW5nZUNvdW50KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoaW5kZXgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIGNoYW5n
ZUNvdW50KSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCmluZGV4IDA5MDgxYjk1YmRhZDdkNjc3MWM1
MmQyZWEyZDhiMjkyNDc3YmJmNGUuLmViZTA4YjU3ZDUyZTg2NWY4YzJjNGVhZDA1NzFkODQ1MzRl
YzE4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
LmNwcApAQCAtODAsMTQgKzgwLDE0IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1
c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21ECiAgICAgY29t
cGxldGlvbkhhbmRsZXIoMCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0
ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3Ry
aW5nJiwgaW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51
bGxvcHQpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90LCBjb25z
dCBTdHJpbmcmLCBpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291
bnQoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5oCmluZGV4IDQ1OGRhMTQwZDdlMWRjODY4MTVhYWYyMGFhOTVjNTZiYjExYzY5ZDUuLjY2
OTRjMDg2NjlkYTE1OTk4MmFhYjJlZGE4ZjU2Nzk4MjY0ZjBlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBAIC04MywyNyArODMsMjcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRTdHJpbmdz
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsK
ICAgICB2b2lkIGdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHBh
c3RlYm9hcmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYg
dG9QYXN0ZWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAg
dm9pZCBnZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcGFzdGVi
b2FyZENvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bh
c3RlYm9hcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQg
Z2V0UGFzdGVib2FyZENoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwogICAgIHZvaWQgZ2V0UGFzdGVib2Fy
ZFVuaXF1ZU5hbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZv
aWQgZ2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29sb3ImJik+JiYpOwogICAgIHZvaWQgZ2V0UGFz
dGVib2FyZFVSTChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGFkZFBhc3RlYm9hcmRUeXBlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0gICAgdm9p
ZCBzZXRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0
UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2Fy
ZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBhZGRQYXN0ZWJvYXJkVHlwZXMoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBzZXRQ
YXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90
KT4mJik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9h
cmRDb2xvcihjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4m
Jik7CisgICAgdm9pZCBzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50
NjRfdCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAg
ICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJp
bmcmJiB0aXRsZSk+JiYpOwogICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYm
LCB1aW50NjRfdCBzaXplKT4mJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2
NF90KT4mJik7Ci0gICAgdm9pZCBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYpOwotICAgIHZvaWQgYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYpOworICAgIHZv
aWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJik7CisgICAgdm9p
ZCBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYpOwogCi0gICAgdm9pZCB3cml0ZUN1
c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmKTsKKyAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CiAgICAgdm9pZCB0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
CiAKICNpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMmU0ZTI2ZTQzNTdhODAzZmQy
ZmQ0YTk1OWFlNmIxM2U2NzVkZmNjNy4uOThkM2FjZDFjNjJjMzk2Y2VjYjUxZTY3MTI1YzkzOTYy
YjlkZjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2Fy
ZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjksMTAgKzI5LDEwIEBAIG1lc3NhZ2VzIC0+IFdl
YlBhc3RlYm9hcmRQcm94eSB7CiAgICAgVXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKFZl
Y3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCiAjZW5kaWYK
IAotICAgIFdyaXRlQ3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE+IGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50
KSBTeW5jaHJvbm91cworICAgIFdyaXRlQ3VzdG9tRGF0YShWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE+IGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGludDY0X3Qg
Y2hhbmdlQ291bnQpIFN5bmNocm9ub3VzCiAgICAgVHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgb3JpZ2luKSAtPiAoVmVjdG9yPFN0cmlu
Zz4gdHlwZXMpIFN5bmNocm9ub3VzCi0gICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFs
bEluZm8pIFN5bmNocm9ub3VzCi0gICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRf
dCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoc3RydWN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbyBpbmZvKSBTeW5jaHJvbm91cworICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5m
byhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIC0+IChPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsSW5mbykgU3luY2hyb25v
dXMKKyAgICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIC0+IChPcHRpb25hbDxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm8pIFN5bmNocm9ub3VzCiAgICAgR2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3Vu
dCkgU3luY2hyb25vdXMKICAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5k
ZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3Ry
aW5nIHN0cmluZykgU3luY2hyb25vdXMKICAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0
X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0cmluZyB0
aXRsZSkgU3luY2hyb25vdXMKQEAgLTQ2LDE3ICs0NiwxNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXN0
ZWJvYXJkUHJveHkgewogICAgIEdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoU3RyaW5nIHN0cmluZykgU3lu
Y2hyb25vdXMKICAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChWZWN0b3I8U3RyaW5nPiBzdHJpbmdz
KSBTeW5jaHJvbm91cwogICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIFN5bmNocm9ub3VzCi0gICAgUGFzdGVi
b2FyZENvcHkoU3RyaW5nIGZyb21QYXN0ZWJvYXJkLCBTdHJpbmcgdG9QYXN0ZWJvYXJkKSAtPiAo
dWludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzCi0gICAgR2V0UGFzdGVib2FyZENoYW5n
ZUNvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBT
eW5jaHJvbm91cworICAgIFBhc3RlYm9hcmRDb3B5KFN0cmluZyBmcm9tUGFzdGVib2FyZCwgU3Ry
aW5nIHRvUGFzdGVib2FyZCkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzCisg
ICAgR2V0UGFzdGVib2FyZENoYW5nZUNvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGlu
dDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzCiAgICAgR2V0UGFzdGVib2FyZFVuaXF1ZU5h
bWUoKSAtPiAoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSBTeW5jaHJvbm91cwogICAgIEdldFBhc3Rl
Ym9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xv
cikgU3luY2hyb25vdXMKICAgICBHZXRQYXN0ZWJvYXJkVVJMKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKFN0cmluZyB1cmxTdHJpbmcpIFN5bmNocm9ub3VzCi0gICAgQWRkUGFzdGVib2FyZFR5
cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVz
KSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzCi0gICAgU2V0UGFzdGVib2Fy
ZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5
cGVzKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzCi0gICAgU2V0UGFzdGVi
b2FyZFVSTChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJkVVJMLCBTdHJp
bmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMg
V2FudHNDb25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZENvbG9yKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgV2ViQ29yZTo6Q29sb3IgY29sb3IpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgU3lu
Y2hyb25vdXMKLSAgICBTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHN0cmluZykgLT4gKHVpbnQ2NF90
IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwotICAgIFNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBl
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgLT4gKHVpbnQ2NF90IGNo
YW5nZUNvdW50KSBTeW5jaHJvbm91cworICAgIEFkZFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcykgLT4gKGludDY0X3Qg
Y2hhbmdlQ291bnQpIFN5bmNocm9ub3VzCisgICAgU2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzKSAtPiAoaW50NjRf
dCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMKKyAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgor
ICAgIFNldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNv
bG9yIGNvbG9yKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMKKyAgICBTZXRQ
YXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgU3RyaW5nIHN0cmluZykgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNo
cm9ub3VzCisgICAgU2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUg
aGFuZGxlLCB1aW50NjRfdCBzaXplKSAtPiAoaW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25v
dXMKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZjc3MjI2NjI3YWQyMTQ3ODli
ODMxZDcxM2FiY2Q5ZTE3NThlOThkNC4uNWJhZWEzZGM4ZTg2MzhjYzFlNTVhMTJhZTQ3NWY0Nzg3
YjVmN2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCkBAIC0xNzM2LDcgKzE3MzYsNyBAQCB2b2lkIFBERlBsdWdpbjo6d3JpdGVJ
dGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TQXJyYXkgKml0ZW1z
LAogICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gdHlwZXMpCiAgICAgICAgIHBhc3RlYm9hcmRU
eXBlcy5hcHBlbmQodHlwZSk7CiAKLSAgICB1aW50NjRfdCBuZXdDaGFuZ2VDb3VudDsKKyAgICBp
bnQ2NF90IG5ld0NoYW5nZUNvdW50OwogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKTsKICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRUeXBl
cyhwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGVzKSwKICAgICAgICAgTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdDaGFuZ2VDb3Vu
dCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0NzkzMGEyYTY5
NDEzMzBkYzQzMzU4NWQ3NDFmMDlkMjg2MTE2MDA2Li44OGM2OTVmNWRiNjcwN2YxYmFlMGM0ZDY4
MmQ5NGY1MzAyNDBkZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAt
MTU2LDkgKzE1Niw5IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkCiAgICAgcmV0dXJuIHZhbHVl
czsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KGNvbnN0IFdU
Rjo6U3RyaW5nICZwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHVpbnQ2
NF90IGNoYW5nZUNvdW50IHsgMCB9OworICAgIGludDY0X3QgY2hhbmdlQ291bnQgeyAwIH07CiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZENoYW5nZUNv
dW50KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFz
dGVib2FyZENoYW5nZUNvdW50OjpSZXBseShjaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBj
aGFuZ2VDb3VudDsKIH0KQEAgLTE4NCwyMSArMTg0LDIxIEBAIFVSTCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIHJldHVybiBVUkwo
eyB9LCB1cmxTdHJpbmcpOwogfQogCi1sb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogewotICAgIHVpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OworICAgIGlu
dDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6QWRkUGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlw
ZXMpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBZGRQYXN0ZWJvYXJkVHlwZXM6OlJl
cGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQog
Ci1sb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0
X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHVp
bnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OworICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQg
eyAwIH07CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2Fy
ZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwg
MCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1sb25nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0
X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAo
YnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CkBAIC0yMTAsMjggKzIxMCwyOCBAQCBsb25nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVI
YW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAg
ICAgfQogICAgIH0KLSAgICB1aW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKKyAgICBpbnQ2
NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJv
YXJkVHlwZSwgaGFuZGxlLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZTo6UmVwbHkobmV3
Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWxvbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVi
b2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICB1aW50NjRfdCBuZXdDaGFuZ2VD
b3VudDsKKyAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50OwogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRVUkwocGFzdGVib2FyZFVSTCwgcGFzdGVib2Fy
ZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVVJMOjpS
ZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0K
IAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xv
ciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCiB7Ci0gICAgdWludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07CisgICAgaW50
NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpTZXRQYXN0ZWJvYXJkQ29sb3IocGFzdGVib2FyZE5hbWUsIGNvbG9yKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZENvbG9yOjpSZXBseShuZXdDaGFu
Z2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotbG9uZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICB1aW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAg
fTsKKyAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkVHlwZSwgc3RyaW5nKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7
CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQpAQCAtMzE4LDkgKzMxOCw5IEBAIFZlY3Rv
cjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoY29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIHR5cGVzOwogfQogCi1sb25nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0g
ICAgdWludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07CisgICAgaW50NjRfdCBuZXdDaGFuZ2VD
b3VudCB7IDAgfTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZUN1
c3RvbURhdGEoZGF0YSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpXcml0ZUN1c3RvbURhdGE6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgcmV0
dXJuIG5ld0NoYW5nZUNvdW50OwogfQpAQCAtMzMyLDE3ICszMzIsMTcgQEAgaW50IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKICAgICByZXR1cm4gaXRlbXNDb3VudDsKIH0KIAotVmVjdG9yPFBhc3RlYm9h
cmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8o
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK09wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJk
SXRlbUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KQogewotICAg
IFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbEluZm87Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lKSwg
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVib2FyZEl0ZW1JbmZvOjpSZXBs
eShhbGxJbmZvKSwgMCk7CisgICAgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+
IGFsbEluZm87CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKHBhc3RlYm9hcmROYW1lLCBjaGFuZ2VDb3VudCksIE1lc3NhZ2VzOjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbzo6UmVwbHkoYWxsSW5mbyksIDAp
OwogICAgIHJldHVybiBhbGxJbmZvOwogfQogCi1QYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK09wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkK
IHsKLSAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJk
TmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXg6OlJlcGx5KGluZm8pLCAwKTsKKyAgICBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+
IGluZm87CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChpbmRleCwgcGFzdGVib2FyZE5hbWUsIGNoYW5nZUNvdW50KSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHko
aW5mbyksIDApOwogICAgIHJldHVybiBpbmZvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKaW5kZXggODFhN2E0NDFlOTM1OWI2ZTY1NjMyMDZlNGU1Yjc4NzU3MjRlZDYxYy4uNmMw
YjU1NTNjNDJlYWY1MWEzNzk5OWE0ZmRjZTgxNDU2ODQ2YjQzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaApAQCAtNTksMTcgKzU5LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
ICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIGxvbmcgY2hhbmdlQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBjaGFuZ2VD
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
dW5pcXVlTmFtZSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFVSTCB1cmwoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAKLSAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIGxvbmcgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBsb25nIHNldENvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7Ci0gICAgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OworICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRf
dCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZv
clR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBz
ZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2
NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmKSBvdmVycmlk
ZTsKQEAgLTg1LDEwICs4NSwxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBpbnQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7Ci0gICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJv
YXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBh
c3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KSBvdmVycmlkZTsKICAgICBWZWN0b3I8
U3RyaW5nPiB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgb3ZlcnJpZGU7Ci0gICAgbG9uZyB3cml0
ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGludDY0X3Qgd3JpdGVDdXN0b21EYXRhKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCAzOTUxMWUwNjdkMGViNmUyOWQ4YTNlNGNiMmQwZDQ1YzA0YzY4YmQ1
Li40YzM2MWFhNzlkMmEzNzUwMjc0MWQyYjg2ZDEwNWZjZWEwOTA0MGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTcsMjcgKzU3LDI3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJy
aWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUlu
Zm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92ZXJyaWRl
OwogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0
aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBh
bGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBsb25nIGNoYW5nZUNvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIGludDY0X3QgY2hhbmdlQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHVu
aXF1ZU5hbWUoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBVUkwgdXJsKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogCi0gICAgbG9uZyB3cml0ZUN1c3RvbURhdGEoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIGludDY0X3Qgd3JpdGVDdXN0b21EYXRhKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbikgb3ZlcnJpZGU7CiAKLSAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwotICAgIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
bG9uZyBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIGxvbmcgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBsb25nIHNldENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwor
ICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBz
ZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRV
UkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90
IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMGY3YTkxNTAyNjZhMWI1NWE2YjQwM2FhNTZh
ODdhZDk0NWRmNGRiZi4uMTY1OWU2ZDBkZDdkZTcyM2Y2ZGQ5NjU0YjZmMGI4YzE2OTI5MTE5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIFN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KIAotbG9uZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyAmcGFzdGVib2FyZE5hbWUp
CitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5jaGFuZ2VDb3VudCgpOwogfQpAQCAtMTI4LDMyICsxMjgsMzIgQEAgVVJMIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAg
ICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCk7CiB9CiAK
LWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWRkVHlwZXMocGFzdGVib2Fy
ZFR5cGVzKTsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRU
eXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1sb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1
ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLWxvbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5zZXRVUkwocGFzdGVib2FyZFVSTCk7CiB9CiAKLWxvbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldENvbG9yKGNvbG9y
KTsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICByZXR1cm4gUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRTdHJpbmdGb3JUeXBlKHN0cmluZywg
cGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMTY4LDE5ICsxNjgsMTkgQEAgVmVjdG9yPFN0cmluZz4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS50
eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShvcmlnaW4pOwogfQogCi1sb25nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkud3JpdGUoZGF0YSk7CiB9CiAKLVdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90
IGNoYW5nZUNvdW50KQogewotICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
aW5kZXgsIGNoYW5nZUNvdW50KTsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK09wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8+PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KQogewot
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9h
cmRJdGVtSW5mbygpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjaGFuZ2VDb3VudCk7CiB9CiAKIGludCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381500</attachid>
            <date>2019-10-21 19:29:48 -0700</date>
            <delta_ts>2019-10-22 00:22:27 -0700</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-203181-20191021192947.patch</filename>
            <type>text/plain</type>
            <size>85238</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAxYjEwZTRhOTFmZmQz
ZDQyZGRmN2VjNGQyZTIyZmQ2MzY3NTIxMC4uODA4OTNlZTEwODMxYWI2MjFlMzk5NDIxZTFmNzIz
ZmZkOWQyOTJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxOS0xMC0yMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NsaXBib2FyZC1hcGlzL2FzeW5jLW5hdmlnYXRvci1jbGlw
Ym9hcmQtYmFzaWNzLmh0dHBzLmh0bWwgaXMgZmxha3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzE4MQorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YS4KKworICAgICAgICBUaGlzIHRlc3QgaXMgZmxha3kgYmVjYXVzZSBpdHMgcmVz
dWx0cyBjdXJyZW50bHkgdmFyeSBkZXBlbmRpbmcgb24gd2hldGhlciBjb250ZW50IGFscmVhZHkg
ZXhpc3RzIG9uIHRoZQorICAgICAgICBwbGF0Zm9ybSBwYXN0ZWJvYXJkLiBJbiB0aGlzIHRlc3Qs
IHRoZSBwYWdlIGlzIGFibGUgdG8gcmVhZCBpdGVtcyBmcm9tIHRoZSBjbGlwYm9hcmQgc2luY2Ug
RE9NIHBhc3RlIGFuZAorICAgICAgICBwcm9ncmFtbWF0aWMgY2xpcGJvYXJkIGFjY2VzcyBhcmUg
ZW5hYmxlZCB3aGVuIHJ1bm5pbmcgbGF5b3V0IHRlc3RzLiBIb3dldmVyLCBpbiB0aGUgY2FzZSB3
aGVyZSB0aGUgcGFzdGVib2FyZAorICAgICAgICBpcyBlbXB0eSwgd2UgZW5kIHVwIHJlamVjdGlu
ZyB0aGUgcHJvbWlzZSBkdWUgdG8gYW4gZWFybHkgcmV0dXJuIGluIENsaXBib2FyZDo6cmVhZCgp
LiBJbiBjb250cmFzdCwgd2hlbiB0aGUKKyAgICAgICAgcGFzdGVib2FyZCBoYXMgYXQgbGVhc3Qg
b25lIGl0ZW0sIHdlJ2xsIGVuZCB1cCByZXNvbHZpbmcgdGhlIHByb21pc2Ugd2l0aCBhIHNlcXVl
bmNlIG9mIENsaXBib2FyZEl0ZW1zLCB3aGljaAorICAgICAgICB0aGVuIGNhdXNlcyB0aGUgdGVz
dCB0byBmYWlsIGJlY2F1c2UgaXQgZXhwZWN0cyB0aGlzIHJlc3VsdCB0byBiZSBhIERhdGFUcmFu
c2ZlciBpbnN0ZWFkICh3aGljaCwgYXQgdGltZSBvZgorICAgICAgICB3cml0aW5nLCBpcyBpbmNv
cnJlY3Qgdy5yLnQuIHRoZSBhc3luYyBjbGlwYm9hcmQgc3BlYykuCisKKyAgICAgICAgVG8gZml4
IHRoaXMsIHdlIHJlbW92ZSB0aGlzIGVhcmx5IHJldHVybiB0aGF0IHJlamVjdHMgdGhlIHByb21p
c2Ugd2hlbiB0aGVyZSBhcmUgbm8gcGFzdGVib2FyZCBpdGVtcywgYW5kCisgICAgICAgIGluc3Rl
YWQgYWxsb3cgdGhlIHByb21pc2UgdG8gcmVzb2x2ZSB3aXRoIG5vIGl0ZW1zLiBIb3dldmVyLCBz
aW1wbHkgcmVtb3ZpbmcgdGhpcyBjaGVjayB3b3VsZCBtZWFuIHRoYXQgaWYgdGhlCisgICAgICAg
IHBhc3RlYm9hcmQgY2hhbmdlIGNvdW50IGNoYW5nZXMgYmV0d2VlbiB0aGUgc3RhcnQgb2YgdGhl
IGNhbGwgdG8gQ2xpcGJvYXJkLnJlYWQoKSBhbmQgcmV0cmlldmFsIG9mIGl0ZW0KKyAgICAgICAg
aW5mb3JtYXRpb24gZnJvbSB0aGUgcGxhdGZvcm0gcGFzdGVib2FyZCwgd2UnbGwgbm8gbG9uZ2Vy
IHJlamVjdCB0aGUgcHJvbWltc2UgYXMgZXhwZWN0ZWQuIFRoaXMgaXMgYmVjYXVzZSB3ZQorICAg
ICAgICBjdXJyZW50bHkgaXRlcmF0ZSB0aHJvdWdoIGVhY2ggb2YgdGhlIGl0ZW1zIGFuZCBjaGVj
ayB0aGF0IHRoZSBpdGVtJ3MgY2hhbmdlIGNvdW50IG1hdGNoZXMsIHNvIGlmIHRoZXJlIGFyZSBu
bworICAgICAgICBpdGVtcywgd2Ugc2ltcGx5IGF2b2lkIGNoZWNraW5nIHRoZSBjaGFuZ2UgY291
bnQuCisKKyAgICAgICAgV2UgYWRkcmVzcyB0aGlzIGJ5IGluc3RlYWQgc2VuZGluZyB0aGUgZXhw
ZWN0ZWQgY2hhbmdlIGNvdW50IGFsb25nIHdpdGggdGhlIHJlcXVlc3QgZm9yIGFsbFBhc3RlYm9h
cmRJdGVtSW5mbygpLAorICAgICAgICBhbmQgcmVmYWN0b3JpbmcgdGhlIGltcGxlbWVudGF0aW9u
IG9mIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyAoYW5kIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgp
IHRvIGluc3RlYWQgY2hlY2sKKyAgICAgICAgdGhpcyBleHBlY3RlZCBjaGFuZ2UgY291bnQgYWdh
aW5zdCB0aGUgY3VycmVudCBjaGFuZ2UgY291bnQgb2YgdGhlIHBhc3RlYm9hcmQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkOjpyZWFkKToKKworICAgICAgICBSZW1vdmUgdGhlIGBhbGxJbmZvLmlz
RW1wdHkoKWAgZWFybHkgcmV0dXJuLCBhbmQgYWxzbyByZW1vdmUgYSBGSVhNRSB0aGF0IGlzIGFk
ZHJlc3NlZCBieSB0aGlzIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvIGNv
bnN0KToKKworICAgICAgICBNYWtlIHRoZXNlIG1ldGhvZHMgcmVxdWlyZSBhIGNoYW5nZUNvdW50
OyBhbHNvLCBtYWtlIHRoZXNlIHJldHVybiBvcHRpb25hbCByZXN1bHRzLgorCisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y2hh
bmdlQ291bnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5o
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUpOgorCisgICAgICAg
IFJlbW92ZSBQYXN0ZWJvYXJkSXRlbUluZm8ncyBjaGFuZ2VDb3VudCwgbm93IHRoYXQgdGhlIGNo
ZWNrIG9jY3VycyBpbiB0aGUgY2xpZW50IGxheWVyLgorCisgICAgICAgICogcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZmlsZUNvbnRlbnRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OnJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyk6CisKKyAgICAgICAgTm9ybWFsaXplIGNoYW5n
ZUNvdW50IHRvIGJlIGEgYGludDY0X3RgLCB3aGljaCBtYXRjaGVzIGlPUyBhbmQgbWFjT1MgcGxh
dGZvcm1zLiBCZWZvcmUgdGhpcyBwYXRjaCwgdGhlIG5vdGlvbiBvZgorICAgICAgICBjaGFuZ2VD
b3VudCBpcyB2ZXJ5IGlsbC1kZWZpbmVkLCB3aXRoIHNvbWUgY2FsbCBzaXRlcyBleHBlY3Rpbmcg
YGxvbmdgIHR5cGVzLCBvdGhlciBjYWxsIHNpdGVzIGV4cGVjdGluZworICAgICAgICBgaW50YCwg
YW5kIHlldCBvdGhlcnMgZXhwZWN0aW5nIGB1aW50NjRfdGAuIFRoaXMgY2hhbmdlcyBhbGwgb2Yg
dGhlc2UgdG8gZXhwZWN0IGBpbnQ2NF90YC4KKworICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6cmVhZEZpbGVQYXRocyk6CisKKyAgICAgICAgUmVmYWN0b3IgdGhlc2UgbWV0aG9kcyB0byBi
YWlsIHdoZW4gdGhlIHJlc3VsdGluZyBpdGVtIGluZm9ybWF0aW9uIGhhcyBubyB2YWx1ZSAoaS5l
LiBXVEY6Om51bGxvcHQpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjphZGRUeXBl
cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybVBhc3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVSTEZvclR5cGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
Ojp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNoYW5nZUNv
dW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29weSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFkZFR5cGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisKIDIwMTktMTAtMjEgIERl
YW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudENvbnRl
eHQgZnJvbSBXZWJLaXQgdG8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZTE5NjI2OTkzMmE0ZGU4ODgy
NTA3NTM1OGI4OTFkYjUwYzE5NzJjLi5kMzZmMTRjOTgxOTZjYzk0NDA5NTcyYjZhN2NkYmE5ZmVj
NWJiMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTEwLTIxICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY2xpcGJvYXJkLWFwaXMvYXN5bmMtbmF2aWdhdG9yLWNsaXBib2FyZC1i
YXNpY3MuaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgorCisgICAgICAgIEFkZCBhIGNoYW5nZUNvdW50IGFyZ3VtZW50IHRvIGluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXggYW5kIGFsbFBhc3RlYm9hcmRJdGVtSW5mbywgYW5kIGFsc28gbWFrZSB0
aGVuIHJldHVybgorICAgICAgICBvcHRpb25hbCB2YWx1ZXM7IGFsc28sIGFkanVzdCBjaGFuZ2VD
b3VudCB0byBiZSBhbiBgaW50NjRfdGAgaW4gYSBmZXcgcGxhY2VzLiBTZWUgV2ViQ29yZSBDaGFu
Z2VMb2cgZm9yIG1vcmUKKyAgICAgICAgZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZFByb3h5OjpwYXN0ZWJvYXJkQ29weSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZENoYW5nZUNvdW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJkVHlwZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRUeXBlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFVSTCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZENvbG9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9t
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJv
YXJkSXRlbUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRVUkwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZUN1c3RvbURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKwogMjAxOS0xMC0yMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgTW92ZSBFbGVtZW50Q29udGV4dCBmcm9tIFdlYktpdCB0byBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzM2NTkyZDUyZmRhOTgzZGRmMTZkMTI1MmFlYTNi
OTQxNTA1NmI4MS4uYTUzOTVjNTJjMDg4N2JlMmEyZTc5MDJmZDJlZTY5NGExN2MxYjFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTEwLTIxICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY2xpcGJvYXJkLWFwaXMvYXN5bmMtbmF2aWdhdG9yLWNs
aXBib2FyZC1iYXNpY3MuaHR0cHMuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Unlvc3VrZSBOaXdhLgorCisgICAgICAgIEFkZCBhIGNoYW5nZUNvdW50IGFyZ3VtZW50IHRvIGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXggYW5kIGFsbFBhc3RlYm9hcmRJdGVtSW5mbywgYW5kIGFs
c28gbWFrZSB0aGVuIHJldHVybgorICAgICAgICBvcHRpb25hbCB2YWx1ZXMuIFNlZSBXZWJDb3Jl
IENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFu
Z2VDb3VudCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFR5cGVzKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0VVJMKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29sb3IpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBl
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVDdXN0b21EYXRhKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6
CisKIDIwMTktMTAtMTcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJld29yayBmcm9udGVuZCBhZ2VudCBjb25zdHJ1Y3Rpb24gdG8g
YWxsb3cgY29tbWFuZHMvZXZlbnRzIHRvIGJlIGNvbnRyb2xsZWQgYnkgdGhlIHJlbGF0ZWQgdGFy
Z2V0J3MgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZC5jcHAKaW5kZXggYjgxNDAwZGYyMTI3MzBlNTJhMGYwNThmYTVhYmJlYjAz
MDU0ZWNmYi4uNGY4YTM5NWEwOWQzOTYzYjNiYzVlMTc1NzhlYzU1Yjg2Nzg5N2NmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKICAgICB9CiAKICAgICBhdXRvIHBhc3RlYm9hcmQgPSBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKTsKLSAgICBpbnQgY2hhbmdlQ291bnRBdFN0YXJ0
ID0gcGFzdGVib2FyZC0+Y2hhbmdlQ291bnQoKTsKKyAgICBhdXRvIGNoYW5nZUNvdW50QXRTdGFy
dCA9IHBhc3RlYm9hcmQtPmNoYW5nZUNvdW50KCk7CiAKICAgICBpZiAoIWZyYW1lLT5yZXF1ZXN0
RE9NUGFzdGVBY2Nlc3MoKSkgewogICAgICAgICByZWplY3RQcm9taXNlQW5kQ2xlYXJBY3RpdmVT
ZXNzaW9uKCk7CkBAIC0xMDMsMjMgKzEwMywxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZChSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAKICAgICBpZiAoIW1fYWN0aXZlU2Vzc2lvbiB8
fCBtX2FjdGl2ZVNlc3Npb24tPmNoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50QXRTdGFydCkgewog
ICAgICAgICBhdXRvIGFsbEluZm8gPSBwYXN0ZWJvYXJkLT5hbGxQYXN0ZWJvYXJkSXRlbUluZm8o
KTsKLSAgICAgICAgaWYgKGFsbEluZm8uaXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghYWxsSW5m
bykgewogICAgICAgICAgICAgcmVqZWN0UHJvbWlzZUFuZENsZWFyQWN0aXZlU2Vzc2lvbigpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgVmVjdG9yPFJlZjxDbGlw
Ym9hcmRJdGVtPj4gY2xpcGJvYXJkSXRlbXM7Ci0gICAgICAgIGNsaXBib2FyZEl0ZW1zLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoYWxsSW5mby5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8mIGl0
ZW1JbmZvIDogYWxsSW5mbykgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHJlZmFjdG9yZWQgc3VjaCB0aGF0IHRoZSBpbml0aWFsIGNoYW5nZUNvdW50IGlzIGRlbGl2ZXJl
ZCB0byB0aGUgY2xpZW50LCB3aGVyZSBpdCBpcyB0aGVuIGNoZWNrZWQKLSAgICAgICAgICAgIC8v
IGFnYWluc3QgdGhlIGN1cnJlbnQgY2hhbmdlQ291bnQgb2YgdGhlIHBsYXRmb3JtIHBhc3RlYm9h
cmQuIEZvciBpbnN0YW5jZSwgaW4gV2ViS2l0MiwgdGhpcyB3b3VsZCByZWxvY2F0ZSB0aGUgY2hh
bmdlQ291bnQKLSAgICAgICAgICAgIC8vIGNoZWNrIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQg
b2YgdGhlIHdlYiBjb250ZW50IHByb2Nlc3MuCi0gICAgICAgICAgICBpZiAoaXRlbUluZm8uY2hh
bmdlQ291bnQgIT0gY2hhbmdlQ291bnRBdFN0YXJ0KSB7Ci0gICAgICAgICAgICAgICAgcmVqZWN0
UHJvbWlzZUFuZENsZWFyQWN0aXZlU2Vzc2lvbigpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgY2xpcGJvYXJkSXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShhbGxJbmZvLT5zaXplKCkpOworICAgICAgICBmb3IgKGF1dG8mIGl0ZW1JbmZvIDogKmFs
bEluZm8pCiAgICAgICAgICAgICBjbGlwYm9hcmRJdGVtcy51bmNoZWNrZWRBcHBlbmQoQ2xpcGJv
YXJkSXRlbTo6Y3JlYXRlKCp0aGlzLCBpdGVtSW5mbykpOwotICAgICAgICB9CiAgICAgICAgIG1f
YWN0aXZlU2Vzc2lvbiA9IHt7IFdURk1vdmUocGFzdGVib2FyZCksIFdURk1vdmUoY2xpcGJvYXJk
SXRlbXMpLCBjaGFuZ2VDb3VudEF0U3RhcnQgfX07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCmluZGV4IDg3YWU1N2Fj
ODQwZTc3YTA3ZTdlOTFmNjAxMzEzMmEwMzU2MmMxNGQuLmQ1OTc1MWJmNTI0OTg1OTIwMDQ2YjUy
YTViNTYzNjQ0ZWEzYmU2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAg
c3RydWN0IFNlc3Npb24gewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFz
dGVib2FyZDsKICAgICAgICAgVmVjdG9yPFJlZjxDbGlwYm9hcmRJdGVtPj4gaXRlbXM7Ci0gICAg
ICAgIGludCBjaGFuZ2VDb3VudDsKKyAgICAgICAgaW50NjRfdCBjaGFuZ2VDb3VudDsKICAgICB9
OwogCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggZDA3YTVmYWUwNjU2ODc4NjZmNmFmMGJi
ODI0NDQzM2UzNzgxZGE4Mi4uNTEwNjRmZjNkYTg3ZTNjMzFlNzliZWFlMjFkZDU1ZGMxOWZjODk4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTYyLDE4ICs2Miwy
NCBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkQWxsU3RyaW5ncyhjb25zdCBTdHJp
bmcmIHR5cGUpCiAKICNlbmRpZgogCi1WZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJv
YXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSBjb25zdAorT3B0aW9uYWw8VmVjdG9yPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpIGNvbnN0
CiB7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQotICAgICAgICByZXR1cm4gc3Ry
YXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCkpOwotICAgIHJldHVybiB7IH07Cisg
ICAgICAgIHJldHVybiBzdHJhdGVneS0+YWxsUGFzdGVib2FyZEl0ZW1JbmZvKG5hbWUoKSwgbV9j
aGFuZ2VDb3VudCk7CisjZW5kaWYKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1QYXN0
ZWJvYXJkSXRlbUluZm8gUGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRl
eCkgY29uc3QKK09wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZDo6cGFzdGVi
b2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCkpCi0gICAgICAgIHJldHVybiBzdHJhdGVneS0+aW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChpbmRleCwgbmFtZSgpKTsKLSAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4g
c3RyYXRlZ3ktPmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG5hbWUoKSwgbV9jaGFu
Z2VDb3VudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCAzYmNkZDgyMzVjM2RhMTk1N2UxM2YyNDk0YmE5ZmRjNGNkZTFlY2VhLi45
NGZiMWQwNjRkOTg2YzU0MzcxZjdiODU4YjM2YjQzZDUxMjRlZGJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC0yMzgsNyArMjM4LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQobG9uZyBj
aGFuZ2VDb3VudCk7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChpbnQ2NF90IGNoYW5nZUNvdW50
KTsKICAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogCiAgICAgc3RhdGljIE5TQXJyYXkgKnN1cHBvcnRlZFdlYkNvbnRlbnRQYXN0ZWJvYXJkVHlw
ZXMoKTsKQEAgLTI1MiwxMCArMjUyLDEwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdENvY29hVHlwZUFzRmlsZShjb25zdCBTdHJpbmcm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNBcnJheSAqc3VwcG9ydGVkRmlsZVVwbG9h
ZFBhc3RlYm9hcmRUeXBlcygpOwotICAgIGxvbmcgY2hhbmdlQ291bnQoKSBjb25zdDsKKyAgICBp
bnQ2NF90IGNoYW5nZUNvdW50KCkgY29uc3Q7CiAgICAgY29uc3QgUGFzdGVib2FyZEN1c3RvbURh
dGEmIHJlYWRDdXN0b21EYXRhKCk7CiAjZWxzZQotICAgIGxvbmcgY2hhbmdlQ291bnQoKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgaW50NjRfdCBjaGFuZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0yNzMsOCArMjczLDggQEAg
cHVibGljOgogICAgIHZvaWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50JiwgY29uc3Qg
VVJMJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAjZW5kaWYKIAotICAgIFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpIGNvbnN0OwotICAg
IFBhc3RlYm9hcmRJdGVtSW5mbyBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25z
dDsKKyAgICBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKCkgY29uc3Q7CisgICAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0
ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFkU3Ry
aW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKTsKQEAgLTMwMiw3ICszMDIsNyBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRocygpOwotICAgIFZlY3RvcjxTdHJpbmc+
IHJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGxvbmcg
Y2hhbmdlQ291bnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFZlY3RvcjxT
dHJpbmc+IHJlYWRQbGF0Zm9ybVZhbHVlc0FzU3RyaW5ncyhjb25zdCBTdHJpbmcmIGRvbVR5cGUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAg
IHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNl
dDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0
cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7CkBAIC0zMTgsNyArMzE4LDcg
QEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFN0cmluZyBtX3Bhc3RlYm9h
cmROYW1lOwotICAgIGxvbmcgbV9jaGFuZ2VDb3VudDsKKyAgICBpbnQ2NF90IG1fY2hhbmdlQ291
bnQ7CiAgICAgT3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IG1fY3VzdG9tRGF0YUNhY2hl
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRJdGVtSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZv
LmgKaW5kZXggM2IzOTdjMzczNGQzMmEwZmI2MGU3MDMxZWY5ZDBiYzVhYjQ4MzJjMS4uMDllZThm
OTc2ODIxMzkyN2U4ZjNjNTU4ZTNjOTA2NWI1Y2I0NmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKQEAgLTczLDcgKzczLDYgQEAgc3RydWN0IFBh
c3RlYm9hcmRJdGVtSW5mbyB7CiAgICAgYm9vbCBpc05vblRleHRUeXBlIHsgZmFsc2UgfTsKICAg
ICBib29sIGNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50IHsgZmFsc2UgfTsKICAg
ICBWZWN0b3I8U3RyaW5nPiB3ZWJTYWZlVHlwZXNCeUZpZGVsaXR5OwotICAgIGludCBjaGFuZ2VD
b3VudCB7IDAgfTsKICAgICBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHByZWZlcnJl
ZFByZXNlbnRhdGlvblN0eWxlIHsgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6VW5z
cGVjaWZpZWQgfTsKIAogICAgIFN0cmluZyBwYXRoRm9yQ29udGVudFR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdApAQCAtMTI3LDcgKzEyNiw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGFzdGVib2FyZEl0ZW1JbmZvOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHBhdGhzRm9y
RmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVz
QnlGaWRlbGl0eSA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplIDw8IGlzTm9uVGV4dFR5cGUgPDwgY29udGFpbnNGaWxlVVJMQW5kRmlsZVVwbG9hZENvbnRl
bnQgPDwgd2ViU2FmZVR5cGVzQnlGaWRlbGl0eSA8PCBjaGFuZ2VDb3VudDsKKyAgICBlbmNvZGVy
IDw8IHBhdGhzRm9yRmlsZVVwbG9hZCA8PCBwbGF0Zm9ybVR5cGVzRm9yRmlsZVVwbG9hZCA8PCBw
bGF0Zm9ybVR5cGVzQnlGaWRlbGl0eSA8PCBzdWdnZXN0ZWRGaWxlTmFtZSA8PCBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplIDw8IGlzTm9uVGV4dFR5cGUgPDwgY29udGFpbnNGaWxlVVJMQW5kRmls
ZVVwbG9hZENvbnRlbnQgPDwgd2ViU2FmZVR5cGVzQnlGaWRlbGl0eTsKICAgICBlbmNvZGVyLmVu
Y29kZUVudW0ocHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOwogfQogCkBAIC0xNTksOSArMTU4
LDYgQEAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkSXRlbUluZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lndl
YlNhZmVUeXBlc0J5RmlkZWxpdHkpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhbmdlQ291bnQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCA2
MTYyOTQyZjczY2JiYTIyMWUyMDE5ZTJiOTc3YjIwMTVhODE1NmRkLi41ODU2MjBmY2MzOGI0MWQy
ZDM1YmQxYmE4NjExNzNiNjA0N2U0YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtNTQsMjggKzU0LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVh
bCBsb25nIGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAg
ICB2aXJ0dWFsIGludDY0X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUoKSA9IDA7CiAgICAgdmlydHVh
bCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKIAotICAgIHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmly
dHVhbCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGxvbmcgc2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBsb25nIHNl
dFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwotICAgIHZpcnR1YWwgbG9uZyBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIGxvbmcgc2V0U3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90
IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSA9IDA7Ci0gICAgdmlydHVhbCBQYXN0ZWJv
YXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxQYXN0ZWJv
YXJkSXRlbUluZm8+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25h
bDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQpID0gMDsKICAgICB2
aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKSA9IDA7Ci0gICAgdmlydHVhbCBsb25nIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBW
ZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9y
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTZWxlY3Rpb25EYXRhJikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBm
ZjAzNGU3MTdhNzdiMWI2NDQxNjE0YWI2MzBiMGJmZWU0NzllNWU5Li42MGJiOTFiYmFkYmM5N2Y1
MzgwM2YwMjMwMTZkZTY1YWQ4Y2YxNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
KTsKICNlbmRpZgotICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9h
cmRJdGVtSW5mbyhpbnQ2NF90IGNoYW5nZUNvdW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIHVuaXF1ZU5hbWUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJp
bmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
Y29uc3QgU3RyaW5nJiBkb21UeXBlKTsKQEAgLTczLDIwICs3MywyMCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBw
YXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIGxvbmcgY2hhbmdlQ291bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2
NF90IGNoYW5nZUNvdW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgY29sb3Io
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgdXJsKCk7CiAKICAgICAvLyBUYWtlIG93bmVyc2hp
cCBvZiB0aGUgcGFzdGVib2FyZCwgYW5kIHJldHVybiBuZXcgY2hhbmdlIGNvdW50LgotICAgIFdF
QkNPUkVfRVhQT1JUIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGFk
ZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOworICAgIFdFQkNP
UkVfRVhQT1JUIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcyk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVi
b2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KLSAgICBXRUJDT1JFX0VYUE9S
VCBsb25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgc2V0VVJMKGNvbnN0IFBh
c3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHNldENvbG9yKGNvbnN0IENv
bG9yJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwo
Y29uc3QgUGFzdGVib2FyZFVSTCYpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29s
b3IoY29uc3QgQ29sb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmKTsKQEAgLTk2LDggKzk2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IG51bWJlck9mRmlsZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHdyaXRl
KGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBsb25nIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgaW50NjRfdCB3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+Jik7
CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IHR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgb3JpZ2luKSBjb25zdDsKIAogI2lmIFBMQVRG
T1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRD
b2NvYS5tbQppbmRleCAxNjYzNjliZjdkYjhkYjEyN2Q0OWU0N2FmYzlkMWY2ZDRiOWJhZGYxLi42
ZGViNjJjZDAyYjljNWNjOGFjNjhlNTdmNDU5YjA0Y2MxZmQyYzAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xNDQsNyArMTQ0
LDEwIEBAIFBhc3RlYm9hcmQ6OkZpbGVDb250ZW50U3RhdGUgUGFzdGVib2FyZDo6ZmlsZUNvbnRl
bnRTdGF0ZSgpCiAgICAgICAgIC8vIGFuIGlubGluZSBwaWVjZSBvZiB0ZXh0LCB3aXRoIG5vIGZp
bGVzIGluIHRoZSBwYXN0ZWJvYXJkIChhbmQgdGhlcmVmb3JlLCBubyByaXNrIG9mIGxlYWtpbmcg
ZmlsZSBwYXRocwogICAgICAgICAvLyB0byB3ZWIgY29udGVudCkuIEluIGNhc2VzIHN1Y2ggYXMg
dGhlc2UsIHdlIHNob3VsZCBub3Qgc3VwcHJlc3MgRGF0YVRyYW5zZmVyIGFjY2Vzcy4KICAgICAg
ICAgYXV0byBpdGVtcyA9IGFsbFBhc3RlYm9hcmRJdGVtSW5mbygpOwotICAgICAgICBtYXlDb250
YWluRmlsZVBhdGhzID0gaXRlbXMuc2l6ZSgpICE9IDEgfHwgbm90Rm91bmQgIT0gaXRlbXMuZmlu
ZE1hdGNoaW5nKFtdIChhdXRvJiBpdGVtKSB7CisgICAgICAgIGlmICghaXRlbXMpCisgICAgICAg
ICAgICByZXR1cm4gRmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFnZURhdGE7CisKKyAgICAg
ICAgbWF5Q29udGFpbkZpbGVQYXRocyA9IGl0ZW1zLT5zaXplKCkgIT0gMSB8fCBub3RGb3VuZCAh
PSBpdGVtcy0+ZmluZE1hdGNoaW5nKFtdIChhdXRvJiBpdGVtKSB7CiAgICAgICAgICAgICByZXR1
cm4gaXRlbS5jYW5CZVRyZWF0ZWRBc0F0dGFjaG1lbnRPckZpbGUoKSB8fCBpdGVtLmlzTm9uVGV4
dFR5cGUgfHwgaXRlbS5jb250YWluc0ZpbGVVUkxBbmRGaWxlVXBsb2FkQ29udGVudDsKICAgICAg
ICAgfSk7CiAgICAgfQpAQCAtMjgwLDcgKzI4Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVD
dXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGRhdGEpCiAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+d3JpdGVDdXN0b21EYXRhKGRhdGEsIG5hbWUoKSk7CiB9CiAKLWxvbmcgUGFzdGVib2FyZDo6
Y2hhbmdlQ291bnQoKSBjb25zdAoraW50NjRfdCBQYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+Y2hhbmdlQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCmlu
ZGV4IDM0OTU0MzNlYWNlOTY4YjYzNjJmNmU1NmM0NGNkNTg4MzNkYWViYzUuLmMzOTNjYWNlYTNk
YWE1YWI0M2NhMzE1ZGU5ZjNlMTZmNTA5OTRjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCkBAIC0yOCwx
NSArMjgsMjcgQEAKIAogI2ltcG9ydCAiUGFzdGVib2FyZEl0ZW1JbmZvLmgiCiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWJzdHJhY3RQYXN0ZWJvYXJkLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpCitPcHRpb25hbDxWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRl
bUluZm8oaW50NjRfdCBjaGFuZ2VDb3VudCkKIHsKKyAgICBpZiAoY2hhbmdlQ291bnQgIT0gW21f
cGFzdGVib2FyZCBjaGFuZ2VDb3VudF0pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
ICAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBpdGVtSW5mbzsKICAgICBpbnQgbnVtYmVy
T2ZJdGVtcyA9IGNvdW50KCk7CiAgICAgaXRlbUluZm8ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
dW1iZXJPZkl0ZW1zKTsKLSAgICBmb3IgKE5TSW50ZWdlciBpdGVtSW5kZXggPSAwOyBpdGVtSW5k
ZXggPCBudW1iZXJPZkl0ZW1zOyArK2l0ZW1JbmRleCkKLSAgICAgICAgaXRlbUluZm8udW5jaGVj
a2VkQXBwZW5kKGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaXRlbUluZGV4KSk7CisgICAgZm9y
IChOU0ludGVnZXIgaXRlbUluZGV4ID0gMDsgaXRlbUluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytp
dGVtSW5kZXgpIHsKKyAgICAgICAgYXV0byBpdGVtID0gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpdGVtSW5kZXgsIGNoYW5nZUNvdW50KTsKKyAgICAgICAgaWYgKCFpdGVtKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBpdGVtSW5mby51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZSgqaXRlbSkpOworICAgIH0KICAgICByZXR1cm4gaXRlbUluZm87CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0
ay5jcHAKaW5kZXggZjljZjYwMWQxMDE4ZmE1Nzc4ZThkZWRmNDlkODIyM2M5NGRlMWU3MS4uMzhi
MTVjZmViM2Q5YmQ3YmM2ZDYwNzA5YmUzZmU3NzgwNjY3YmYyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKQEAgLTUx
LDEyICs1MSwxMiBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21E
YXRhJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikKK2ludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURh
dGE+JikKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMTAzMWU1MTdhZjZmODQ2M2JmYWQzMjY4ZDEzN2UxZGNh
ZTdiY2NiZC4uNTVkYzczM2Y2MWUyM2QwODU3N2FlODE5MmUzYzNhZjNkOTYxMWE4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTc2LDcgKzc2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRy
YWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmEKIAogI2VuZGlmCiAKLXN0YXRpYyBsb25nIGNo
YW5nZUNvdW50Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lID0geyB9
KQorc3RhdGljIGludDY0X3QgY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUgPSB7IH0pCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y2hhbmdlQ291bnQocGFzdGVib2FyZE5hbWUpOwogfQpA
QCAtOTAsNyArOTAsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKIHsKIH0KIAotUGFzdGVi
b2FyZDo6UGFzdGVib2FyZChsb25nIGNoYW5nZUNvdW50KQorUGFzdGVib2FyZDo6UGFzdGVib2Fy
ZChpbnQ2NF90IGNoYW5nZUNvdW50KQogICAgIDogbV9jaGFuZ2VDb3VudChjaGFuZ2VDb3VudCkK
IHsKIH0KQEAgLTMxMywxMyArMzEzLDE2IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljCiAgICAg
ICAgIGlmIChpdGVtSW5kZXggJiYgaSAhPSAqaXRlbUluZGV4KQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChpLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3ku
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpLCBtX3Bhc3RlYm9hcmROYW1lLCBtX2NoYW5nZUNv
dW50KTsKKyAgICAgICAgaWYgKCFpbmZvKQorICAgICAgICAgICAgcmV0dXJuOworCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYm
IHByZWZlcnNBdHRhY2htZW50UmVwcmVzZW50YXRpb24oaW5mbykpIHsKLSAgICAgICAgICAgIGF1
dG8gdHlwZUZvckZpbGVVcGxvYWQgPSBpbmZvLmNvbnRlbnRUeXBlRm9ySGlnaGVzdEZpZGVsaXR5
SXRlbSgpOworICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYgcHJlZmVyc0F0dGFjaG1l
bnRSZXByZXNlbnRhdGlvbigqaW5mbykpIHsKKyAgICAgICAgICAgIGF1dG8gdHlwZUZvckZpbGVV
cGxvYWQgPSBpbmZvLT5jb250ZW50VHlwZUZvckhpZ2hlc3RGaWRlbGl0eUl0ZW0oKTsKICAgICAg
ICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpLCB0eXBlRm9yRmlsZVVwbG9hZCwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKICAgICAgICAgICAg
ICAgICByZWFkVVJMQWxvbmdzaWRlQXR0YWNobWVudElmTmVjZXNzYXJ5KHJlYWRlciwgc3RyYXRl
Z3ksIHR5cGVGb3JGaWxlVXBsb2FkLCBtX3Bhc3RlYm9hcmROYW1lLCBpKTsKLSAgICAgICAgICAg
ICAgICByZWFkZXIucmVhZERhdGFCdWZmZXIoKmJ1ZmZlciwgdHlwZUZvckZpbGVVcGxvYWQsIGlu
Zm8uc3VnZ2VzdGVkRmlsZU5hbWUsIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSk7Cisg
ICAgICAgICAgICAgICAgcmVhZGVyLnJlYWREYXRhQnVmZmVyKCpidWZmZXIsIHR5cGVGb3JGaWxl
VXBsb2FkLCBpbmZvLT5zdWdnZXN0ZWRGaWxlTmFtZSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTMzMCw3ICszMzMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpYwogICAgICAg
ICAgICAgaWYgKCFpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9saWN5KHR5cGUsIHBvbGljeSkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9
IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5
cGUsIGluZm8sIGkpOworICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9h
cmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgKmluZm8sIGkp
OwogICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJk
V2FzQ2hhbmdlZEV4dGVybmFsbHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTcs
MjQgKzM2MCwyNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGll
cyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLAogICAgICAgICAgICAgY29udGlu
dWU7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgICAgICBhdXRvIGluZm8g
PSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmRO
YW1lKTsKLSAgICAgICAgYXV0byBhdHRhY2htZW50RmlsZVBhdGggPSBpbmZvLnBhdGhGb3JIaWdo
ZXN0RmlkZWxpdHlJdGVtKCk7CisgICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQp
OworICAgICAgICBpZiAoIWluZm8pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byBhdHRhY2htZW50RmlsZVBhdGggPSBpbmZvLT5wYXRoRm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgp
OwogICAgICAgICBib29sIGNhblJlYWRBdHRhY2htZW50ID0gcG9saWN5ID09IFdlYkNvbnRlbnRS
ZWFkaW5nUG9saWN5OjpBbnlUeXBlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkgJiYgIWF0dGFjaG1lbnRGaWxlUGF0
aC5pc0VtcHR5KCk7Ci0gICAgICAgIGF1dG8gY29udGVudFR5cGUgPSBpbmZvLmNvbnRlbnRUeXBl
Rm9ySGlnaGVzdEZpZGVsaXR5SXRlbSgpOwotICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQg
JiYgcHJlZmVyc0F0dGFjaG1lbnRSZXByZXNlbnRhdGlvbihpbmZvKSkgeworICAgICAgICBhdXRv
IGNvbnRlbnRUeXBlID0gaW5mby0+Y29udGVudFR5cGVGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7
CisgICAgICAgIGlmIChjYW5SZWFkQXR0YWNobWVudCAmJiBwcmVmZXJzQXR0YWNobWVudFJlcHJl
c2VudGF0aW9uKCppbmZvKSkgewogICAgICAgICAgICAgcmVhZFVSTEFsb25nc2lkZUF0dGFjaG1l
bnRJZk5lY2Vzc2FyeShyZWFkZXIsIHN0cmF0ZWd5LCBjb250ZW50VHlwZSwgbV9wYXN0ZWJvYXJk
TmFtZSwgaW5kZXgpOwotICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlUGF0aChXVEZNb3ZlKGF0
dGFjaG1lbnRGaWxlUGF0aCksIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVu
dFR5cGUpOworICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlUGF0aChXVEZNb3ZlKGF0dGFjaG1l
bnRGaWxlUGF0aCksIGluZm8tPnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUsIGNvbnRlbnRUeXBl
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgLy8g
VHJ5IHRvIHJlYWQgZGF0YSBmcm9tIGVhY2ggdHlwZSBpZGVudGlmaWVyIHRoYXQgdGhpcyBwYXN0
ZWJvYXJkIGl0ZW0gc3VwcG9ydHMsIGFuZCBXZWJLaXQgYWxzbyByZWNvZ25pemVzLiBUeXBlIGlk
ZW50aWZpZXJzIGFyZQogICAgICAgICAvLyByZWFkIGluIG9yZGVyIG9mIGZpZGVsaXR5LCBhcyBz
cGVjaWZpZWQgYnkgZWFjaCBwYXN0ZWJvYXJkIGl0ZW0uCiAgICAgICAgIFJlYWRlclJlc3VsdCBy
ZXN1bHQgPSBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwotICAgICAgICBmb3IgKGF1dG8m
IHR5cGUgOiBpbmZvLnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5KSB7CisgICAgICAgIGZvciAoYXV0
byYgdHlwZSA6IGluZm8tPnBsYXRmb3JtVHlwZXNCeUZpZGVsaXR5KSB7CiAgICAgICAgICAgICBp
ZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRX
ZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaW5mbywgaW5kZXgp
OworICAgICAgICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5
cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgKmluZm8sIGluZGV4KTsKICAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFk
ZXJSZXN1bHQ6OlJlYWRUeXBlKQpAQCAtMzgyLDcgKzM4OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiBy
ZWFkZXIsCiAgICAgICAgIH0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAg
ICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYgcmVzdWx0ID09IFJlYWRlclJlc3VsdDo6RGlkTm90
UmVhZFR5cGUpCi0gICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNo
bWVudEZpbGVQYXRoKSwgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplLCBjb250ZW50VHlw
ZSk7CisgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRoKFdURk1vdmUoYXR0YWNobWVudEZp
bGVQYXRoKSwgaW5mby0+cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSwgY29udGVudFR5cGUpOwog
I2VuZGlmCiAgICAgfQogfQpAQCAtNDU3LDcgKzQ2Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xl
YXIoKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3Jp
dGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0K
IAotVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdz
KGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgbG9uZyBjaGFuZ2VDb3VudCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK1ZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRQbGF0Zm9ybVZh
bHVlc0FzU3RyaW5ncyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGludDY0X3QgY2hhbmdlQ291bnQs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgYXV0byYgc3RyYXRlZ3kgPSAq
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCkBAIC01MjQsNyAr
NTMwLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMoKQogICAg
IGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKTsKICAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0ZW1zID0gc3Ry
YXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7IGluZGV4IDwg
bnVtYmVyT2ZJdGVtczsgKytpbmRleCkgewogICAgICAgICAvLyBDdXJyZW50bHksIGRyYWcgYW5k
IGRyb3AgaXMgdGhlIG9ubHkgY2FzZSBvbiBpT1Mgd2hlcmUgdGhlICJwYXN0ZWJvYXJkIiBtYXkg
Y29udGFpbiBmaWxlIHBhdGhzLgotICAgICAgICBhdXRvIGZpbGVQYXRoID0gc3RyYXRlZ3kuaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSkucGF0aEZvckhp
Z2hlc3RGaWRlbGl0eUl0ZW0oKTsKKyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3Vu
dCk7CisgICAgICAgIGlmICghaW5mbykKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAg
ICAgYXV0byBmaWxlUGF0aCA9IGluZm8tPnBhdGhGb3JIaWdoZXN0RmlkZWxpdHlJdGVtKCk7CiAg
ICAgICAgIGlmICghZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICAgICAgZmlsZVBhdGhzLmFw
cGVuZChXVEZNb3ZlKGZpbGVQYXRoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOGNiM2I2MDE3YjFk
MmMyNDNmOGM0MWI2OTYwMWRlOWVhYWRkMzU2NC4uMDg4NWVhM2E0M2I2YTNjNThkODUxMjFlNmQy
NjA0ODU3MTY1NzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xNjQsMTAgKzE2NCwxMyBAQCBzdGF0aWMgUGFz
dGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZSBwYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlKFVJUHJlZmVycgogCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJ
T05fU1RZTEVfQU5EX1RFQU1fREFUQQogCi1QYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0
ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkKK09wdGlvbmFs
PFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCkKIHsKICAgICBpZiAo
aW5kZXggPj0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oW21fcGFzdGVib2FyZCBudW1iZXJPZkl0
ZW1zXSkpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBpZiAodGhpcy0+Y2hhbmdlQ291bnQoKSAhPSBjaGFuZ2VDb3VudCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOwogICAg
IE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbW21fcGFzdGVib2FyZCBpdGVtUHJvdmlk
ZXJzXSBvYmplY3RBdEluZGV4OmluZGV4XTsKQEAgLTIzMCw3ICsyMzMsNiBAQCBQYXN0ZWJvYXJk
SXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCkKICAgICAgICAgaW5mby5pc05vblRleHRUeXBlID0gdHJ1ZTsKICAgICB9CiAK
LSAgICBpbmZvLmNoYW5nZUNvdW50ID0gY2hhbmdlQ291bnQoKTsKICAgICBpbmZvLndlYlNhZmVU
eXBlc0J5RmlkZWxpdHkgPSB3ZWJTYWZlVHlwZXMocmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycywg
WyZdIHsKICAgICAgICAgcmV0dXJuIHNob3VsZFRyZWF0QXRMZWFzdE9uZVR5cGVBc0ZpbGUocmVn
aXN0ZXJlZFR5cGVJZGVudGlmaWVycykgJiYgIVBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9N
V2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKHJlYWRTdHJpbmcoaW5kZXgsIGtVVFR5cGVVUkwp
KTsKICAgICB9KTsKQEAgLTI0MCw5ICsyNDIsOSBAQCBQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZv
cm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCkKIAog
I2Vsc2UKIAotUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChzaXplX3QpCitPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBs
YXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QsIGludDY0
X3QpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiAj
ZW5kaWYKQEAgLTI4MCwzNyArMjgyLDM3IEBAIFVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgp
CiAgICAgcmV0dXJuIFVSTCgpOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29weShj
b25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvcHkoY29uc3QgU3Ry
aW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFk
ZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
OjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAK
LWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
CitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKQogewogICAgIHJldHVybiAwOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLWxvbmcg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQogCi1sb25n
IFBsYXRmb3JtUGFzdGVib2FyZDo6Y2hhbmdlQ291bnQoKSBjb25zdAoraW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmNoYW5nZUNvdW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gW21fcGFzdGVi
b2FyZCBjaGFuZ2VDb3VudF07CiB9CkBAIC0zNzUsNyArMzc3LDcgQEAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0
ICpyZXByZXMKICAgICByZWdpc3Rlckl0ZW1zVG9QYXN0ZWJvYXJkKEBbIHJlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgXSwgcGFzdGVib2FyZCk7CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZv
TGlzdCBhbGxvY10gaW5pdF0pOwogICAgIFVJQ29sb3IgKnVpQ29sb3IgPSBbUEFMOjpnZXRVSUNv
bG9yQ2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXTsKQEAgLTYx
Myw3ICs2MTUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlv
bkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIHJldHVybiByZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYgaXRlbURhdGEpCitpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYgaXRlbURhdGEpCiB7CiAgICAgYXV0byByZWdpc3RyYXRpb25MaXN0cyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTppdGVtRGF0YS5zaXplKCldKTsK
ICAgICBmb3IgKGF1dG8mIGRhdGEgOiBpdGVtRGF0YSkgewpAQCAtNjI2LDcgKzYyOCw3IEBAIGxv
bmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3Rv
bURhdGE+JiBpdGVtRGF0YSkKIAogI2Vsc2UKIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dENvbG9yKGNvbnN0IENvbG9yJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRDb2xv
cihjb25zdCBDb2xvciYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC02NTcsNyArNjU5LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWxvbmcgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
K2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2Fy
ZEN1c3RvbURhdGE+JikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTc1OCw3ICs3NjAsNyBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB0eQogICAgIFttX3Bhc3RlYm9hcmQgdXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzOnR5cGVzQXJyYXldOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCitpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiB7
CiAgICAgcmV0dXJuIHdyaXRlKFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4geyBkYXRhIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3Jt
UGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxh
dGZvcm1QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCBkNTI3MWU4OTA4ZDAyZWQzYWZhOTQ2Nzhm
OTdmMWFmMmE1MDVhZjYzLi4zZGQ0OGU5ZjE4ZjI3MTEwZTgxNmUyNjIwMTA1YWZiOGZlZDhkMDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZvcm1QYXN0
ZWJvYXJkTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxh
dGZvcm1QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtMTIyLDEyICsxMjIsMTIgQEAgVmVjdG9yPFN0
cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYpCitpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmKQogewogICAgIHJl
dHVybiAwOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgVmVjdG9y
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYpCiB7CiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4
IDg4ZjQ0YjYyNjNmNjAxMzk2OTRhNjNmYjA5Nzg1MjllOGMyNzllNzYuLmU2MjJiNjFhN2IxYzM4
MTM2MzRlMDQzMWY1NmI3NjVmNGMzYmZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbiBz
bWFydFJlcGwKIAogc3RhdGljIGxvbmcgd3JpdGVVUkxGb3JUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiB7Ci0gICAgbG9uZyBuZXdDaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIHBh
c3RlYm9hcmROYW1lKTsKKyAgICBhdXRvIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgcGFzdGVib2FyZE5h
bWUpOwogICAgIAogICAgIEFTU0VSVCghcGFzdGVib2FyZFVSTC51cmwuaXNFbXB0eSgpKTsKICAg
ICAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIo
Y29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgcmV0dXJuIHdyYXBw
ZXI7CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5T
RmlsZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGxvbmcm
IG5ld0NoYW5nZUNvdW50KQorc3RhdGljIHZvaWQgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFj
aG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpCiB7CiAgICAgTlNUZXh0QXR0YWNobWVudCAqYXR0
YWNobWVudCA9IFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjp3
cmFwcGVyXTsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtOU0F0dHJpYnV0ZWRT
dHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0dGFjaG1lbnRdOwpAQCAtMzIz
LDkgKzMyMywxMCBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYg
dGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIGF1dG8mIHN0cmF0ZWd5
ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGlmIChpdGVtSW5kZXgpCi0gICAgICAgIHR5cGVzID0g
c3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCgqaXRlbUluZGV4ICwgbV9wYXN0ZWJv
YXJkTmFtZSkucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHk7Ci0gICAgZWxzZQorICAgIGlmIChpdGVt
SW5kZXgpIHsKKyAgICAgICAgaWYgKGF1dG8gaXRlbUluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KCppdGVtSW5kZXgsIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291
bnQpKQorICAgICAgICAgICAgdHlwZXMgPSBpdGVtSW5mby0+cGxhdGZvcm1UeXBlc0J5RmlkZWxp
dHk7CisgICAgfSBlbHNlCiAgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzKHR5cGVzLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNQYXN0ZWJvYXJk
VHlwZVN0cmluZykpKSB7CkBAIC00MDYsOSArNDA3LDEwIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1Bv
bGljCiAgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgaWYgKGl0ZW1J
bmRleCkKLSAgICAgICAgdHlwZXMgPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KCppdGVtSW5kZXggLCBtX3Bhc3RlYm9hcmROYW1lKS5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eTsK
LSAgICBlbHNlCisgICAgaWYgKGl0ZW1JbmRleCkgeworICAgICAgICBpZiAoYXV0byBpdGVtSW5m
byA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoKml0ZW1JbmRleCwgbV9wYXN0
ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCkpCisgICAgICAgICAgICB0eXBlcyA9IGl0ZW1JbmZv
LT5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eTsKKyAgICB9IGVsc2UKICAgICAgICAgc3RyYXRlZ3ku
Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogCiAgICAgcmVhZGVyLmNvbnRlbnRP
cmlnaW4gPSByZWFkT3JpZ2luKCk7CkBAIC01ODAsNyArNTgyLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShlbXB0
eVN0cmluZygpLCBjb2NvYVR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogfQogCi1WZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjpyZWFkUGxhdGZvcm1WYWx1ZXNBc1N0cmluZ3MoY29uc3QgU3RyaW5n
JiBkb21UeXBlLCBsb25nIGNoYW5nZUNvdW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQorVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFBsYXRmb3JtVmFsdWVzQXNTdHJpbmdz
KGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAgICAgYXV0byBjb2NvYVR5cGUgPSBjb2Nv
YVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoZG9tVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBmNWU0YzQw
Nzg5ODQxNmEwNWQyNGVhZjFjOTRmNTQ4NWM2YTNjY2VlLi41ZWM1OWQyZmZkOWRlNWMxZGJjYTQx
NzZmMDcwZTY2ZmQwOWQ5Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTIyMiw3ICsyMjIsNyBAQCBWZWN0b3I8
U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRl
KGNvbnN0IFN0cmluZyYgbwogICAgIHJldHVybiBjb3B5VG9WZWN0b3IoZG9tUGFzdGVib2FyZFR5
cGVzKTsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRDdXN0b21EYXRhJiBkYXRhKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogewogICAgIE5TTXV0YWJsZUFycmF5ICp0
eXBlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgZGF0YS5mb3JFYWNoVHlwZShbJl0g
KGF1dG8mIHR5cGUpIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgcmV0dXJuIGNo
YW5nZUNvdW50KCk7CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjaGFuZ2VDb3VudCgp
IGNvbnN0CitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6Y2hhbmdlQ291bnQoKSBjb25zdAog
ewogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGNoYW5nZUNvdW50XTsKIH0KQEAgLTI4
NCw3ICsyODQsNyBAQCBVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogICAgIHJldHVybiBb
TlNVUkwgVVJMRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXTsKIH0KIAotbG9uZyBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCkKK2lu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9h
cmQpCiB7CiAgICAgTlNQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0
ZWJvYXJkV2l0aE5hbWU6ZnJvbVBhc3RlYm9hcmRdOwogICAgIE5TQXJyYXkqIHR5cGVzID0gW3Bh
c3RlYm9hcmQgdHlwZXNdOwpAQCAtMjk4LDcgKzI5OCw3IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpCiAgICAgcmV0dXJuIGNoYW5n
ZUNvdW50KCk7CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjphZGRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiB7CiAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFzdGVib2Fy
ZFR5cGVzLnNpemUoKTsgKytpKQpAQCAtMzA3LDcgKzMwNyw3IEBAIGxvbmcgUGxhdGZvcm1QYXN0
ZWJvYXJkOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQog
ICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVzOnR5cGVzLmdldCgpIG93bmVy
Om5pbF07CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiB7CiAgICAg
aWYgKHBhc3RlYm9hcmRUeXBlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBbbV9wYXN0ZWJv
YXJkIGRlY2xhcmVUeXBlczpAW10gb3duZXI6bmlsXTsKQEAgLTMxOSw3ICszMTksNyBAQCBsb25n
IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZC5nZXQoKSBkZWNsYXJlVHlwZXM6
dHlwZXMuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAg
ICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwog
ICAgIGlmICghZGlkV3JpdGVEYXRhKQpAQCAtMzI3LDcgKzMyNyw3IEBAIGxvbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHBhCiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CiB9CiAKLWxvbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKK2lu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFz
dGVib2FyZFVSTCkKIHsKICAgICBOU1VSTCAqY29jb2FVUkwgPSBwYXN0ZWJvYXJkVVJMLnVybDsK
ICAgICBOU0FycmF5ICp1cmxXaXRoVGl0bGUgPSBAWyBAWyBjb2NvYVVSTC5hYnNvbHV0ZVN0cmlu
ZyBdLCBAWyBwYXN0ZWJvYXJkVVJMLnRpdGxlIF0gXTsKQEAgLTMzOSwxNCArMzM5LDE0IEBAIGxv
bmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVi
b2FyZFVSTCkKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKIH0KIAotbG9uZyBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK2ludDY0X3QgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgTlNDb2xvciAq
cGFzdGVib2FyZENvbG9yID0gbnNDb2xvcihjb2xvcik7CiAgICAgW3Bhc3RlYm9hcmRDb2xvciB3
cml0ZVRvUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOwogICAgIHJldHVybiBjaGFuZ2VD
b3VudCgpOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0
X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIEJPT0wgZGlkV3JpdGVE
YXRhOwogCkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJ
dGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICBy
ZXR1cm4gaXRlbTsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZl
Y3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0ZW1EYXRhKQoraW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0ZW1E
YXRhKQogewogICAgIGlmIChpdGVtRGF0YS5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIHdy
aXRlKGl0ZW1EYXRhLmZpcnN0KCkpOwpAQCAtNDk5LDExICs0OTksMTQgQEAgbG9uZyBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mIGl0
ZW1EYXRhKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGNoYW5nZUNvdW50XTsKIH0KIAotUGFz
dGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChzaXplX3QgaW5kZXgpCitPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0
X3QgY2hhbmdlQ291bnQpCiB7CisgICAgaWYgKGNoYW5nZUNvdW50ICE9IFttX3Bhc3RlYm9hcmQg
Y2hhbmdlQ291bnRdKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgTlNQYXN0
ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCi0g
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBQ
YXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKICAgICBOU0FycmF5PE5TUGFzdGVib2FyZFR5cGU+ICpw
bGF0Zm9ybVR5cGVzID0gW2l0ZW0gdHlwZXNdOwpAQCAtNTIwLDcgKzUyMyw2IEBAIFBhc3RlYm9h
cmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIH0KICAgICBpbmZvLmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVVcGxv
YWRDb250ZW50ID0gY29udGFpbnNGaWxlVVJMID09IENvbnRhaW5zRmlsZVVSTDo6WWVzOwogICAg
IGluZm8ud2ViU2FmZVR5cGVzQnlGaWRlbGl0eSA9IGNvcHlUb1ZlY3Rvcih3ZWJTYWZlVHlwZXMp
OwotICAgIGluZm8uY2hhbmdlQ291bnQgPSBjaGFuZ2VDb3VudCgpOwogICAgIHJldHVybiBpbmZv
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0
ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IGQ5MzAyMjgzZWRhMzU3MzdjZWJlYTljZmFjYzdh
YzE2MjdlNmU4MmQuLjRlZmY0ZDhlNjY5YWY5YTIwM2JhZWNjOTZmNDE0ZGQzY2E3MWY5YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tCkBAIC05NywxMiArOTcsMTIgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZSksIHNpemUpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cGFzdGVib2FyZENvcHkoY29uc3QgU3RyaW5nJiBmcm9t
UGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3RlYm9hcmQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnBhc3RlYm9hcmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0
IFN0cmluZyYgdG9QYXN0ZWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFz
dGVib2FyZCh0b1Bhc3RlYm9hcmQpLmNvcHkoZnJvbVBhc3RlYm9hcmQpKTsKIH0KIAotdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ2hh
bmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5nZUNvdW50KCkpOwog
fQpAQCAtMTIyLDE3ICsxMjIsMTcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRVUkwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGkKICAgICBjb21w
bGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVybCgpLnN0
cmluZygpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFkZFBhc3RlYm9hcmRUeXBl
cyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJkVHlwZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmFkZFR5cGVzKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFz
dGVib2FyZFR5cGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJv
YXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgZm9yIChhdXRvKiB3ZWJQcm9jZXNzUHJveHkgOiBtX3dlYlByb2Nlc3NQ
cm94eUxpc3QpIHsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHktPmhhc0Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikpCkBAIC0xNDYsMTcgKzE0NiwxNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFBh
cwogICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6c2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVi
b2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnNldENvbG9yKGNvbG9yKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5zZXRTdHJpbmdGb3JUeXBlKHN0cmluZywgcGFzdGVib2FyZFR5
cGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90IHNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90IHNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZSgwLCBwYXN0
ZWJvYXJkVHlwZSkpOwpAQCAtMTc1LDE5ICsxNzUsMTkgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE4KICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKG9yaWdpbikpOwogfQogCi12b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YT4mIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1
c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3JpdGUoZGF0
YSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZvKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNoYW5nZUNvdW50KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQYXN0ZWJvYXJkSXRlbUluZm8mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoaW5kZXgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIGNoYW5n
ZUNvdW50KSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCmluZGV4IDA5MDgxYjk1YmRhZDdkNjc3MWM1
MmQyZWEyZDhiMjkyNDc3YmJmNGUuLmFjZDlhOWM1ZjhhMzQ3NjQ3NTIzZTZkYmMyNTFmNjFiNDlh
MDZhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5
LmNwcApAQCAtNzUsMTkgKzc1LDE5IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
Q3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+Jiwg
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25zdCBTdHJpbmcm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYsIGludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGOjpudWxsb3B0KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90LCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCwgY29uc3QgU3RyaW5nJiwgaW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuaAppbmRleCA0NThkYTE0MGQ3ZTFkYzg2ODE1YWFmMjBhYTk1YzU2YmIx
MWM2OWQ1Li42Njk0YzA4NjY5ZGExNTk5ODJhYWIyZWRhOGY1Njc5ODI2NGYwZTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtODMsMjcgKzgz
LDI3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJik7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90KT4mJik7Ci0g
ICAgdm9pZCBwYXN0ZWJvYXJkQ29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25z
dCBTdHJpbmcmIHRvUGFzdGVib2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZENoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2
b2lkIHBhc3RlYm9hcmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0
cmluZyYgdG9QYXN0ZWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKICAgICB2b2lkIGdl
dFBhc3RlYm9hcmRVbmlxdWVOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYm
KTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9yJiYpPiYmKTsKICAgICB2
b2lkIGdldFBhc3RlYm9hcmRVUkwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Ci0gICAgdm9pZCBhZGRQYXN0ZWJv
YXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYp
OwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRVUkwoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAg
ICB2b2lkIHNldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNl
dFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5
cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOworICAg
IHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoaW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQ2NF90KT4mJik7CisgICAgdm9pZCBz
ZXRQYXN0ZWJvYXJkQ29sb3IoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9h
cmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
aW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludDY0X3QpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
KT4mJik7CiAgICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYm
IHVybCwgU3RyaW5nJiYgdGl0bGUpPiYmKTsKICAgICB2b2lkIHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkTWVtb3J5
OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmKTsKLSAgICB2b2lkIGFs
bFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYm
KTsKKyAgICB2b2lkIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYp
OworICAgIHZvaWQgYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmKTsKIAotICAgIHZv
aWQgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCB3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50NjRfdCk+JiYpOwogICAgIHZvaWQgdHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYpOwogCiAjaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJlNGUyNmU0
MzU3YTgwM2ZkMmZkNGE5NTlhZTZiMTNlNjc1ZGZjYzcuLjk4ZDNhY2QxYzYyYzM5NmNlY2I1MWU2
NzEyNWM5Mzk2MmI5ZGYzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDEwICsyOSwxMCBAQCBtZXNz
YWdlcyAtPiBXZWJQYXN0ZWJvYXJkUHJveHkgewogICAgIFVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9hcmROYW1l
KQogI2VuZGlmCiAKLSAgICBXcml0ZUN1c3RvbURhdGEoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhPiBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBj
aGFuZ2VDb3VudCkgU3luY2hyb25vdXMKKyAgICBXcml0ZUN1c3RvbURhdGEoVmVjdG9yPFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhPiBkYXRhLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+
IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwogICAgIFR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIG9yaWdpbikgLT4gKFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJvbm91cwotICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5m
byhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvPiBhbGxJbmZvKSBTeW5jaHJvbm91cwotICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgU3luY2hyb25vdXMKKyAgICBBbGxQYXN0ZWJv
YXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KSAt
PiAoT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbEluZm8p
IFN5bmNocm9ub3VzCisgICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRl
eCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50KSAtPiAoT3B0aW9u
YWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvKSBTeW5jaHJvbm91cwogICAgIEdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90
IGl0ZW1zQ291bnQpIFN5bmNocm9ub3VzCiAgICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKFN0cmluZyBzdHJpbmcpIFN5bmNocm9ub3VzCiAgICAgUmVhZFVSTEZyb21QYXN0ZWJv
YXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJs
LCBTdHJpbmcgdGl0bGUpIFN5bmNocm9ub3VzCkBAIC00NiwxNyArNDYsMTcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFN0cmluZyBz
dHJpbmcpIFN5bmNocm9ub3VzCiAgICAgR2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmlu
Zz4gc3RyaW5ncykgU3luY2hyb25vdXMKICAgICBHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShT
dHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKSBTeW5jaHJvbm91cwot
ICAgIFBhc3RlYm9hcmRDb3B5KFN0cmluZyBmcm9tUGFzdGVib2FyZCwgU3RyaW5nIHRvUGFzdGVi
b2FyZCkgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwotICAgIEdldFBhc3Rl
Ym9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFu
Z2VDb3VudCkgU3luY2hyb25vdXMKKyAgICBQYXN0ZWJvYXJkQ29weShTdHJpbmcgZnJvbVBhc3Rl
Ym9hcmQsIFN0cmluZyB0b1Bhc3RlYm9hcmQpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5j
aHJvbm91cworICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwogICAgIEdldFBhc3RlYm9h
cmRVbmlxdWVOYW1lKCkgLT4gKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgU3luY2hyb25vdXMKICAg
ICBHZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViQ29yZTo6
Q29sb3IgY29sb3IpIFN5bmNocm9ub3VzCiAgICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFz
dGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJvbm91cwotICAgIEFkZFBh
c3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBhc3Rl
Ym9hcmRUeXBlcykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwotICAgIFNl
dFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBh
c3RlYm9hcmRUeXBlcykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cwotICAg
IFNldFBhc3RlYm9hcmRVUkwoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwgcGFzdGVib2Fy
ZFVSTCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIFN5
bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9yKSAtPiAodWludDY0X3QgY2hhbmdl
Q291bnQpIFN5bmNocm9ub3VzCi0gICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5n
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJpbmcpIC0+
ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMKLSAgICBTZXRQYXN0ZWJvYXJkQnVm
ZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIC0+ICh1
aW50NjRfdCBjaGFuZ2VDb3VudCkgU3luY2hyb25vdXMKKyAgICBBZGRQYXN0ZWJvYXJkVHlwZXMo
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpIC0+
IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cworICAgIFNldFBhc3RlYm9hcmRUeXBl
cyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcykg
LT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3VzCisgICAgU2V0UGFzdGVib2FyZFVS
TChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJkVVJMLCBTdHJpbmcgcGFz
dGVib2FyZE5hbWUpIC0+IChpbnQ2NF90IGNoYW5nZUNvdW50KSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBX
ZWJDb3JlOjpDb2xvciBjb2xvcikgLT4gKGludDY0X3QgY2hhbmdlQ291bnQpIFN5bmNocm9ub3Vz
CisgICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJpbmcpIC0+IChpbnQ2NF90IGNoYW5nZUNv
dW50KSBTeW5jaHJvbm91cworICAgIFNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgLT4gKGludDY0X3QgY2hhbmdlQ291bnQp
IFN5bmNocm9ub3VzCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGY3NzIyNjYy
N2FkMjE0Nzg5YjgzMWQ3MTNhYmNkOWUxNzU4ZTk4ZDQuLjViYWVhM2RjOGU4NjM4Y2MxZTU1YTEy
YWU0NzVmNDc4N2I1ZjdkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTczNiw3ICsxNzM2LDcgQEAgdm9pZCBQREZQbHVn
aW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU0Fy
cmF5ICppdGVtcywKICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIHR5cGVzKQogICAgICAgICBw
YXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwogCi0gICAgdWludDY0X3QgbmV3Q2hhbmdlQ291
bnQ7CisgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudDsKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7CiAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0
ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlcyksCiAgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkobmV3
Q2hhbmdlQ291bnQpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXgg
NDc5MzBhMmE2OTQxMzMwZGM0MzM1ODVkNzQxZjA5ZDI4NjExNjAwNi4uODhjNjk1ZjVkYjY3MDdm
MWJhZTBjNGQ2ODJkOTRmNTMwMjQwZGZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKQEAgLTE1Niw5ICsxNTYsOSBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZAogICAgIHJl
dHVybiB2YWx1ZXM7CiB9CiAKLWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3Vu
dChjb25zdCBXVEY6OlN0cmluZyAmcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsK
LSAgICB1aW50NjRfdCBjaGFuZ2VDb3VudCB7IDAgfTsKKyAgICBpbnQ2NF90IGNoYW5nZUNvdW50
IHsgMCB9OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9h
cmRDaGFuZ2VDb3VudChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudDo6UmVwbHkoY2hhbmdlQ291bnQpLCAwKTsKICAg
ICByZXR1cm4gY2hhbmdlQ291bnQ7CiB9CkBAIC0xODQsMjEgKzE4NCwyMSBAQCBVUkwgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBy
ZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5nKTsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICB1aW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAg
fTsKKyAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OwogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkFkZFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZFR5cGVzKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6QWRkUGFzdGVib2Fy
ZFR5cGVzOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VD
b3VudDsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
IHsKLSAgICB1aW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKKyAgICBpbnQ2NF90IG5ld0No
YW5nZUNvdW50IHsgMCB9OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNl
dFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGVzKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseShuZXdDaGFu
Z2VDb3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotbG9uZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpAQCAtMjEwLDI4ICsyMTAsMjgg
QEAgbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgdWludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07
CisgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkTmFt
ZSwgcGFzdGVib2FyZFR5cGUsIGhhbmRsZSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSwg
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGU6
OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50Owog
fQogCi1sb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3Rl
Ym9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgdWludDY0X3Qg
bmV3Q2hhbmdlQ291bnQ7CisgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudDsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkVVJMKHBhc3RlYm9hcmRVUkws
IHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVi
b2FyZFVSTDo6UmVwbHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdl
Q291bnQ7CiB9CiAKLWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHVpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9
OworICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQgeyAwIH07CiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZENvbG9yKHBhc3RlYm9hcmROYW1lLCBjb2xv
ciksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRDb2xvcjo6UmVw
bHkobmV3Q2hhbmdlQ291bnQpLCAwKTsKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAK
LWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgdWludDY0X3QgbmV3Q2hhbmdl
Q291bnQgeyAwIH07CisgICAgaW50NjRfdCBuZXdDaGFuZ2VDb3VudCB7IDAgfTsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShw
YXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIHN0cmluZyksIE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlOjpSZXBseShuZXdDaGFuZ2VD
b3VudCksIDApOwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KQEAgLTMxOCw5ICszMTgs
OSBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZwogICAgIHJldHVybiB0eXBlczsKIH0KIAotbG9u
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFz
dGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0
b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewotICAgIHVpbnQ2NF90IG5ld0NoYW5nZUNvdW50IHsgMCB9OworICAgIGludDY0X3Qg
bmV3Q2hhbmdlQ291bnQgeyAwIH07CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6V3JpdGVDdXN0b21EYXRhKGRhdGEsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6V3JpdGVDdXN0b21EYXRhOjpSZXBseShuZXdDaGFuZ2VDb3VudCksIDAp
OwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KQEAgLTMzMiwxNyArMzMyLDE3IEBAIGlu
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgcmV0dXJuIGl0ZW1zQ291bnQ7CiB9CiAKLVZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitPcHRpb25hbDxWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3Vu
dCkKIHsKLSAgICBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZvOwotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVtSW5mbyhwYXN0ZWJv
YXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkFsbFBhc3RlYm9hcmRJdGVt
SW5mbzo6UmVwbHkoYWxsSW5mbyksIDApOworICAgIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJk
SXRlbUluZm8+PiBhbGxJbmZvOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OkFsbFBhc3RlYm9hcmRJdGVtSW5mbyhwYXN0ZWJvYXJkTmFtZSwgY2hhbmdlQ291bnQpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpBbGxQYXN0ZWJvYXJkSXRlbUluZm86OlJlcGx5KGFs
bEluZm8pLCAwKTsKICAgICByZXR1cm4gYWxsSW5mbzsKIH0KIAotUGFzdGVib2FyZEl0ZW1JbmZv
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitPcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQpCiB7Ci0gICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwg
cGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwgMCk7CisgICAgT3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBpbmZvOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Oklu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lLCBjaGFuZ2VDb3Vu
dCksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXg6OlJlcGx5KGluZm8pLCAwKTsKICAgICByZXR1cm4gaW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCmluZGV4IDgxYTdhNDQxZTkzNTliNmU2NTYzMjA2ZTRlNWI3ODc1NzI0
ZWQ2MWMuLjZjMGI1NTUzYzQyZWFmNTFhMzc5OTlhNGZkY2U4MTQ1Njg0NmI0MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU5LDE3ICs1OSwxNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0
b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBsb25nIGNoYW5n
ZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIGludDY0
X3QgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgU3RyaW5nIHVuaXF1ZU5hbWUoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpDb2xvciBjb2xv
cihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBVUkwgdXJsKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogCi0gICAgbG9uZyBhZGRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwotICAgIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKLSAgICBsb25nIHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgbG9uZyBz
ZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwotICAgIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwor
ICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBz
ZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAg
IGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CisgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRh
Jikgb3ZlcnJpZGU7CkBAIC04NSwxMCArODUsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7
CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4g
YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGludDY0X3QgY2hhbmdlQ291bnQpIG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkgb3ZlcnJpZGU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gdHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwotICAg
IGxvbmcgd3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YT4mLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHdyaXRlQ3Vz
dG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMzk1MTFlMDY3ZDBlYjZlMjlkOGEzZTRjYjJkMGQ0
NWMwNGM2OGJkNS4uNGMzNjFhYTc5ZDJhMzc1MDI3NDFkMmI4NmQxMDVmY2VhMDkwNDBiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU3LDI3ICs1NywyNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0
ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkgb3ZlcnJpZGU7CisgICAgT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50
KSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9y
PFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgbG9uZyBjaGFuZ2VD
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90
IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IFN0cmluZyB1bmlxdWVOYW1lKCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3Io
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVVJMIHVybChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIAotICAgIGxvbmcgd3JpdGVDdXN0
b21EYXRhKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHdyaXRlQ3Vz
dG9tRGF0YShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIG92ZXJyaWRlOwogCi0gICAgbG9uZyBhZGRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwotICAgIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICBsb25nIHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgbG9uZyBzZXRD
b2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwotICAgIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKKyAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAg
IGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRC
dWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIGlu
dDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Cisg
ICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDBmN2E5MTUwMjY2YTFiNTVh
NmI0MDNhYTU2YTg3YWQ5NDVkZjRkYmYuLjE2NTllNmQwZGQ3ZGU3MjNmNmRkOTY1NGI2ZjBiOGMx
NjkyOTExOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOCw3ICsxMDgs
NyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuc3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLWxv
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcgJnBhc3Rl
Ym9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKTsKIH0KQEAgLTEyOCwzMiArMTI4LDMy
IEBAIFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVy
bCgpOwogfQogCi1sb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
ewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFkZFR5cGVz
KHBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2
NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQogCi1sb25n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3Rl
Ym9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitpbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkws
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VVJMKHBhc3RlYm9hcmRVUkwpOwogfQogCi1sb25n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRD
b2xvcihjb2xvcik7CiB9CiAKLWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0U3RyaW5nRm9yVHlw
ZShzdHJpbmcsIHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTE2OCwxOSArMTY4LDE5IEBAIFZlY3Rv
cjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoY29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkudHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUob3JpZ2luKTsKIH0KIAotbG9u
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlQ3VzdG9tRGF0YShj
b25zdCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE+JiBkYXRhLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLndyaXRlKGRhdGEpOwogfQogCi1XZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK09wdGlvbmFsPFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KTsKKyAgICBy
ZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGluZGV4LCBjaGFuZ2VDb3VudCk7CiB9CiAKLVZlY3RvcjxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWxsUGFzdGVib2FyZEl0ZW1J
bmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitPcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjphbGxQYXN0ZWJv
YXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VD
b3VudCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5h
bGxQYXN0ZWJvYXJkSXRlbUluZm8oKTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oY2hhbmdlQ291bnQpOwogfQogCiBp
bnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>