<?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>233923</bug_id>
          
          <creation_ts>2021-12-07 04:07:41 -0800</creation_ts>
          <short_desc>Make PreviewConverterProvider not modify the SharedBuffer once returned</short_desc>
          <delta_ts>2021-12-14 15:06:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>233922</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820973</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 04:07:41 -0800</bug_when>
    <thetext>The LegacyPreviewLoader keeps a SharedBuffer, add data to it and pass it to the provideMainResourceForPreviewConverter PreviewConverter and then clear the Sharedbuffer

The original object passed to provideMainResourceForPreviewConverter is now empty.

In practice here is doesn&apos;t matter as the PreviewConverter will read the content immediately, however refactoring this code will allow to have the SharedBufferBuilder::get() method always return a new object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820974</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-07 04:09:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/86149850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820979</commentid>
    <comment_count>2</comment_count>
      <attachid>446155</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 04:18:11 -0800</bug_when>
    <thetext>Created attachment 446155
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820980</commentid>
    <comment_count>3</comment_count>
      <attachid>446156</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 04:19:01 -0800</bug_when>
    <thetext>Created attachment 446156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821310</commentid>
    <comment_count>4</comment_count>
      <attachid>446266</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 17:34:26 -0800</bug_when>
    <thetext>Created attachment 446266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821311</commentid>
    <comment_count>5</comment_count>
      <attachid>446267</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 17:35:50 -0800</bug_when>
    <thetext>Created attachment 446267
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822103</commentid>
    <comment_count>6</comment_count>
      <attachid>446537</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 06:36:38 -0800</bug_when>
    <thetext>Created attachment 446537
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822104</commentid>
    <comment_count>7</comment_count>
      <attachid>446538</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 06:37:42 -0800</bug_when>
    <thetext>Created attachment 446538
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823955</commentid>
    <comment_count>8</comment_count>
      <attachid>447121</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-14 03:30:09 -0800</bug_when>
    <thetext>Created attachment 447121
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823972</commentid>
    <comment_count>9</comment_count>
      <attachid>447121</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-14 05:37:46 -0800</bug_when>
    <thetext>Comment on attachment 447121
Patch

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

&gt; Source/WebCore/loader/ios/LegacyPreviewLoader.mm:230
&gt; +    completionHandler(m_originalData.copy());

Unrelated but why do we need a CompletionHandler if we are synchronously returning.

&gt; Source/WebCore/platform/PreviewConverter.cpp:85
&gt; +        appendFromBuffer(WTFMove(buffer));

So we can never go to didFailUpdating, even if buffer is of size 0?
Should we move from const FragmentedSharedBuffer* to RefPtr&lt;FragmentedSharedBuffer&gt;&amp;&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824090</commentid>
    <comment_count>10</comment_count>
      <attachid>447121</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-14 13:15:36 -0800</bug_when>
    <thetext>Comment on attachment 447121
Patch

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

&gt;&gt; Source/WebCore/platform/PreviewConverter.cpp:85
&gt;&gt; +        appendFromBuffer(WTFMove(buffer));
&gt; 
&gt; So we can never go to didFailUpdating, even if buffer is of size 0?
&gt; Should we move from const FragmentedSharedBuffer* to RefPtr&lt;FragmentedSharedBuffer&gt;&amp;&amp;?

Buffer previously was a pointer and could never have been null (the SharedBuffer was always created in the constructor)
I made it a Ref&lt;FragmentedaharedBuffer&gt;&amp;&amp;

There’s been no logic change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824145</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-14 15:06:06 -0800</bug_when>
    <thetext>Committed r287053 (245249@main): &lt;https://commits.webkit.org/245249@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447121.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446155</attachid>
            <date>2021-12-07 04:18:11 -0800</date>
            <delta_ts>2021-12-07 17:34:12 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>755324</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0Li43MDgwYTZjZjdhNmQgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFy
dCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
Y29kZXJUZXN0L0RlY29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0x
MS0yMSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1Bl
cmZvcm1hbmNlIHRlc3RdW2Nzcy1jb250YWluXSBBZGQgY2FzZSB0byB0ZXN0IGNvbnRhaW46IGxh
eW91dCBpbnNpZGUgYSBjb21wbGV4IGRvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCBiYTJiZTEzOTE2MjguLmQxNzI0MjAxNWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIg
dG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAzICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHJ1Y3R1cmVJREJsb2IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2Nh
MmMyMzNhOC4uYjQ2OTNmOTFjNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVy
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgLy8g
T25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
IGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9y
IHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyNWEwODI0YmI3YzcuLmI3NTM5YWM2ODEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEwNDkgQEAKKzIwMjEtMTItMDcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciBub3QgbW9kaWZ5IHRoZSBT
aGFyZWRCdWZmZXIgb25jZSByZXR1cm5lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBsb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVy
OjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisKKzIwMjEtMTItMDUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBTb3VyY2VCdWZmZXJQ
YXJzZXIgc2hvdWxkIGJlIHVzaW5nIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM4NjUKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODYwODUyNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBvYnNlcnZhYmxlIGRp
ZmZlcmVuY2VzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZp
cmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyOjpTZWdtZW50OjpTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcDoKKworMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJv
YmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFu
ZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0
ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgUmVuYW1l
IG9ubHksIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21h
Yy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAg
ICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5o
OgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAg
ICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgICogZWRpdGlu
Zy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
Lmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgICog
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9j
dW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAg
ICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5o
OgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHA6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAg
KiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaDoKKyAgICAgICAg
KiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUu
Y3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oOgorICAg
ICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW06CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAq
IHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAg
ICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXll
ZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xl
YXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1h
Z2VCYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVj
b2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vcG9z
aXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5n
L01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5j
cHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHdv
cmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAg
ICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorCisyMDIxLTEx
LTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmlu
Z0J1aWxkZXIsIGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdo
CisgICAgICAgIGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBp
bW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIEZseS1CeTogUGFzcyBTaGFyZWRCdWZm
ZXIgdmlhIGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAg
ICAgIHRvIGRvIHNvLgorICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7
IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpz
ZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpoYXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNv
dXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJp
bmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0
YSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0
dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpk
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c3RvcmUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVw
ZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252
ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1l
bnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRp
ZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVy
Ojpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29u
dmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29u
dmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRC
dWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBi
b29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVs
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21X
ZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6
OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252
ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3
Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJh
dG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZy
b21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRC
dWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAy
MS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERp
c3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25l
IGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNo
YXJlZEJ1ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAg
ICAgICAgYW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdh
cyBhbiB1bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVj
ZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50
IGlzIG1hZGUKKyAgICAgICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9k
cyB0aGF0IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0
ZW5lZCBhcmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAg
ICAgICBBcmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEg
c2luZ2xlIHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1No
YXJlZEJ1ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2
ZSBiZWVuIGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25s
eSB3aGVuIHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMg
Y2hhbmdlCisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJv
dWdoIGEgY2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlz
IGEgbm8tb3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkK
KyAgICAgICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1
cmUgb2YgYSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxl
CisgICAgICAgIHVzZXJzIGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBj
b252ZXJzaW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJl
ZHVuZGFuY3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVk
LCB0aGUgU2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBi
YWNrIGFuZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisg
ICAgICAgIEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmlu
ZyBvcGVyYXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0
aGlzIGNoYW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1w
b3JhcnkgbWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVBy
b3ZpZGVyIGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxl
IHRoZSBjaGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBh
cmVhcyBpcyB0aG9yb3VnaAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Np
b25zIHVubGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdp
bGwgYmUgbWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAg
Tm8gb2JzZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRl
c3RzLiBOZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNw
b25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25z
ZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5p
dGl6ZUtleWlkcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
Y29uc3VtZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9y
bURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1
bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dElu
ZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5k
ZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToK
KyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJV
U0QubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5m
byk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFy
Y2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVy
OjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwp
OgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VS
aWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFy
a3VwQW5kQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6
CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFU
b0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5S
ZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpz
aGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRz
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5o
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNo
ZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWRE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0
VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0Ojpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFy
ZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNr
Q2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2Uv
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jl
c291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBh
Z2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
Om1ha2VDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICog
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFRJRkZUb1BORyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVy
Rm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5p
dFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXll
ZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZp
bmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAg
IChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2Rl
ckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3Jt
RGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVk
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXRE
YXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZE
b2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6
Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6
OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1h
dGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEds
eXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRI
VGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFi
bGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJh
c2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6
OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJs
ZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZv
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0
aWNhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1
YlRhYmxlOjpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9v
a3VwVGFibGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRT
Y3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRl
ZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OnNjcmlwdExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdT
VUJUYWJsZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpHU1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJs
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVj
b2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9y
RE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVBy
b3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3Jp
dGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNT
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNl
aXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
Q29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vz
c0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZp
bGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdl
RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTEyLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXNlIGVuZCBiaXRzIGluIHRleHQg
Ym94IGl0ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKaW5kZXggMzM1NGI1MmE1
MGNiLi5kYTMzNmU2ZjViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
Ci12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjAuLjZlMjIwNDhjZjVmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IENsaXBib2FyZEltYWdlUmVhZGVyIDogUGFzdGVi
b2FyZEZpbGVSZWFkZXIgewogICAgIENsaXBib2FyZEltYWdlUmVhZGVyKERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJikg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERvY3Vt
ZW50PiBtX2RvY3VtZW50OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjAuLmVm
ZjEwYjViNjVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9
IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAg
ICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsK
LSAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKKyAgICAgICAgZWxzZSBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEp
KQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yNjUsOSArMjY1LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIHsK
ICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAgICAgICAgU3RyaW5nIG1hcmt1
cFRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRp
emUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICAgICAgbWFya3VwVG9T
YW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBz
dGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5p
dGl6ZURhdGFJZk5lZQogICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkK
LSAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9kYXRhKS5wdHIoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlclRvU2FuaXRpemU7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRv
U2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSku
cHRyKCk7CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPiht
X2RhdGEpKQogICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpn
ZXQ8U3RyaW5nPihtX2RhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5oCmluZGV4IDJjYzJjOGUxYTU0ZS4uMzdjODI1ZTIzNWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJj
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBC
dWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsK
KyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIg
OiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTIuLjI3NGUwMzhkNDE4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0Ns
aXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzQsMTAgKzM0
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdp
dGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFn
ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBp
ZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQog
ICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVj
dG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5s
ZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOS4uMzgyMWIwMzcxODAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMywxMCArMzMsMTAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7
CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFn
ZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZv
clByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAg
YXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBb
cmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVU
eXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYS4uZjA1YzIzMzA3YmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQg
RE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVj
b3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChy
ZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25z
ZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tI
YW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBy
ZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxl
ciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBE
T01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBp
ZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRS
ZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3Np
dGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0
Y2gpOwogICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAog
CiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1
ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNl
LmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21p
c2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5r
KCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAg
ICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
KSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRX
aXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29u
dGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5
MTRiNDBiYjIzLi5jMGY4MDMyYjA0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgUmVzcG9uc2VCb2R5
IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkg
LT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHko
KTsKICAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25z
ZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgICAgIHJldHVybiBi
dWZmZXIuY29weVJlZigpOyAvLyBTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJl
IHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkg
eyB9OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwCmluZGV4IDI4NTBkYmExZTNiZi4uOWQxYmM2NzRmYzgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0xMzUsMTcgKzEzNSwxNyBA
QCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0
ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAg
ICByZXR1cm4gSW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCkuc2FuaXRpemVJbml0RGF0YShpbml0
RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KQorYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1
cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4
IGQ4YTRiM2FmMTJmMS4uZDdiMWQ1M2QwNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7
CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVi
bGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJp
bmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5o
CmluZGV4IDIxZTUyZjRiNzE0Zi4uNDEwZWQyZmI2NDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTM2LDE0ICszNiwxNCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUNsaWVu
dCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5DRE1DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50
QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNs
aWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYi4uNmY4ODhlMTc4
NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0LDEzICs1NCwxMyBAQCBuYW1lc3BhY2Ug
ewogICAgIGNvbnN0IHVpbnQzMl90IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwog
fQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEv
Zm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZm
ZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24g
eyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VK
U09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMo
Y29uc3QgU2hhcmVkCiAgICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgZm9yIChhdXRvJiB2
YWx1ZSA6ICpraWRzQXJyYXkpIHsKICAgICAgICAgYXV0byBrZXlJRCA9IHZhbHVlLT5hc1N0cmlu
ZygpOwogICAgICAgICBpZiAoIWtleUlEKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNv
bnN0IFNoYXJlZAogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2lu
aXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRv
IGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZl
ciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
KyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9i
amVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmlu
ZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwogICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJv
eGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlE
IGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3Rl
bQpAQCAtMTUxLDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJu
IHBzc2hCb3hlczsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtl
eUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAK
ICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhidWZmZXIpOwog
ICAgIGlmICghcHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0Nl
bmMoY29uCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5p
dERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXpl
Q2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4g
Q29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0
bWwjY29tbW9uLXN5c3RlbQpAQCAtMTk1LDcgKzE5NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDaGVjayBpZiB0aGUgYnVmZmVyIGlz
IGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICAvLyBUaGUgV2ViTSBpbml0RGF0YSBpcyB0aGUg
Q29udGVudEVuY0tleUlELCBzbyBzaG91bGQgYmUgbGVzcyB0aGFuIGtXZWJNTWF4Q29udGVudEVu
Y0tleUlEU2l6ZS4KQEAgLTIwNSwxMCArMjA1LDEwIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJu
IGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKKyAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShi
dWZmZXIpOwogICAgIGlmICghc2FuaXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCkBAIC0yMzMsNyArMjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFS
ZWdpc3RyeSgpCiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZh
dWx0OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUlu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3Ry
eTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5
cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8
ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERh
dGEoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0
S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0
RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVl
LnNhbml0aXplSW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCmluZGV4IGNkMTM4N2E2YmQwMy4uNzdk
NjA0YjA4YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJv
eDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJE
ZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
cyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1
c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHND
YWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRh
Q2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0Nh
bGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBT
YW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFj
dEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJC
b3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0
ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFj
ZTcwMWEyLi4xNDc3NmMyMDE1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEu
ZGF0YSgpLCBpbml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgLy8gMTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGlu
aXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9y
LgogICAgICAgICAvLyAxMC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRl
ZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2YgaW5pdCBkYXRhLgotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXpl
SW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNh
bml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAgICAgLy8gMTAu
My4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5l
d2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZEluaXREYXRhKSB7
CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVz
dChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAg
IG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgbV9pbnN0YW5j
ZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2Fu
aXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChS
ZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29s
IG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0
TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJl
bGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJ
bmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVw
ZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYK
ICAgICAvLyA2LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKICAgICBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11
dGFibGUgewogICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxp
ZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCi0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlv
bi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0
aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHByZWNlZGlu
ZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCByZWplY3Qg
cHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2Fu
aXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgewpAQCAtNjAx
LDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVs
bC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2lu
ZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1f
c2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8U2hh
cmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vz
c2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIp
XSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlv
bmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3ICs2NDksNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKICAgICAvLyA1LiBSZXR1cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRpYUtleVNlc3Np
b246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVz
c2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBtZXNzYWdlKQogewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2
ZW50CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jcXVldWUt
bWVzc2FnZQpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVL
ZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAg
ICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2Fn
ZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgTWVk
aWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1ZXVlTWVzc2Fn
ZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAzZDk2Zjg4MDJl
NzQuLjM2NWFjZTVjMDk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNz
IENETTsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwOwog
Y2xhc3MgTWVkaWFLZXlzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlz
ZVByb3h5OwogCkBAIC04NywyMCArODcsMjAgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFBy
b21pc2UgPSBET01Qcm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNl
JiBjbG9zZWQoKSB7IHJldHVybiBtX2Nsb3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0
YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQorICAgIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBz
dGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KIAogICAgIHVuc2lnbmVkIGlu
dGVybmFsSW5zdGFuY2VTZXNzaW9uT2JqZWN0UmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2lu
c3RhbmNlU2Vzc2lvbi0+cmVmQ291bnQoKTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vz
c2lvbihEb2N1bWVudCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBl
LCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3Rh
bmNlU2Vzc2lvbj4mJik7Ci0gICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlh
S2V5TWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IHVwZGF0ZUV4cGlyYXRpb24oZG91YmxlKTsKICAgICB2b2lkIHNlc3Npb25DbG9zZWQoKTsKICAg
ICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Up
IGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hh
bmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQoKSBmaW5hbDsKIApAQCAtMTQwLDEwICsxNDAsMTAgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtl
eVNlc3Npb25UeXBlIG1fc2Vzc2lvblR5cGU7CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlv
bjsKICAgICBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiBtX2luc3RhbmNlU2Vzc2lvbjsKLSAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91
YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7IDAgfTsKICAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0
VGltZSB7IDAgfTsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRp
YUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVz
aW5nIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxh
eUlEKT47CiAgICAgRGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYy4uMzk4ZThhYjFiNjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxv
bmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1
c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRC
dWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNo
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
IHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0
aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6
Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAK
IGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgp
LCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNp
emUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSks
IHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmQu
LjYwZDYyYWFmZjgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRpYUtleVN0
YXR1c01hcCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAKaW5kZXggODNiMjRhY2VhYTViLi4zNjdmMzFkMTg2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTE3Nyw3
ICsxNzcsNyBAQCBib29sIE1lZGlhS2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29uc3QKICAgICAg
ICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1D
bGllbnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRl
eCA3YjU5YTNiYzZkMjIuLjkxYTFhMDcxMTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3Rl
Y3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRp
ZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlT
ZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8g
Q0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9s
b2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRl
eCAyZmRjNGMwMDIxZjYuLjAwMzkzMDJmN2RjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNo
YXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVu
dFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIu
Y29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywg
bG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVm
UHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAo
aXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3Jt
RGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0
YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFr
ZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1
cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcAppbmRleCBmY2MyMTZhMDFjZGYuLjIyMTNkNjIzMDNlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsy
NDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0
KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAg
ICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwg
Y29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFt
X3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2lu
azo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNp
bms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZm
ZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAg
ICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRh
LT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2Up
LCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2Uo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmRE
YXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9z
aW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9
IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRh
KGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRh
ID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01G
b3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICszMjYsMjAgQEAgdm9pZCBGZXRjaEJvZHlD
b25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAg
ICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVm
ZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICByZXR1cm4gV1RGTW92
ZShtX2J1ZmZlcik7CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQo
V1RGTW92ZShkYXRhKSk7Cit9CisKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7CiB9CiAKIFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIo
KQpAQCAtMzQxLDkgKzM0Nyw3IEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAg
IHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwogCi0gICAgYXV0byBh
cnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVm
ZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgcmV0dXJuIG1fYnVm
ZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNo
Qm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CkBAIC0zNTEsOSArMzU1LDcgQEAgUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNC
bG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikK
ICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwg
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5cGUpKTsKIAotICAgIGF1dG8g
YnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRh
ID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4
dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0
YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUp
OwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDgg
KzM2NCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYg
KCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVm
ZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9
IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0
UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgzLDEwICszODUsOCBAQCB2b2lkIEZl
dGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBt
X3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAg
bV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAg
ICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAg
ICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBF
eGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2IuLjg3MWQyYzA4NjMzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApA
QCAtNTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAh
IW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQo
KTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
PiB0YWtlQXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgy
LDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2Nv
bnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9j
b25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNp
bms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4
M2Q4Li4wM2Y4OWI2MWNhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgp
CiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1
bWVyKTsKICAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2Zm
OS4uNDYxMmQwZTBlM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCkBAIC0zOSwxNCArMzksMTQgQEAgY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXI7CiBjbGFz
cyBGZXRjaExvYWRlckNsaWVudDsKIGNsYXNzIEZldGNoUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBGZXRjaExvYWRlciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVu
dCYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZldGNoTG9hZGVy
KCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwogCiAgICAgdm9p
ZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmV0Y2hSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgQmxvYiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAKaW5kZXggNGRmODQyNmM3MThiLi5lMzhhODNhZGU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBA
IHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1
bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBj
aHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9j
b25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFt
aW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICBy
ZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYy4uY2Y3ODYzMjM5ZmQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAt
MTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1
bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNr
IHRha2VOb3RpZmljYXRpb25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNh
bGxiYWNrKTsgfQogICAgICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3Vt
ZURhdGFDYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
CmluZGV4IGRkMTljODcwYWE3ZC4uMWE2NmJmODE4MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVt
IGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVu
dW0gY2xhc3MgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVz
IH07CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQgewotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGhpZ2hsaWdodDsKKyAgICBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
aGlnaGxpZ2h0OwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOwpAQCAtNTIsNyArNTIsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdo
bGlnaHQtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxp
Z2h0LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxp
Z2h0LT5zaXplKCksIDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcAppbmRleCBlMmQ5YTYxZTQyNzYuLjVlODBmMGMwNzJkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
Y3BwCkBAIC00NCwxNSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIg
dWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8g
RmlsZSBTaWduYXR1cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAK
LXN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURh
dGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVm
ZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVy
KCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAg
ZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVy
KCkgY29uc3QKIHsKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAg
ZW5jb2RlciA8PCAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhLi5iNWRh
ZjYwMjUzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBIaWdobGln
aHRSYW5nZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBj
cmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAgICAgICAg
IFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMTEsNyAr
MTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4
Zi4uZTVkZTg0OTRmMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHZv
aWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1Jhbmdl
PiYmIHJhbmdlKQogICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdo
bGlnaHQoV1RGTW92ZShoaWdobGlnaHQpKTsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdl
OjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6
cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQogewogICAgIGF1dG8gYXBwSGln
aGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsK
ICAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCBiMTUyZjc2
ZWQ0MjQuLmUyNzY2MzNiNDg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1
bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTdGF0aWNSYW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgfkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGln
aGxpZ2h0cygpOwogICAgIE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RS
YW5nZVNlYXJjaFRpbWUoKSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdl
ZTVjYzg3Li4yN2NkOGVlYzUzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0
aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVU
cmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVn
aW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXpl
SURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2
ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24t
dmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRo
KCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBv
YmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5l
dyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9u
Il9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBz
ZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9i
ID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRo
QmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0
aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXgg
aW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZv
JiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAg
IGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAg
ICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBjaGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMz
LDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
UHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAl
cywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXku
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBh
dXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAg
aWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRl
eCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlW
YWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFs
dWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsx
NjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8
ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBV
bmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3Jl
IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7Cisg
ICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlm
ICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEs
NyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3Jk
KFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rp
b24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9Q
QVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVk
IGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20g
dGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFu
c2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGlu
IGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0
IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwo
KSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1
dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dl
ckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIg
SURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFu
Z2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAg
ICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAg
ICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsK
QEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5j
aGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NF
UlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4
ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1
dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1
cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJl
Y29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
bwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktl
eS5pc051bGwoKSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShs
b3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93
ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dl
ciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9
CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlE
YXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8g
dXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVw
cGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBl
ciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4
IDhiZmUyMjdkYjYxOS4uNDg2MTAzNGQzYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAt
MjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8g
YnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYg
KG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29y
IHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUs
NyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhT
dGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7
CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1f
cHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZl
cikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQg
YXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmLi5jOWQ2ZGE2YmRkOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpz
dGFydFJlY29yZGluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVy
biB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWls
YWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUp
CitzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkK
IHsKICAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVy
LT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAg
cmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQs
IEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2Ip
LCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3
MTJiNDQ1MjgzNi4uMWU5Yjc0YWIxN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hFcnJvcihFeGNlcHRpb24mJik7CiAKICAgICBlbnVt
IGNsYXNzIFRha2VQcml2YXRlUmVjb3JkZXIgeyBObywgWWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hE
YXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRh
Q2FsbGJhY2smJiwgVGFrZVByaXZhdGVSZWNvcmRlcik7CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6
T2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggM2Y0YzliY2QxMzNhLi44NzRhYTdmMGIxOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUgdGhlIGltYWdlIGJ5IGRlY29kaW5nIGl0
IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nh
bml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1h
Z2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRl
KCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwg
dHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFw
SW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiLi5jYzVhODY1NzMwNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9p
ZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVh
ZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVz
c2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVy
LCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZp
ZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFy
KCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oCmluZGV4IGY1ODI3ZGY5Mzc5NC4uNzM5NDJhODM1OTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAg
c3RydWN0IE1lc3NhZ2UgewogICAgICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsKLSAgICAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVuZGluZ01lc3Nh
Z2VzOwogICAgIGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAz
NTMuLjNjZWVkMGEwMTFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGll
bnQsCiAgICAgbV9jb250ZXh0SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAg
Zm9yIChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRj
aE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAg
Y2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYg
ZGF0YSkgeworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmlu
ZyYgdGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQp
OwogICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYy
Li4xMWJkNDVkZTkxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFD
aGFubmVsU3RhdGUgc3RhdGU7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJv
cj4gZXJyb3I7CiAgICAgfTsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRl
Q2hhbmdlLCBTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0g
c3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj47CiAgICAgdXNpbmcgUGVuZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAg
IHZvaWQgc3RvcmVNZXNzYWdlKFBlbmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1
ZmZlciYpOwogICAgIHZvaWQgcHJvY2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVy
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMzA5YzAyNjQzZjVhLi42M2YxYzNjYmUxZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJs
OwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3Vy
Y2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDgg
KzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsx
OTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3Vy
Y2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5k
bGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9t
b2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291
cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNy
ZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVB
bmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQuLmNl
MDA5ZDRlNWVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToK
IAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21v
ZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJv
b2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRN
b2RlbExvYWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2NzkuLjEzMDNlYzRkMjU2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5l
S2l0TW9kZWxMb2FkZXJVU0QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3Jl
OjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBB
U1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXpl
X3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBz
aXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRh
dGEoKS0+c2l6ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09
IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaAppbmRleCAwYjg5OGY2YWRiNTcuLmQ1MTczZmJmOGI0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNp
bmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZl
clNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDog
cHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaAppbmRleCBjNDUyYzgzZmJkNWMuLmI4Yjc3ODVmOTFkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBA
IC01MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYg
KCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRh
aW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFp
bnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJ
ID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWlu
c09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRh
KCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1f
c2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAg
ICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAg
ICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICgh
bV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5n
ID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVm
ZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZm
ZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Nv
bnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07
CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3
MzIyNi4uZWYzN2YxZDBjYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBEZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhczsKIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBj
bGFzcyBJbWFnZUJpdG1hcEJhY2tpbmc7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsK
IAogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93
aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMy
MmE4ZS4uMTA4ZTZjODc2N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
aApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRG
YWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQy
LDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25T
cGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNz
IFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNl
dHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0Li5jNDJlYzA1MWZlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxl
VHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMu
YWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAg
ICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDE3MjRjZjBlNTBiYS4uYzVlOWUyNmIzNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC00MTMzLDcgKzQxMzMsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJv
bWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiB7IGF0dGFj
aG1lbnQtPnVuaXF1ZUlkZW50aWZpZXIoKSwgV1RGTW92ZShhZGRpdGlvbmFsVHlwZXMpLCBXVEZN
b3ZlKGFkZGl0aW9uYWxEYXRhKSB9OwogfQogCi12b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKK3ZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKIHsKICAgICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCiAgICAgICAg
IGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVudGlmaWVyLCBjb250ZW50
VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlLi4xZDA3MTZjNWI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3Mg
RGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNz
IERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRD
b21tYW5kQ29tcG9zaXRpb247CkBAIC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xh
c3MgUGFzdGVib2FyZDsKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVy
TGF5ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgRm9udDsKIGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVj
a2VyOwpAQCAtNTYzLDcgKzU2NCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBm
aWxlRGF0YSk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4
IDA4YWExMjQyNjYyMC4uOTU3YjRmZDRhNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvbnRlbnRSZWFkZXIuaApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBy
ZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJv
b2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJl
c2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsK
KyAgICBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUg
PSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVh
ZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNo
aXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZE
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlOwogI2VuZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAg
ICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9
LCBjb25zdCBTdHJpbmcmID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVz
ZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQ
cmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29s
IHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJU
RkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUg
PSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cAppbmRleCA1NDllYjdkMmU0YzAuLjExN2RiYTY4ZWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzks
NyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1l
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShj
b250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
ZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29u
dGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlci5oCmluZGV4IDVjNTI5ZGQ3YzhlYy4uOWQ4MTYwNWYxOTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQx
LDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBh
c3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7
CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lk
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29u
dGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzguLjA3ODI0ODM2
MmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVu
dEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBp
ZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAg
ICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAg
ICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAg
ICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAg
ICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFt
ZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIq
IGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShV
UkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAg
ICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2Vz
dGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBs
ZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRo
TUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIy
LDggKzIzMjIsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogc3RhdGljIFJldGFpblB0cjxO
U0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxl
bWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNo
ZWRJbWFnZSgpKSB7Ci0gICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNh
Y2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVk
QnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBpZiAoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkp
CisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVt
ZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYi4uNzZiMWEwMDlkZTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBib29sIHN1cHBvcnRzQ2xp
ZW50U2lkZUF0dGFjaG1lbnREYXRhKGNvbnN0IEZyYW1lJiBmcmFtZSkKIAogI2VuZGlmCiAKLXN0
YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1l
bnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFNpemUpCitzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9y
SW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtMzA5LDcgKzMw
OSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFt
ZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBz
ZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlm
aWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAg
ICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVu
dGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAg
ICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7
CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1l
KSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwg
aW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1v
dmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRv
JiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQp
KSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAg
ICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291
cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9
KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1l
KSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5t
YWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZv
IDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdHJ1Y3Qg
TWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0
cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJr
dXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2Fu
U2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hpdmUpCkBAIC00NDIsNyAr
NDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1h
cmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlw
ZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVy
biBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEo
KS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFy
a3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWlu
UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9
CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUs
IERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBB
bmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rp
b248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcg
KzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVw
bGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZy
b21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJh
bWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
LnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVN
YXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3Vt
ZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlN
RVR5cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9j
dW0KICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1v
dmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRB
cmNoaXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hp
dmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2
ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICgh
ZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjEyLDEyICs2MTIs
MTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFt
ZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2LDExICs2MjYsMTEgQEAgYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291
cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02MzksMTIgKzYzOSwxMiBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBS
ZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIp
Citib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1h
Z2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRS
ZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDExICs2NTMsMTEgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0
cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjc2LDcgKzY3Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChj
b25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAg
IGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CkBAIC03NDYsNyArNzQ2LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7
CiB9CiAKLXN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBm
cmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGlj
IFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogICAgIFJl
ZiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhU
TUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9j
dW1lbnQpOwpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVS
TChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9X
ZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNv
bnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IDYwNDg2ZTcxYWQ1OS4uZDNlOTgxOWJkNTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNw
cApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiti
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAg
ICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApp
bmRleCA0NWQ5MzNlMTNjYTQuLmJjYTY2OTZlYmU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAg
LTUzLDcgKzUzLDcgQEAgY2xhc3MgQmxvYkxvYWRlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsK
IGNsYXNzIFJlYWRhYmxlU3RyZWFtOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggNTU5ZWJjYzQ4YzVmLi40MmY0MTgwZGZhODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtOTQs
NyArOTQsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdlcygpCiAgICAg
ICAgIGJvb2wgc2hvdWxkU3RvcFByb2Nlc3NpbmcgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoT24o
bV9xdWV1ZS5maXJzdCgpLCBbdGhpc10oY29uc3QgQ1N0cmluZyYgdXRmOCkgewogICAgICAgICAg
ICAgbV93cml0ZVN0cmluZyh1dGY4KTsKLSAgICAgICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBkYXRhKSB7CisgICAgICAgIH0sIFt0aGlzXShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGRhdGEpIHsKICAgICAgICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KG1fd3JpdGVSYXdE
YXRhKTsKICAgICAgICAgfSwgW3RoaXMsICZzaG91bGRTdG9wUHJvY2Vzc2luZ10oVW5pcXVlUmVm
PEJsb2JMb2FkZXI+JiBsb2FkZXIpIHsKICAgICAgICAgICAgIGF1dG8gZXJyb3JDb2RlID0gbG9h
ZGVyLT5lcnJvckNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKaW5kZXggNTUxZjcwZjkxNjdiLi5kMjNjZmViYjQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsK
IHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHBy
b2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2lu
ZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVl
OwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzMuLmQyYjg3NDFh
MDQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklu
bGluZUltYWdlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1J
TUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxB
dHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0
dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBhdXRvKiBob3N0RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJ
bWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2QuLjY2
MWRlYzkzNzZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEZpbGU7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50
OwogY2xhc3MgUmVuZGVyQXR0YWNobWVudDsKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEhU
TUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChIVE1MQXR0YWNobWVudEVsZW1lbnQpOwpAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVt
ZW50KGNvbnN0IEVsZW1lbnQmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25z
dCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYg
dGh1bWJuYWlsKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50
b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDUxNzFiOWNkYzc4OS4uMWE1NmJj
MDM1OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5
MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRv
UmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJ
Zk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVx
dWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
KQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERh
dGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5NTY2OTQ5NjMxMC4uNmMzYjY5M2I3YjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVt
cHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVu
dFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAppbmRleCA0NDJkMDk0NmJlMjUuLjAwZDhmMjM5ZDcxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbWFn
ZURvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKCkKICAgICBpZiAoIW1faW1hZ2VFbGVtZW50
KQogICAgICAgICBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCi0gICAgaWYgKFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCisgICAg
aWYgKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFp
blJlc291cmNlRGF0YSgpKQogICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+
dXBkYXRlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgaW1hZ2VVcGRhdGVkKCk7CkBAIC0xNTEsNyAr
MTUxLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIGlm
ICghcGFyc2VyKCktPmlzU3RvcHBlZCgpICYmIG1faW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIENh
Y2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9ICptX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0g
bG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKIAogICAgICAgICAvLyBJZiB0aGlzIGlzIGEg
bXVsdGlwYXJ0IGltYWdlLCBtYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBwYXJ0LCBzaW5jZSB0
aGUgcmVzb3VyY2UgZGF0YQogICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBu
ZXh0IHBhcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGE3Y2E3MTYyZDc5MS4uMTg3OTNmZjA2NjMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAg
ICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxl
cikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5k
bGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRS
ZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5k
ZXggOGU2NWM0ZWIxMDIzLi5kMjk1NzgxMGQ4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xh
c3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsy
MzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9p
ZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
KTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRk
TWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lk
IGludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KTsKIApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAg
ICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4p
PiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAg
aWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0LmNwcAppbmRleCA2MWU0YmMzYmEwMTkuLmYwNjQwM2E2MjM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYgbG8KICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZN
b3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25z
ZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5k
ZXggZjc2MTE0Y2U5OGY0Li4wN2I0MjFiNTljMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2
LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0
aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNl
TG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
ZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUs
IHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1Yjgx
MmQ0Zi4uZjMyZjY2MGI5MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7
IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6
IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAg
LCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewog
fQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNp
emUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVm
ZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2
ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpl
dmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9k
YXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIp
Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFM
ZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURh
dGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVf
dCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBt
X2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxl
bmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBt
X2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7
Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+
ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1
ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBk
YXRhTGVuZ3RoOwogfQogCkBAIC0yNjcsNyArMjY5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJl
c28KICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsK
IH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURh
dGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZh
MDAwNTNhZTExLi5lZTM5NDU3Zjc2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dh
bGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQwLDcgKzQx
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC04OCw4ICs5MCw4IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIu
Y29weVJlZigpOyB9CiAgICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJlc291cmNl
RGVjb2Rlcj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7IH0KIAot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5jb3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmNvcHlSZWYoKTsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
IH0KIAogICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRp
ZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgICAg
IHZvaWQgc2V0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJ
bmZvPiYgY2VydGlmaWNhdGVJbmZvKSB7IG1fY2VydGlmaWNhdGVJbmZvID0gY2VydGlmaWNhdGVJ
bmZvOyB9CkBAIC0xMDMsMTAgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJl
c3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQog
ICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNw
b25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1ZmZlcmVk
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0
OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRh
dGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0x
MTksOCArMTIxLDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1l
OwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
QnVmZmVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAg
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJl
c291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVy
UmVzb3VyY2UgfTsKQEAgLTE0NCw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VEYXRh
IGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNv
ZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENh
Y2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwot
ICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7
CisgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyLi4xODlmMjZi
MDk4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNl
cHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1
ZXN0KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAg
QVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2Vw
dFdpdGhSZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWlt
ZVR5cGUoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRh
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAg
aWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUo
Y29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0
ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJl
cXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRh
dGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNl
NjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTQwNywxMiArMTQw
NywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAg
ICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0
RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNv
ZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAg
ICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVu
Y29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4
IDhmNmZiY2MyOTNhZS4uNmJjZDg3ZGRjZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEyMyw3ICsx
MjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2b2lkIGlu
dGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBw
cml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVz
cG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBv
cmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmln
aW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25zZSkKICAg
ICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAgICAgICAg
ICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwotICAg
ICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wgbV9yZXNw
b25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEu
LjFiNjQ2YWEyMTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAwLDE1ICsxMDAsMTUgQEAgc3RhdGlj
IGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwg
Y29uc3QgU3RyaW5nJiB0ZXgKIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJj
ZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygp
LCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUs
IHJlc3VsdCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250
ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCitib29sIElu
c3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9v
bCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNv
bnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5j
b2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpyZXNvdXJjZUNvbnRlbnQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
RnJhCiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKHVybCwgbG9hZGVyLT51cmwoKSkpIHsKICAgICAgICAgKmJhc2U2NEVu
Y29kZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGI1MWFkZGIxYmQ4Zi4uM2Q1ZTU2NmRiZTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3Mg
SW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJ
bnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJs
aWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsK
KyAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJh
c2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVz
b3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lk
IHJlc291cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1l
KiwgY29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAg
IHN0YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMu
LjZhZTUyNjU5N2NkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0
YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNl
QnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCgpCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAg
IEFTU0VSVCh3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRG
aWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBsYWNl
bWVudERhdGEoKSB9OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRl
eHQvaHRtbCJfcywgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUo
KSksICJVVEYtOCJfcyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RG
TW92ZShyZXBsYWNlbWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJz
dGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRG
b3JTY29wZTxib29sPiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdl
LCB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBj
M2Q4NDUwZjcxYzIuLjNiOTBlZjRjNTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVu
dExvYWRlcigpCiAjZW5kaWYKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2Fk
ZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAo
bV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVE
YXRhLmNvbnRlbnQoKS0+Y29weSgpOwpAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3Vt
ZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJj
ZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwog
ICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAg
IG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNl
ZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAg
IG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5k
YXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0
YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgQXJj
aGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRl
cjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
ID0gbWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5y
ZXNwb25zZSgpOwpAQCAtMjI1NSw4ICsyMjU1LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5
YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21t
aXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJj
ZURhdGEoKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjI5Miw3ICsyMjkyLDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6c3RhcnRJY29uTG9hZGluZygpCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoaWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1l
bnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0
X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50
YWtlKGxvYWRJZGVudGlmaWVyKTsKIApAQCAtMjMxMyw3ICsyMzEzLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRf
dCBsb2FkSWRlbnQKICAgICByYXdJY29uTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIs
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2Fk
aW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICAvLyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRz
IGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVk
LgogICAgIEFTU0VSVChtX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggZmJmNTQ1YzQ2MGU0Li4zMzk4NzNkNWQzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291
cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsK
QEAgLTgzLDcgKzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQ
cmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0
aW9uOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7
CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVM
b2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3Vy
Y2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3dyaXRlcjsgfQogCkBAIC0zOTIsOCArMzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwotICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKElj
b25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8
TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBA
IC02MjEsNyArNjIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRp
b25Qb2xpY3kgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1f
aWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPElj
b25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29u
TG9hZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJz
OwogICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2Uy
ODZlMTRmNC4uMDhhMGFlMTlhMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApA
QCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdl
OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRhLi5lZTlmM2QwYzk4NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5
OCw3IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVE
YXRhOwogY2xhc3MgV2lkZ2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5o
CmluZGV4IGFlZjY2OGJkNjNlZC4uMjlkMmUzZjQ2MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIwMC4uNjA0M2FjOWJlMjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAg
LTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBh
eWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAg
ICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oCmluZGV4IDQ4YmIyMTUzYzkzZi4uYjUxNzRlZGM5NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25l
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdC5jcHAKaW5kZXggYzYyNzc2ODU4YTZkLi5kOTRiNzAwMDc0MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0
b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1
cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZl
cihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0
b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZm
ZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRl
KHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuaAppbmRleCBhZWEzZGM1N2M4NzguLjgzYjg2MTNjZmRhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNyAr
MzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVj
dCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxnb3JpdGht
IHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3RkOjpvcHRp
b25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29u
c3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3Jh
cGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFs
Z29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1
YmI0ZDNjYTguLmRmMTM5NTg4ZThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lE
RU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVy
KEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2Zy
YW1lIHsgJmZyYW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9w
dGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0Rl
ZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9v
cHRpb25zIHsgb3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAg
ICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7
CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMTg5
LDcgKzE5MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYg
Y2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQpAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGlj
eSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBk
YXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3
aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzI5LDI5ICszMzAsMjkgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAg
ICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5
bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1f
cmVzb3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAg
aWYgKGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0K
IAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNl
RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsK
K30KKwogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAgIGlm
IChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAg
aWYgKCFtX3Jlc291cmNlRGF0YS0+aXNOdWxsKCkpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5l
bXB0eSgpOwogfQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkg
Y29uc3QKQEAgLTU1MSwxNCArNTUyLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAg
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRh
TGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwg
V1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkg
Z2V0IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCisgICAgLy8gVGhpcyBtZXRob2Qg
c2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgogICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CiAKICAgICAvLyBQ
cm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwg
cHJvY2Vzc2luZyBjYW4gZG8KQEAgLTU3MSw3ICs1NzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtp
bmcgc3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBi
ZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNl
bmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBt
X2ZyYW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRh
KHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZm
ZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3Ro
KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCkBAIC03MzUsNyArNzM2LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ24KICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2
ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5
dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJm
MGJiYjNiLi41NGIxYjg2NmRmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9h
ZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VB
bmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2
OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3
ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAg
IHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFu
ZGxlKikgb3ZlcnJpZGU7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291
cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1
ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVz
b3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNl
ZmJkZjlkYTEuLjM3ZDBiYjgyMWFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBs
b24KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
K3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
aWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTQy
LDcgKzU0Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VSVChtX3Jl
c291cmNlKTsKIApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgK
aW5kZXggMzcyM2I2YjlhYjlmLi44MzJjOWYwZTczZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBFeHBlY3Rl
ZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tS
ZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVz
dCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAg
dm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnN0aXR1dGVEYXRhLmgKaW5kZXggZjY2MjkyZTMxY2JlLi5hOGE0OWI0N2Y5MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0
ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdV
UkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURh
dGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3Rv
cnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6
IG1fY29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwo
ZmFpbGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0
ICs1NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxk
UmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9T
ZXNzaW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAot
ICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9
CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5n
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAg
ICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRl
bnQ7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAg
ICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNw
b25zZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9T
ZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4
Li5jZjJkZTBjNjJkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0
dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmgKQEAgLTM3LDEyICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4o
bV9kYXRhKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsg
Km1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBj
bGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9y
ZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jl
c3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJl
c291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQogICAgICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNlKFdU
Rk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAtNTIs
NyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzkuLjAzNmVmZDIwZTQ5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7
CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUg
TUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3Qg
dG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlv
biBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGgg
Q0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NS4uNTE5
NzhmNDEyMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1NSwxMCArMjU1LDggQEAgVVJMIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3Rh
dGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBw
cm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBS
ZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxs
IG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7CisgICAgICAgIHJldHVybiByZXNv
dXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIApAQCAtMjkwLDkg
KzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFs
bGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNl
ID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBw
cm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAg
ICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZm
ZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRh
dGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNh
MTcuLmI5NjM1NmU3ODU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBw
bGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAppbmRleCBmMWY3ZTE3NTYzMDEuLjJiYjNmZTc1Yjk5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVk
IHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgp
CitSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpKTsKICAgICBpZiAoIWJ1ZmZlcikKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3Qg
VVJMJiB1cmwsIGMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoVVJMIHsgdXJsIH0sIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpLCBwYXRoKSk7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgcGF0aCkKK0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJl
c3BvbnNlKSwgV1RGTW92ZShkYXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9y
YWdlSUQoMCkKQEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikKIHsKLSAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3Bh
dGguaXNFbXB0eSgpID8gZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRh
KHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaAppbmRleCA4OGM5NGRlMWE3NzQuLmMyODhlNzAzNmM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZhbGxiYWNrID0g
MSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNl
PiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5
cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25z
dCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
dW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1
bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBl
KHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAK
IHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJl
c3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJl
c3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0
N2E2ZTg5Li43YjJmYjZjOWMyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRp
b25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUuLjhjZjA1Y2NlMTg4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCkBAIC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICBhdXRvIGRhdGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQo
IklOU0VSVCBJTlRPIENhY2hlUmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8p
Il9zKTsKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKIAogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNF
bXB0eSgpKQpAQCAtODE1LDcgKzgxNCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChyZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1l
bnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRl
bWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgp
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgp
KSB7CkBAIC04NzMsMTIgKzg3MiwxMiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIAog
ICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChlbnRyeVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAorCiAgICAgLy8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0
ZSB0aGUgcmVzb3VyY2UgZGF0YSB0byBhIGZpbGU/IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhl
IHJlc291cmNlJ3MgZGF0YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAog
ICAgIC8vIG9mIG1lbW9yeToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAg
cmVzb3VyY2UtPmRhdGEoKS5jbGVhcigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAog
ICAgIHJlc291cmNlLT5zZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMjczLDcgKzEyNzIsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91
bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzbwogICAgIHJldHVy
biBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhdWRpby8iKSB8fCBz
dGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKTsKIH0KICAg
ICAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUlu
RGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQorYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmdWxsUGF0aDsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggOWE5NTMwMDg3NjZhLi40MTAyYTE4MDhiNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0
b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGlj
IFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBi
b29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZp
bGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rvcnko
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcm
IG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBs
b2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBjMTBhYzdkLi40ZWY5Y2Q2
NmJkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5
cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9u
RnVuY3Rpb24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25z
IGluIHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFz
c2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZl
IGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4g
c3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+
IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1
cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2
ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFy
Y2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ICAgIHJldHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250
YWlucyhtaW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNm
OGQ5Li41NTY0NTE1YzllMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZUZhY3RvcnkuaApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXJj
aGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4g
Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IGZjMjBkYTNkYTAzMi4u
MDczODM5NGE4Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hp
dmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25z
ZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBl
KQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBp
bmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZl
UmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2Rp
bmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJl
c3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCks
IHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwLi4wNTQ4ZWY3MjFlZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICsz
NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVi
bGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBV
UkwmLAorICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAg
ICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
ID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZElnbm9yZVdoZW5VbmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJj
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5n
IG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIuLjcxMTUwY2JkZDg5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIK
ICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50
ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2Fj
eVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwor
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJj
aGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEo
KS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAo
YXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpA
QCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3Qg
aW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAg
aWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNl
RGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25z
ZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VE
YXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0
eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJj
ZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5
TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24K
ICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSBy
ZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlk
IHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3Vy
Y2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24p
ICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBl
IENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNl
ID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVz
cG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNDgsMjMg
KzI0OCwyMyBAQCBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwog
fQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4g
Y3JlYXRlKFVSTCgpLCBkYXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJl
ZjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpOwogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgCisKICAgICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgp
LCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0
KSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImIGRhdGEKICAgICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkg
IT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVk
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChw
bGlzdC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcg
QEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5KQogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291
cmNlRGljdCA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlm
ICghbWFpblJlc291cmNlRGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gTm8gbWFpbiByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4
dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBD
RkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBpZiAoYXV0byBzdWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGlj
dCkpCiAgICAgICAgICAgICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFy
Y2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5v
dCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAg
ICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAg
ICAgICAgICAgIGFkZFN1YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpA
QCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rp
b25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gSW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3Bv
bnNlVVJMID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRv
IGhhdmUgYSByZXNwb25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNTQ1NDkzNT4KICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1
LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZy
b21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNl
dCgpKQogICAgICAgICByZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRo
ZSBmcmFtZXNldCBkb2N1bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRv
CiAgICAgLy8gYW5vdGhlciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFt
ZXNldCBvZiBpdHMgb3duKS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZy
YW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lk
dGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5oCmluZGV4IGQwOWVjOWY3NWFiYS4uNWEwN2IxMGI0YmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4
ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmlu
YWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25z
dCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29u
c3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYg
bWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3VyY2Vz
LCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5v
ZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1l
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxB
cmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjIuLmQwMTM5Zjg3YTA2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBA
IC0xMDYsNyArMTA2LDcgQEAgUmVmPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUo
KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxN
SFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRC
dWZmZXImIGRhdGEpCitSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBG
b3Igc2VjdXJpdHkgcmVhc29ucyB3ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBV
UkxzLgogICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBS
ZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
U2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmPFNo
YXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERh
dGEoUGFnZSogcGFnZSkKIHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlPiBy
ZXNvdXJjZXM7CiAgICAgUGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsK
QEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVy
YXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0
ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGls
bCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3Ry
aW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlT
dHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCks
IGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNv
dXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgs
MTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJh
bnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9u
OiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lp
U3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7Cisg
ICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5s
ZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRo
ZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAg
ICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90
IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21w
KGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBl
bmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERh
dGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7Cisg
ICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERh
dGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGlu
ZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0
TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBN
SFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAg
ICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAg
ICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWlu
KGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGlu
ZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsK
KyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGlu
ZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxu
IiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAg
ICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0t
XHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCks
IGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsK
KyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYw
MDIuLjJkZmU4N2U4MmU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1IVE1MUGFyc2VyOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MQXJjaGl2
ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1M
QXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
Kik7CiAKICAgICB2aXJ0dWFsIH5NSFRNTEFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRk
MDIwMy4uNWVlOTE4Njg0YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29s
IHNraXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgbGlu
ZVJlYWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQ
YXJzZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4i
KQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAg
ICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91
bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wg
Y2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBl
bmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5z
ZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkg
Y29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsK
KyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJl
YWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRD
aGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikg
ewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3
ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3Bl
Y2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAg
ICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3Ro
KCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5l
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVu
Y29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0g
Zm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29k
ZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRl
bnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJc
clxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSArMTkz
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZSgpLT5t
YWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0
byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91
c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlm
ICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQg
Y29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjA0LDExICsyMDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6
OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAg
ICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3Vz
Q29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6
OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgK
aW5kZXggMWU5YmQ0ZDc3NjdlLi4wZDYwNDM0M2YzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1M
QXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhU
TUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgy
MDcuLmUxYTg3NTE2YmQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBA
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAg
ICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3
OWM1NjQuLjM3OThhOWI0ZDkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9j
ZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3Vt
ZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIu
cHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYy
ZmM2MS4uMzhhMmUxN2YwZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmlu
ZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5
cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAv
LyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5k
IGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1
cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNl
dEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyAr
OTcsMTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgq
c2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxl
U2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERl
Y29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0
IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0
VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNo
ZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQg
aXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0
byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1Li5lNjU1YzY5ZTNlZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAt
NTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAK
ICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEz
NDFjOC4uZDJiYzI4MjE0NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2Fj
aGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC0xMDUsNyArMTEwLDcgQEAgYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0
ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikg
OiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRG
b250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRM
b2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5k
ZXggY2ViZGM1NTdmMTNmLi4xMzQ2NmNjOTlkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVS
Tl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNl
JikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1Jl
bW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmLi45NDYyNzk1MjBkMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlu
bGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0
YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwo
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJu
YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAm
ZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiAr
NTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1h
Z2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tp
bnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2Ny
aXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisg
ICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEt
PmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRp
bmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2Vz
IG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
JiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRl
cm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmICht
X2RhdGEpIHsKQEAgLTU5Myw3ICs1OTUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZQogdm9p
ZCBDYWNoZWRJbWFnZTo6ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkKIHsKICAgICBp
ZiAobV9pbWFnZSkgewotICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cgdGhhdCB0aGUgU2hh
cmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZl
cmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCisgICAgICAgIC8v
IExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGhhcyBi
ZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBo
ZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCiAgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9w
cm9ibGVtLzI0Mjc1NjE3KTogSXQgd291bGQgYmUgYmV0dGVyIGlmIHdlIGNvdWxkIHNvbWVob3cg
dGVsbCB0aGUgSW1hZ2UncyBkZWNvZGVyIHRvIHN3YXAgaW4gdGhlIG5ldyBjb250ZW50cyB3aXRo
b3V0IGRlc3Ryb3lpbmcgYW55dGhpbmcuCiAgICAgICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVk
RGF0YSh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCmluZGV4IGUzODk2MmEwZGNhZi4uMDgzZjkyZjg4ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1f
aW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWln
aHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcg
KzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBk
YXRhKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBk
aWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURh
dGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50
UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsK
IAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9p
ZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAK
ICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApp
bmRleCA5MmIwODM2OTc1ODguLjg5NWRiMTE1OGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENh
Y2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJh
d1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBD
YWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmll
dz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZp
b3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNp
emUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVC
dWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29t
cGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERh
dGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAg
IG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAog
ICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRh
dGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwog
fQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNy
ZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9u
b3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBz
cGlubmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2Vp
dmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxE
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBk
ODQ0ZDU3MS4uYTc4NjVmOGFkMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9p
ZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBi
b29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRh
dGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0
YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50
OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIqKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFD
aHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7CiAgICAgdm9pZCBub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCk7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC05Miw3ICs5Miw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3Jl
ZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERl
bGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNhZThiYjY4
ZDI1Yy4uYmY2OWU4MGU1NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
OjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAg
IGNsaWVudC0+bm90aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hl
ZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5
UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9k
YXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigp
OwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3
QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAy
ODMyY2MxLi5jOTgyZGQ2OTM3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNz
IE1lbW9yeUNhY2hlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
CkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNv
ZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAg
ICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9p
ZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3Ig
PSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3Li5kYjQzMTYwN2FlNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIs
MTIgKzUyLDEyIEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50
IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0g
U1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgp
KTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNl
dENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5Li40NDVlNGY5ZjQy
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZH
RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cAppbmRleCBhOGVmNTc2YmI2OTMuLmQyYzFkZTQ3ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENh
Y2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90
ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0
aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5z
ZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNv
ZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5Li5iNjczOThiMGU0ZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niwx
MCArOTYsMTUgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1
cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2Rh
dGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAg
IH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4
NGNhMmQ4Ny4uODY1MWU2MzlhZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyOC4uMGM4NDI4YmI5OWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAs
MTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0g
ZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGll
bnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRS
ZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBk
b1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihk
YXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
aW5kZXggODVlMzk2MjA2NTEzLi4wOWI0MzM5YTM3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0
ODcuLmQyZWZmMmQyZDQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+
ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYg
KGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRT
aXplKDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSht
ZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxYy4uYmQyMzEyMTRmMmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNi4uODY0MDlmNjAwNmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zNyw3ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmll
d0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtNDgsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygpOwog
ICAgIHZvaWQgZGlkRmFpbCgpOwogCkBAIC02MCwxNyArNjIsMTcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikg
ZmluYWwgeyB9OwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2
aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2
b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2
aWV3Q29udmVydGVyJikgZmluYWw7CiAKICAgICAvLyBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIK
LSAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdD
b252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQ
cmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVy
PiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGll
bnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3Vy
Y2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0Rh
dGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9u
c2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1Ni4uNGIyZTM0ZGFkYmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3
ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVu
dChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50
KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZp
ZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1f
b3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAg
IHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdU
Rk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZp
ZXdSZXNwb25zZSgpIH07CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRl
ciYgYwogICAgIH0pOwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252
ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVj
ZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0
KCk7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKQEAgLTIyNCwxMCArMjI0LDEwIEBAIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjCiAgICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYg
Y29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFp
blJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29u
dmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFs
RGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPnRha2Uo
KSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBk
ZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQ
cmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJl
dmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRl
KHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwg
bV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgp
KSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAg
ICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lk
ZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNy4uZWE2MTVkZmY0ZGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7
CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBF
bGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFZpc2li
bGVTZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1w
bGVSYW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBp
ZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJp
bmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0
IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVu
dFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGggKi8pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzNy4uYWM1M2NiMTRiZjAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUGFn
ZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5k
ZXJFbGVtZW50KiBpbWFnCiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aW1hZ2UoKSA9PSAmSW1h
Z2U6Om51bGxJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhID0gaW1hZ2VSZW5kZXJlciA/IGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdl
UmVuZGVyZXIpLT5kYXRhKCkgOiAwOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBkYXRhID0gaW1hZ2VSZW5kZXJlciA/IGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlUmVu
ZGVyZXIpLT5kYXRhKCkgOiAwOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IGltYWdl
LT5pbWFnZSgpLT5kYXRhKCk7CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxp
emVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVu
dCogaW1hZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5k
KHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOwor
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUo
KSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJs
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQw
ODI1NDNkZC4uNzU4MzZiODc5MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFk
ZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJl
YWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisK
IH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwx
NSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxl
TG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0Zp
bGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7CiAgICAgZmlsZS5maWxlRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
bV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFk
U29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0
PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmls
ZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3Rk
OjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4MDZlODdkZjc5Li5mYzY2YzM2NWEy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaApAQCAt
NzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+
IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtDYWNoZSB7CiAgICAgICAgIFN0
cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICB9OwogICAg
IHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKICAg
ICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAxNTczMWViMjNmYTcuLjA3ZWQ0OGU1ODg0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlm
IChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKSkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW5kZXgsIHR5cGUsIG5hbWUoKSwgY29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCA3ZDI0N2RjZDFhMTYuLjM1NzYzZWUxMmEzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTIgKzYxLDEzIEBAIHR5cGVkZWYgc3RydWN0IEhX
TkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50
OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2ltcGxlUmFu
Z2U7CiAKQEAgLTE0NywxNiArMTQ4LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFC
dWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07
CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAg
IHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwg
dm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNz
IFBhc3RlYm9hcmQgewpAQCAtMjk2LDcgKzI5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlv
bmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkg
Y29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7
CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0Yy4uN2I0YjNkMzZhYTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBA
IC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp2
YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qg
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0
Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAK
LSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIp
KQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNv
cHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7
IH07CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3Jp
dGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGFk
ZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9OwogfQogCi12
b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0
ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyBX
VEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEo
KSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6
OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYo
KTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5
UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDExICsyNjUs
MTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmluZyhGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0
YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYg
IXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwo
KSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5k
ZXggMmJlODFkMjkzOGEzLi45N2ZmOTg1ZTI0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OCw3
ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBTdHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5n
IGN1c3RvbURhdGE7Ci0gICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZm
ZXI+PiBwbGF0Zm9ybURhdGE7CisgICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOwogICAgIH07CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpOwpAQCAtNjUsMTEgKzY2LDExIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBl
cnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3Ry
aW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdDsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAg
IHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIAogICAgIHZvaWQgY2xlYXIoKTsKQEAgLTgzLDcgKzg0LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZyhGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKT4mJikgY29uc3Q7Ci0gICAg
dm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+
JiBkYXRhKT4mJikgY29uc3Q7CisgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZl
cihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0
cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OwogICAg
IHZvaWQgZm9yRWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBkYXRhKT4mJikgY29uc3Q7CiAKICAgICBib29sIGhhc0RhdGEoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5k
ZXggMWMwNzI2ZmViM2UwLi5jNDFlMDg1MjQ0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSwxMCArMzEsMTEgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0
ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0
aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsK
IHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJG
b3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwor
ICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0
X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qg
c2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5k
ZXggM2Y0ODMyYTVhNjU4Li45ZTcyZTQ0YTJlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybUNvbnRl
bnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRkaW5n
RGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
KCkgY29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNS4uNzFkZmI5M2U1NzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0
IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q29sb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsK
IGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVi
b2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJk
VVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTg1LDcg
Kzg2LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAwIGlm
IHBhc3RlYm9hcmQgb3duZXJzaGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50NjRfdCBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwotICAg
IFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IHNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0
IFBhc3RlYm9hcmRVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNv
bnN0IENvbG9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcu
LmJmY2UxMWE4YmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmV2aWV3RXJyb3I7
CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEo
KSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOwor
ICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZl
cnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTgyLDE1ICs4MiwxMiBAQCB2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBwcm92aWRlci0+cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIo
KnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byBidWZmZXIp
IHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIGFwcGVuZEZyb21CdWZmZXIoKmJ1
ZmZlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpZEZhaWxVcGRhdGluZygpOworICAg
IHByb3ZpZGVyLT5wcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcigqdGhpcywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiYgYnVmZmVyKSB7Cisg
ICAgICAgIGFwcGVuZEZyb21CdWZmZXIoV1RGTW92ZShidWZmZXIpKTsKICAgICB9KTsKIH0KIAot
dm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3aGlsZSAoYnVmZmVyLnNp
emUoKSA+IG1fbGVuZ3RoQXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBuZXdEYXRhID0gYnVmZmVy
LmdldFNvbWVEYXRhKG1fbGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIyLDcgKzIxOSw3IEBAIHZvaWQg
UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYg
Y2xpZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0
aGlzKTsKIAogICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChj
bGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0
aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjM5LDcgKzIzNiw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6
cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVu
dC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CiAKLXZvaWQg
UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgeyBSZWYgeyAqdGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWMuLjkyMDJlZGRkOWUxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtNDEsMTUgKzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmll
dzsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNs
aWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKIHN0cnVjdCBQcmV2aWV3
UGxhdGZvcm1EZWxlZ2F0ZSA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRl
PiB7CiAgICAgdmlydHVhbCB+UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVE
aWRGaW5pc2hMb2FkaW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZhaWxX
aXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIH07CkBAIC03Miw3ICs3NCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBj
b25zdCBSZXNvdXJjZUVycm9yJiBwcmV2aWV3RXJyb3IoKSBjb25zdDsKLSAgICBjb25zdCBTaGFy
ZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgZmFpbGVkVXBkYXRpbmco
KTsKICAgICB2b2lkIGZpbmlzaFVwZGF0aW5nKCk7CkBAIC05NCw3ICs5Niw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc1BsYXRmb3JtUGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikg
Y29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQm
JiBjYWxsYmFjayk7Ci0gICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYpOwog
ICAgIHZvaWQgZGlkRmFpbENvbnZlcnRpbmdXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgIHZvaWQgZGlkRmFpbFVwZGF0aW5nKCk7CkBAIC0xMDYsNyArMTA4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgLy8gUHJldmlld1BsYXRmb3JtRGVsZWdhdGUKLSAgICB2b2lkIGRlbGVnYXRlRGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkZWxlZ2F0ZURp
ZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2
b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVE
aWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApAQCAtMTE4LDcg
KzEyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9Owog
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJl
dmlld0Vycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAg
IFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAppbmRleCAwNGVhMzY4MDY5MmIuLjlj
ZWU5MzMyMGIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7
CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQy
LDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0
cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXIm
IG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBu
ZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVy
LmgKaW5kZXggODI3ODYzOTNmY2VkLi5hYjcwMDRiZTkzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIg
OiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFs
IH5QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRl
ciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIo
UHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29y
ZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MS4uN2ZhZjY3N2Q3MjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM3LDYzICszNyw2OSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEs
IHNpemUpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIp
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsK
IH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBmaWxlRGF0YSkKLSAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCitSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCiB7Ci0gICAgbV9zZWdtZW50cy5h
cHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJiBwcm92aWRlcikKLSAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCitS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHsw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9
CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsKLSAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHZlY3RvcikpKTsKIH0KIAotI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQotICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCitGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworCitGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCisgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIp
fSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZmlsZURhdGEpKSB9KTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1h
cHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQorICAgIDog
bV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0g
TWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwot
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdT
dWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0
b3IpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVk
QnVmZmVyKSk7Cit9CisKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZSht
YXBwZWRCdWZmZXIuc2l6ZSgpKQoreworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKK30KKyNlbmRpZgorCitzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNpemUpOwpAQCAtMTAzLDMzICsxMDksMTkgQEAgc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnRWZWN0b3IKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZl
cjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRf
RU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRv
IHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5z
dGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUg
YWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29t
YmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5z
aXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAg
ICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWRE
YXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2Vn
bWVudHMuY2xlYXIoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6
ZSgpID09IDEpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKKyAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAotY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRv
T25lU2VnbWVudCgpOwotICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90
PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGE7CiAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CkBAIC0xMzks
NyArMTMxLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25z
dAogICAgIHJldHVybiBkYXRhOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0
YWtlRGF0YSgpCitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURh
dGEoKQogewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTE1NCwxMyArMTQ2LDEzIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRh
a2VEYXRhKCkKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi1TaGFyZWRCdWZmZXJEYXRh
VmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK1No
YXJlZEJ1ZmZlckRhdGFWaWV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNp
emVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5
KiBlbGVtZW50ID0gZ2V0U2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICByZXR1cm4g
eyBlbGVtZW50LT5zZWdtZW50LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBv
c2l0aW9uIH07CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSogU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBj
b25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBw
b3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7
CiAgICAgYXV0byBjb21wYXJhdG9yID0gW10oY29uc3Qgc2l6ZV90JiBwb3NpdGlvbiwgY29uc3Qg
RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSYgZW50cnkpIHsKQEAgLTE3MSw3ICsxNjMsNyBAQCBjb25z
dCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0
U2VnbWVudEZvclBvc2l0aW9uKAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1TdHJpbmcgU2hh
cmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CitTdHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKICAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewpAQCAtMTgxLDcg
KzE3Myw3IEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAorUmVmUHRyPEFycmF5
QnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFy
cmF5QnVmZmVyKSB7CkBAIC0yMDAsNjggKzE5Miw2MyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhcnJh
eUJ1ZmZlcjsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2Vn
bWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRz
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRz
KSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQo
eyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSAr
PSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3Vv
dXMpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRh
LCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXpl
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9
IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3ZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9
KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQor
dm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsK
ICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHko
KSBjb25zdAogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIpOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9
IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
c2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21l
bnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQu
YmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9u
ZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVs
ZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAg
cmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQotdm9pZCBTaGFy
ZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxj
b25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVu
dHM7CiAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMpCiAgICAgICAgIGFwcGx5KFNw
YW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7
CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRz
V2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYg
KHByZWZpeC5lbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4Myw3ICsyNzAsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CitW
ZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAg
IGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzEwLDEyICsyOTcsMTIgQEAgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogICAgIHJldHVybiBkYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvcHlUbyhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewog
ICAgIEFTU0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBpZiAob2Zmc2V0ID49
IHNpemUoKSkKQEAgLTM1MywxNCArMzQwLDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAg
ICB9CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKLXsKLSAg
ICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBl
bmQoKTsKLX0KLQogI2lmIEFTU0VSVF9FTkFCTEVECi1ib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJu
YWxseUNvbnNpc3RlbnQoKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppbnRl
cm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKSB7CkBAIC0zNzIsNDIgKzM1
MywxMyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAog
fQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoCi0gICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAg
ICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhf
dCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lm
IFVTRShHTElCKQotICAgICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVz
X2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgICAgIFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgot
ICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSgpKTsgfSwKLSAgICAgICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBz
dGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+
KG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KICNpZiAhVVNFKENGKQotdm9pZCBTaGFyZWRCdWZmZXI6
OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwg
c2l6ZSgpIH19OwotfQotCi1ib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVy
YXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAg
IGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NTYsNyArNDA4
LDExOCBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXIm
IG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigp
Cit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVu
dC0+c2l6ZSgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9
KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQorewor
ICAgIEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91
c0J1ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXpl
KCk7CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNl
Z21lbnQuY29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkK
KyAgICA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5
VXNlRmlsZU1hcHBpbmcpCit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZp
bGVNYXBwaW5nOjpZZXMpIHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBl
ZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFw
cGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
ZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25z
dAoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHsgeyBkYXRhKCksIHNpemUoKSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4g
RGF0YVNlZ21lbnQ6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEu
c2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7Cit9CisKKyNpZiBVU0UoQ0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdt
ZW50OjpjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisj
aWYgVVNFKEdMSUIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8
RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6
OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0
YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOwor
fQorCitjb25zdCB1aW50OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0
byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwK
KyNpZiBVU0UoQ0YpCisgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkp
OyB9LAorI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5
dGVzPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2Vu
ZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBl
ZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0
YSgpOyB9LAorI2VuZGlmCisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJv
dmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAg
ICk7CisgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30K
KworYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGE+KG1faW1tdXRhYmxlRGF0YSk7Cit9CisKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNv
bnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10o
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXpl
KCk7IH0sCkBAIC00NzUsNyArNTM4LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRh
YmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVu
dCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNp
emUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25X
aXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8g
KnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ4
OSwyMiArNTUyLDEyIEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiB7CiB9CiAKLXNpemVfdCBT
aGFyZWRCdWZmZXJEYXRhVmlldzo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsK
LX0KLQotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
OwotfQotCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxE
YXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEg
PSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBz
aXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJl
dHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggZjIzZjVkNjlhZDMyLi4xMTlmMzg0ZTU4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMjUgQEAgY2xhc3Mg
RGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8g
RGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNl
IGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3Ig
Y29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRh
U2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVk
RmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFw
cGVkRmlsZURhdGEpKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
IGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpOwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAg
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxO
U0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNl
bmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEo
KSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7
Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJik7CiAjZW5kaWYK
LQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5
dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRl
cz4mJik7CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiYpOwogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUg
ZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBu
b3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFu
ZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0
aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUu
Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFB
c0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0K
LSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxs
IHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIg
aXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAg
ICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIn
cyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNl
Z21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYp
OwogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
IHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVh
cigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4
X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXIm
Jik7CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1t
dXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAg
ICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNl
Z21lbnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90
IHNpemUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAg
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25z
dDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNp
ZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVu
dChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYg
ZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7
IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlk
ZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAot
ICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWlu
dDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAg
ICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRl
ciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
cHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wgY29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0
YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhf
dD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikK
LSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdC
eXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+LAogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQotICAgICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAg
ICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorICAgICAg
ICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRh
YmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKKyAgICBm
cmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCit9OworCitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAotICAgICAg
ICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdM
SUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYK
KwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1t
dXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsZW5ndGgpIGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9p
ZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZl
IChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8
dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIg
YW5kIGNvcGllcyB0aGlzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0
CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGlu
dG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFz
aXplKCk7IH0KKyAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGln
dW91czsgfQogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dp
dGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAg
dXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAg
c2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNzUgKzE4OSwxOTcgQEAgcHVibGljOgogICAg
IHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnks
IDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0g
ICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNPbmVTZWdtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsgfQogCiAgICAgLy8gYmVnaW4g
YW5kIGVuZCB0YWtlIE8oMSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBT
aGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVf
dCBwb3NpdGlvbikgY29uc3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQg
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVy
biAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKIAotcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYpOworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRC
dWZmZXI7CisKKyAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9j
b250aWd1b3VzIHsgZmFsc2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoKTsKKyAgICBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4
cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7IGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJl
Zik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihD
RkRhdGFSZWYpOwogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXIm
KTsKICNlbmRpZgorICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJ
bnRvT25lU2VnbWVudCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8
dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFs
bCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRl
ciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0
YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorICAgIC8vIENvbWJpbmVz
IGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBh
ZnRlciBjbGVhcmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZl
Y3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0
OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0g
ICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VO
QUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlm
CiB9OwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEo
KQorLy8gQSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgYWxs
b3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVs
YXRlZCBtZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgewor
ICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3Rl
eHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92
PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZp
bGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGlu
Zzo6WWVzKTsKKworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNv
bnN0OworI2VuZGlmCisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxH
Qnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZl
cmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisg
ICAgICAgIGlmICghYnVmZmVyIHx8IChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlz
Q29udGlndW91cygpKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIp
OworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50
IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBv
bmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXIt
PmlzQ29udGlndW91cygpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92
ZShidWZmZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1
ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lk
IGFwcGVuZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOwor
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051
bGwoKTsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNF
bXB0eSgpIDogdHJ1ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1
ZmZlciA9IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0
KCk7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+Y29weSgpIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0K
KyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBl
bnN1cmVCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAg
ICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7Cit9OworCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCiAgICAg
ICAgIHJldHVybiB0YWtlRGF0YSgpOwogICAgIHJldHVybiBjb3B5RGF0YSgpOwogfQogCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CitjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKLSAgICBTaGFyZWRC
dWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXpl
KTsKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXpl
KTsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNv
bnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
OwogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5T
RGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBt
X3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAg
IGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGNkYjZlNzAzNDA0ZC4uOWQwNTVj
ZTI3ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmIEVOQUJMRShNSFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNl
cGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRl
cihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2Vw
YXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwg
bV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JD
dXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0
YSgpIDogbnVsbHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMK
IHsKIH0KIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3Vy
cmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkp
CiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1f
aXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZm
ZWU1ODJjLi4xYzY0MDhkNGM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25z
dCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIo
U2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBz
ZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3Io
Y29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciop
OwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4
X3Q+Jiwgc2l6ZV90KTsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5k
OworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9p
dGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAg
ICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2Vn
bWVudEluZGV4IHsgMCB9OwogICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIy
ZDdhNTUwZDQ2MC4uYTRiNGJiMTA0YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFN0YXRpY1Bhc3RlYm9h
cmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgdmFsdWUpOwogfQogCi12b2lkIFN0
YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBt
X25vbkRlZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUpOwogICAgIG1fY3VzdG9tRGF0YS53cml0ZURh
dGEodHlwZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmgKaW5kZXggYzA5YjZkZTMxZjJlLi5lZGQ3MTM2MjNmMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGlj
IFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAog
ICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRh
dGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEp
OwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYg
dHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9O
b3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaAppbmRleCA2ODc5NTkwMGM1YWQuLjFkNjViYzQwM2FkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAg
IFN0cmluZyBzcmM7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VE
YXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYg
b3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNjcsNyArNjcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IE5vd1BsYXlp
bmdJbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpbWFnZURhdGEpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxLi43ZjA0OTYwYzU5NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNh
dGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAg
IH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3
b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5m
by5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0
d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0
KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdl
dCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFS
ZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29y
ay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3Jr
SWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhh
c2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxLi44MTllMjZmYTRjZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgYXBwZW5kKGRhdGEpOwog
fQpAQCAtNDMsMjQgKzQzLDIwIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJl
ZiBkYXRhKQogI2lmICFVU0UoRk9VTkRBVElPTikKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0u
c2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAg
ICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0
ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAg
ICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2Vn
bWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYK
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEp
CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKENGRGF0YVJlZiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihkYXRhKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVk
U29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9zZWdt
ZW50cykgewogICAgICAgICBpZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKQEAgLTcw
LDkgKzY2LDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkg
Y29uc3QKICAgICB9CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRh
dGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGlm
IChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDA3OTdkZmJlOGQwMS4uY2JlODc3MWE0
NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0MjkwZGIxMjhkMDAuLjJlZjI3
MDFmZTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBA
QCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEo
KQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNl
bWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2IzODNmNC4uNjc5YWU5MzI5NTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQppbmRleCBiNDYxZjk3NTM2ZGUuLjFjOTYwNDcxNmI0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRl
clN0YXRlKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25z
dAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGMuLmI4
MTcwODE3Y2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVU
eXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8v
IE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNu
J3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlu
bGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9h
cmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJv
YXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxT
dHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAj
aWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9Q
TkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNv
bnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRo
RGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRh
ICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVU
eXBlKCkgcHJvcGVydGllczpAeyB9XTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cG5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
aGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OS4uMjVmMzExZjI1ODliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpA
QCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAog
QGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6
KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihj
b25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0
IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9z
aXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9p
ZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2Vi
Q29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0
aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtODgsMTMgKzg4LDE0IEBAIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShOU0RhdGEgKmRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRhdGEpKSk7CiB9CiAK
LXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250
aWd1b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIApAQCAt
MTA1LDEwICsxMDYsOCBAQCBSZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAo
IW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUo
bnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAx
KTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVO
U0RhdGEoKSk7CiB9CiAKQEAgLTExOSwxNCArMTE4LDE0IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdtZW50cywgW10gKGF1dG8mIHNlZ21lbnQpIHsKICAgICAg
ICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgfSk7CiB9CiAK
LVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0
YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFs
bG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZS5oCmluZGV4IGZiYzI4M2ZiYzMzNi4uMmRlNDE5MzRkYTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBD
RE1JbnN0YW5jZVNlc3Npb247CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKIApA
QCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDRE1JbnN0YW5jZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUlu
c3RhbmNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CiB9OwogCiAvLyBKYXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3Qg
YmUgdXNlZCBmcm9tIHRoZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJz
aXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRy
PENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNz
aW9uLmgKaW5kZXggMzdjZDA3YzdiZjJkLi5kMjU5MjI1YmE5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vz
c2lvbi5oCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0
dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0
ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3Rh
dHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4s
IEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0
dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyAr
NzgsMTMgQEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5n
IExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7Cisg
ICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Ym9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0g
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVz
c2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVz
aW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVz
VmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhw
aXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAog
ICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5v
bmUsCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
KSA9IDA7CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6
b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2QuLjUyYTYxNDhjODNjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApA
QCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRBbmRJbml0aWFs
aXplKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKIAogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJveHkuY3BwCmluZGV4IGYyMThmOTc5MDRmYi4uNGJhNzViZjAwZDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBA
IC0yMjcsNyArMjI3LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgS2V5
U3RvcmU6OmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCkgY29uc3QKICAgICBDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3I7CiAgICAga2V5U3RhdHVz
VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtS2V5cygpKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGtleSA6IG1fa2V5cykKLSAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFw
cGVuZChzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOworICAg
ICAgICBrZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+
aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOwogICAgIHJldHVybiBrZXlTdGF0
dXNWZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcm94eS5oCmluZGV4IGE1ODRiNmNkMjY2Yi4uZTFlMDk4YTFkNWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAg
LTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFs
dWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXpl
KCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5z
aXplKCkpOyB9CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVl
VmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlLi5mY2E2ZjIzODhh
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJz
ZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0
IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZl
ci5zaXplKCk7CkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNP
Tk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmlu
ZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAg
ICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKaW5kZXggNzRmNTE1YjBiZDJhLi5mY2Y1YmRkYTdjNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBu
YW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09O
T2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VK
U09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4Yy4uMzFhOWZkZmEwMmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGlj
IGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09O
OjpPYmplY3QmIHJvb3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBL
ZXlJZHMgY291bnQgYW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERh
dGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RL
ZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9j
YXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAw
KTsKIApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYg
KGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBh
dXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRh
ID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91
c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEu
c2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9
IDA7CkBAIC0xODgsMTUgKzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAv
LyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEg
dmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKGluaXREYXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJ
ZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGlj
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
a2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0
YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5
ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGlu
aXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwg
IWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRh
a2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250
aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRh
dGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6
OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQK
IAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAg
ICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAg
IGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAg
IHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25E
YXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hl
Y2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0
YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5
SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEy
ICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJN
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlz
IGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8g
ImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBh
cnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250
YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsK
KyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0
RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAg
b2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3Ry
aW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRz
LT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJu
IGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVu
Z3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJL
ZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZl
ciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVz
OjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RN
UHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVBy
aXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVm
ZmVyIGFzIGFuIEpTT04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05P
YmplY3QocmVzcG9uc2UpKQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVh
cktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyCiAgICAgY2FsbGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFy
S2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNh
dGUuCiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RN
SW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7
CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJf
dCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUs
NyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25s
eSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJv
Y2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAg
ICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0
ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1
Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFj
a10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2Vzcykg
ewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdU
Rk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2UKICAgICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2Vu
dGluZyByZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vu
c2UgcmVsZWFzZScgZm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3Ig
PSBtX2tleVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVs
ZWFzZWQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1
Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3Jl
YXRpbmcgYSAna2lkcycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5
IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24u
CkBAIC01OTMsMTQgKzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojpy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAg
ICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAg
IH0KIAotICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBv
YmplY3QuCisgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9i
amVjdC0+dG9KU09OU3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBt
ZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAg
IH0KIAogICAgIG1fa2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFj
ayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwg
U3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShr
ZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBT
dWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4Li45ZTI3ZmU5MTJjNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuaApAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2Fk
QW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5h
bDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBT
dHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAg
IC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlw
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0K
ICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBj
b25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgog
ICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVu
dCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApp
bmRleCBlOTY4ZTk4NWM3ZWUuLmVjZjRlMDhjOWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTMzLDcgKzMz
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZEVuY29kZXJHZW5lcmljIGZp
bmFsIDogcHVibGljIEtleWVkRW5jb2RlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGMu
LjkzN2QxZmI2ZjBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1No
YXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQog
ewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRl
cyk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQ
dHI8R0J5dGVzPihieXRlcykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0
ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmMuLmRjMWZiMTZlYTBiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtNTksNyArNTksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250RGVzY3JpcHRp
b247CiBjbGFzcyBHbHlwaFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFh
MmQyZjg1Li5mYmJjY2M0MzY4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNl
IElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2Ny
aXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1
YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNo
YW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNlYjY0
OTUzLi5lMzJhMzZjNjA3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNv
ZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5Li42NTVk
ZmU3M2NmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAt
NzAsNyArNzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFBvaW50Owog
Y2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBMZW5ndGg7CiAKIC8v
IFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJv
eXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4K
QEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPElu
dFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdmly
dHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gSW1hZ2VP
cmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0
YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoYm9vbCAvKmFs
bERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsgfQog
CiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8g
bnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSkg
PSAwOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VE
YXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJ
bWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0K
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsK
ICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggNGRkYjZkZjgz
ZWNiLi5kZTMzZjFhZjQxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6
ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3Bp
eGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3Qq
PihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1f
ZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYg
IWlzT3ZlclNpemUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBv
dGhlci5tX3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAg
IG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIFBhY2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMy
X3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIElu
dFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJl
IGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEwMDg4
Li43YzU0OTQ3ZjRkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6
Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdl
RGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNv
ZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1l
VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVkLi42YThmZmNiNjBmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0zNywxMiArMzcsMTIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1h
Z2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgewpAQCAt
OTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHVzaW5n
IFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVkaWFUeXBlKT47CiAgICAg
dXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsK
LSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdl
RGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVu
YyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
PjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAgICAgU3VwcG9ydHNN
ZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUo
bG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZDgxYzQ4MDE5Mjg0Li4z
MDc3NDMzMTVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJj
ZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9CiAK
LWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBk
YXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFi
bGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1hZ2VT
b3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAg
IGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0
RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVz
ZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7
CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERh
dGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNo
YW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRh
dGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
CmluZGV4IDhhZjUwODBhMDBhOS4uODE0ZjBlMTJlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJbWFnZVNvdXJjZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJj
ZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5h
dGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBy
ZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFT
dGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2ln
bmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0
LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZp
cnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlw
ZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJv
b2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wg
ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAg
ICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQog
ICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhj
bHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2Rl
ZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4
IDNlNTllYTlkMDhkZC4uNTc3YmQ1MDhhNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwg
U3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUp
LCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZN
b3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1f
dXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CmluZGV4IDA2NTgxMzM3OWYxMS4uZTZiZGUxNjZmOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxN
b2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB+TW9kZWwoKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmlu
ZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcs
IFVSTCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWlt
ZVR5cGU7CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1v
ZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAg
ZW5jb2RlciA8PCBtX3VybDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggNzQ1
OWM1ODU4ZDI0Li44ODY5MWRjMjU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBA
IC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNp
Z25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBz
aG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVk
QnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ug
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAg
IHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9y
bSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZv
cm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2
b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Li44YjA0Zjli
ZTk2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAt
ODYsMTIgKzg2LDEyIEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5m
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNP
TiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIK
ICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRp
YyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzaW5mQXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAq
c2luZkFycmF5KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQog
CiB1c2luZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVj
dG9yPHVpbnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVB
bmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVt
ZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNp
bmZEYXRhKGJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAs
OSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21T
aW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4g
a2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsK
ICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIp
OwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcg
QEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2lu
Zihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZv
cm1hdAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNp
bmYoY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNr
ZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhl
IGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4g
a2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsK
ICAgICBrZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9
CkBAIC0zOTMsNyArMzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29s
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXRE
YXRhKSBjb25zdAogewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5p
dERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJv
b2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmgKaW5kZXggYmM5M2Y2ZjZhN2JkLi4zMTdiYjhkNTdlODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC03MSwxNyArNzEsMTcgQEAgcHVibGljOgogICAg
IHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vy
dmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihj
b25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
U2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1Nr
ZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlT
dHJlYW1pbmdTY2hlbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IDE1OWI5MGNk
YjQ4Zi4uNTZiNThjMjVhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg0LDcgKzg0
LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFt
aW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxv
d1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNl
U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQ
dHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1Ymxp
YzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlVVJM
LmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1
cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBzZXJ2ZXJD
ZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0K
KyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNz
aW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJl
cXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOworICAg
IFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RG
b3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlTZXNz
aW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtl
eVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBv
dXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChi
b29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZv
ckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAgIHVz
aW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEtleXMgPSBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5cyYp
IGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyog
c2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVz
dChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0
ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZXRhaW5Q
dHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJDb3Jl
RlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwog
ICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlm
MmFhMzM1ZGI5Li5iYTUwNjFlYmI1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0y
MTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1
cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVz
dCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRh
Rm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVx
dWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyAr
MjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgp
OwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0
aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0
aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBl
Y3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJl
cXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAq
cmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1h
cCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNP
TlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0
IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZl
ci5zaXplKCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4g
cGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCBy
ZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpz
b24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwog
fQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJh
Y2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJD
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwog
ICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAg
LTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtl
eUlEcygpOwotICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5k
TWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBp
ZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5n
KFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAg
ICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5
cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAg
ICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERF
QlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBc
IiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDksMTIg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFs
aXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5p
dERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5p
dERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAg
ICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6
aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RS
RUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXRE
YXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7Cisg
ICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0
aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6
QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5n
UHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0Vx
dWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRp
YyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAg
c3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0g
dmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3Bv
bnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUg
PSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3Jl
YXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAg
ICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRp
bmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VV
UkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91
bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmco
WyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJ
RHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJ
RHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQu
Z2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAg
ICAgICAgICAgICB9KTsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAg
ICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAg
ICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25z
ZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkg
cHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNs
YXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VE
YXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3Vy
cmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVz
cG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNw
b25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8g
RklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNh
bGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJh
Y2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAg
ICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElk
ZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFn
ZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNz
aW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hh
bmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BB
TDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVw
b3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9y
eUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3Qp
OwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMu
Zmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAg
ICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6
YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5n
ZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICpl
cnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBA
IC0xMTUzLDkgKzExNTMsOSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBt
X2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcg
UmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0
YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpw
YWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsK
ICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1
bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMg
UmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJl
dGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBh
dXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNl
dFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJ
RC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2
NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5z
aXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRF
bmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkp
OwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwog
ICAgICAgICB9CkBAIC0xMjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQog
ICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3Qu
dmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JS
ZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsK
KyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5n
Q29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElk
ZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhh
bmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRv
ciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERh
dGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVl
c3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYg
KGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAg
ICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVx
dWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVy
ID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5n
Q29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElk
ZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhh
bmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJy
b3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIo
Y29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNy4uNjJiODNmYmZkNTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3
IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNv
ZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAg
ICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsK
IApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPElt
YWdlRGVjb2Rlcjo6RnJhbWVJbmZvPiBmcmFtZUluZm9zKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdl
RGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBB
VkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7CiAgICAgdm9pZCByZWFkU2FtcGxlcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXgg
MDY5NTE2YTA4M2Q1Li4zNWM2Y2U2N2U4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIEltYWdlRGVjb2RlckFW
Rk9iakNTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFnbWEgbWFyayAtIElt
YWdlRGVjb2RlckFWRk9iakMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVj
b2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpD
PiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IC8vIEFWRm91bmRhdGlvbiBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlm
ICghQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0z
MDEsNyArMzAxLDcgQEAgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFW
Rk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZURlY29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyQVZGT2JqQzo6
SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWlt
ZVR5cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpA
QCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRl
cihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24o
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2Fk
ZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAg
ICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9h
ZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxf
cXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0
IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25I
YW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02
NDEsOSArNjQxLDkgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgp
LmV4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIElt
YWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2Fk
ZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFS
ZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAg
aWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAyMDBlMWE4ZjlhZmIuLmM5ZDliMmE5Njg1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xh
c3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xv
Y2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0
dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVz
dGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsK
ICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5
aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUuLmIxYzYwNzljNjQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RN
SW5zdGFuYwogICAgIGlmICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5jZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9u
Rm9yS2V5SURzKFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKKyAg
ICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMo
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKICAg
ICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYw
YWZkY2EyMTQuLjRkZDZiOTFhOTQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdz
IGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVm
ZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwor
ICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVu
ZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0
YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNj
b250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjQuLjc1NGIxZTJlZWMw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xh
c3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGlj
OgpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNi4uMGVmZWVhZWY1YjJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsK
ICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCmluZGV4IGEyMmE5OTdiMTEwNy4uZjkyMWYzZGEwZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNTYsMTQgKzE1
NiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9p
ZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVu
c2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxv
YWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJy
b3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1N
ZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpj
cmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjExLDEz
ICsyMTEsMTAgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hl
ZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgp
KTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTM4OCw3ICszODUsNyBA
QCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9w
TG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJl
cXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAo
IWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgx
ZDNlZS4uOTQxOWJjZWEzOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
MSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVh
dGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRW
YXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWYuLmI2
ZDNlYjM2MzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc2l6ZV90IHNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9m
Zl90IHBvc2l0aW9uLAogCiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKIHsK
LSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZl
cio+KGluZm8pOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0
YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaGFyZWRCdWZm
ZXItPmRlcmVmKCk7CiB9CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNH
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49
IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhE
YXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAg
ICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7
CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NH
SW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NjIsMjMgKzU2MiwyNCBAQCBQbGF0
Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdl
IDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVm
ZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIn
cyBrbm93bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3Jh
cCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQg
SW1hZ2VJTyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNy
ZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIC8vIE9uIE1hYyB0aGUg
TlNEYXRhIGluc2lkZSB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkg
YXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRn
ZS4KKyAgICAvLyBXZSB1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3Jh
cCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQg
SW1hZ2VJTyBpcworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgorICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQo
KSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJl
Y2VpdmVkKTsKICNlbHNlCi0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0
aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7Ci0gICAgLy8gV2UgdXNlIHRoZSBHZXRC
eXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9u
ZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRv
IHdyYXAgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgYXV0byBjb250aWd1b3VzRGF0
YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYo
KTsKKyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIg
dGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBv
aW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMg
YSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAg
IENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAw
LCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2Ug
fTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlk
ZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEu
cHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291
cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVy
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA5NzQwNzM2
YTIxYWMuLmEwYWMxYzJmYmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdlRGVj
b2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2VE
ZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAgICBz
dGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEsIGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTY0LDcg
KzY0LDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBp
c0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2
ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYi4uZmY3N2I1M2U5ZDY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVz
dHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVh
dGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1l
bnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVy
LmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5
ZWRiNDE1ZmQzLi5kZTZkZWJlMmJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0zNjUsOSArMzY1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a1dvdWxkQmxvY2spOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2Vn
bWVudCh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCisgICAgc3RhdGljIHZvaWQgRnJlZVNo
YXJlZEJ1ZmZlcih2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBh
dXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQq
PihyZWZjb24pOworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJl
ZEJ1ZmZlcio+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKQEAg
LTQwOCwxMSArNDA4LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGxhc3RSZWFkID0gcmVh
ZFJlc3VsdC52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsK
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZl
ci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250
YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFy
ZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdl
IG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAgICAg
ICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVm
ZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/
Ci0gICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2lu
KCktPnNlZ21lbnQ7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxz
aXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudCk7CisgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXpl
X3Q+KG51bVRvUmVhZCwgc2hhcmVkQnVmZmVyLT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudCk7CiAgICAgICAgICAgICAgICAgLy8gRnJvbSBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tT
b3VyY2UgZG9jdW1lbnRhdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgZm9yIDY0
LWJpdCBhcmNoaXRlY3R1cmVzLCB0aGlzIHN0cnVjdCBjb250YWlucyBtaXNhbGlnbmVkIGZ1bmN0
aW9uIHBvaW50ZXJzLgogICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIGxpbmstdGltZSBpc3N1
ZXMsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgY2xpZW50cyBmaWxsIENNQmxvY2tCdWZmZXJDdXN0
b21CbG9ja1NvdXJjZSdzIGZ1bmN0aW9uIHBvaW50ZXIgZmllbGRzCkBAIC00MjAsMTAgKzQxNywx
MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291
cmNlIGFsbG9jYXRvcjsKICAgICAgICAgICAgICAgICBhbGxvY2F0b3IudmVyc2lvbiA9IDA7CiAg
ICAgICAgICAgICAgICAgYWxsb2NhdG9yLkFsbG9jYXRlQmxvY2sgPSBudWxscHRyOwotICAgICAg
ICAgICAgICAgIGFsbG9jYXRvci5GcmVlQmxvY2sgPSBGcmVlRGF0YVNlZ21lbnQ7Ci0gICAgICAg
ICAgICAgICAgYWxsb2NhdG9yLnJlZkNvbiA9IGZpcnN0U2VnbWVudC5wdHIoKTsKLSAgICAgICAg
ICAgICAgICBmaXJzdFNlZ21lbnQtPnJlZigpOwotICAgICAgICAgICAgICAgIGF1dG8gZXJyID0g
UEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19j
YXN0PHZvaWQqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihmaXJzdFNlZ21lbnQtPmRhdGEoKSkpLCBm
aXJzdFNlZ21lbnQtPnNpemUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhp
blNlZ21lbnQsIGNhblJlYWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICAgICAg
YWxsb2NhdG9yLkZyZWVCbG9jayA9IEZyZWVTaGFyZWRCdWZmZXI7CisgICAgICAgICAgICAgICAg
YWxsb2NhdG9yLnJlZkNvbiA9IHNoYXJlZEJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgICAgICBz
aGFyZWRCdWZmZXItPnJlZigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJs
b2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZvaWQq
Pihjb25zdF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRCdWZmZXItPmRhdGEoKSkpLCBzaGFyZWRCdWZm
ZXItPnNpemUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQs
IGNhblJlYWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGVyciAh
PSBrQ01CbG9ja0J1ZmZlck5vRXJyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CiAgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSBj
YW5SZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRl
eCA0MDI1ZTA2OTJkYzUuLmJhNjA1ZGNiMzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTczNyw3ICs3MzcsNyBAQCBEaWRDaGFuZ2VJdGVtQnVm
ZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJP
ZkJ5dGVzKQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0
ZW1wb3JhcnlJdGVtKQogewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3JpdGlu
Z0NsaWVudC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkgewog
ICAgICAgICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZM
aW5lKHRlbXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzLi5iMzFi
YzVmZDRlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAg
LTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZM
aW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAt
MTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBlYWNo
IGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCiAg
ICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVpcmVz
IGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAvLyBp
dGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVmZmVy
IGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3aWxs
IGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjb250
YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVkIGRh
dGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0byBl
bnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUgYWxp
Z25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQKICAg
ICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB3
aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTUu
LjJiNDQzZmJiZWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgdm9pZCByZWxlYXNlQ3VzdG9tRm9udERhdGEodm9pZCogZGF0YSkKIHsKLSAgICBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2Fz
dDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHN0YXRpYyBj
YWlyb191c2VyX2RhdGFfa2V5X3QgZnJlZVR5cGVGYWNlS2V5OwogCi1Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICA6IG1fZm9udEZhY2UoYWRvcHRSZWYoY2Fpcm9fZnRfZm9udF9mYWNlX2NyZWF0
ZV9mb3JfZnRfZmFjZShmcmVlVHlwZUZhY2UsIEZUX0xPQURfREVGQVVMVCkpKQogewogICAgIGJ1
ZmZlci5yZWYoKTsgLy8gVGhpcyBpcyBiYWxhbmNlZCBieSB0aGUgYnVmZmVyLT5kZXJlZigpIGlu
IHJlbGVhc2VDdXN0b21Gb250RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKaW5kZXggOWFkMTliODc2YjI3Li5kZmJjNTgwZmI4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC04MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogICAgIHJldHVybiAoSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJlZlB0
cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKIHsKICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0xOTksNyArMTk5LDcgQEAgUGxhdGZv
cm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CkBAIC00MjYsMTAgKzQy
NiwxMSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVj
b2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0
YXR1czo6VW5rbm93bjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNv
ZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0
ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBz
aXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
IkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEs
IHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlw
ZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDY2
ZjMzNzI4NDZhNC4uZDNlZjZhNDVjZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5h
bCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVh
dGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfklt
YWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6
VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vv
czsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAg
LTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBs
ZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1Li5iMzI0Y2YxMTQ2
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC0zNjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAg
IEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBl
dmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgp
LmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAg
ICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6
ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1f
cGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29u
dGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAppbmRleCA1ZDg2ZmIxYWY0ODcuLjkzMDE5MDk5NDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5
Q2hlY2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3Vs
ZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJl
YW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBX
ZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJv
eHlDbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyLi4zNDliZmRjYWFkNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAg
cHVibGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+
Q0RNUHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNv
bnNpc3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBh
IGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAg
ICAvLyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXBy
ZXNlbnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3Rl
IFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhh
dCBzb21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2lu
Y2UKICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1h
aW50YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdv
cmssIGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAg
Ly8gaXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBz
dHJ1Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4
IDJlZmEwNDM2MGU4OC4uYzM4OTE2ZTdkMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAK
QEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlVGh1bmRl
cjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVUaHVuZGVyOjpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUg
dGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRz
IikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtMjM3LDcg
KzIzNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNw
b25zZS5jb3B5KCk7CiB9CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5k
ZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmEKICAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1bmRl
cjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmlj
YXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgT3BlbkNETUVycm9yIGVy
cm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0
ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAg
ICAgICBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RN
SW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xh
c3MgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNl
TWVzc2FnZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNlZFJl
c3BvbnNlTWVzc2FnZShjb25zdCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM1NCw4ICszNTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KICAgICBib29sIGhhc1BheWxvYWQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BheWxvYWQpOyB9Ci0gICAgY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2Fk
KTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBh
eWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsg
fQorICAgIGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0
JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9h
ZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQogICAgIGJvb2wgaGFzVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZS5oYXNfdmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVz
c2FnZVR5cGUgdHlwZSgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSk7IHJldHVybiBtX3R5cGUudmFs
dWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNvcmU6
Ok1lZGlhS2V5TWVzc2FnZVR5cGUgYWx0ZXJuYXRlKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPyBt
X3R5cGUudmFsdWUoKSA6IGFsdGVybmF0ZTsgfQpAQCAtMzY0LDExICszNjQsMTEgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKICAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+IG1fdHlwZTsKIH07CiAKLXZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNo
YWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNz
YWdlKGJ1ZmZlcik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3NhZ2UpIHsKQEAgLTQ3NSw3
ICs0NzUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25l
Q2FsbGJhY2soKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJy
b3JDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewog
ICAgIEdTVF9FUlJPUigiQ0RNIGVycm9yIik7CiAgICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAi
LCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CkBAIC00ODgsNyArNDg4LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFy
KCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCiAgICAgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0
YSgpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVy
U2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewog
ICAgICAgICBHU1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRh
LnBheWxvYWQoKTsKICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwg
eyB9LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxNSw3ICs1
MTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAgICAgYXV0byBnZW5lcmF0ZUNoYWxs
ZW5nZSA9IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAg
ICAgICAgaWYgKG1fc2Vzc2lvbklELmlzRW1wdHkoKSkgewogICAgICAgICAgICAgR1NUX0VSUk9S
KCJjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24gaWQiKTsKICAgICAgICAgICAgIGNhbGxiYWNrKGlu
aXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7CkBAIC01NDUsMTMg
KzU0NSwxMyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnNlc3Npb25GYWlsdXJl
KCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQg
PT0gbV9zZXNzaW9uSUQpOwogCiAgICAgR1NUX1RSQUNFKCJVcGRhdGluZyBzZXNzaW9uICVzIiwg
c2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNr
cy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2Vz
cywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAg
IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNl
TWVzc2FnZSkKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAg
ICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
cmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VN
ZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1Bh
eWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
ID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBh
cnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1Rf
REVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1l
c3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JRAogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0g
bV9zZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3Ro
aXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNo
YW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
TWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAg
LTU5Nyw3ICs1OTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAg
IFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNz
YWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAg
ICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewot
ICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShw
YXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBt
ZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5
TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklELCBMaWNlbgogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nlc3Np
b25JRCA9PSBzZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBl
bmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5n
ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShi
b29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNj
ZXNzKSB7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbgogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9u
c2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVk
QnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3Nh
Z2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAg
ICAgICAgICAgICBHU1RfREVCVUcoInNlc3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGgg
JXp1IiwgbV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0
dXM6OlJlbGVhc2VkKSwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQp
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IGNk
ZDhkYTIxMTIzYy4uMTAyMGUxNTMyMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMs
OCArOTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwog
ICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFs
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAog
cHJpdmF0ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UK
ICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFs
bG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJs
aWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsK
IAotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpA
QCAtMTQxLDE0ICsxNDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRo
dW5kZXIqIGNkbUluc3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0
aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChib29sLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNo
YW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFj
ayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVk
Q2FsbGJhY2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygp
OwotICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2
b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAg
IENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBj
b25zdDsKICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBw
cml2YXRlOgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxs
YmFja3MgbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1T
ZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBt
X25lZWRzSW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VH
ZW5lcmF0ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Np
b25DaGFuZ2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Li5l
YTg5MGY2N2RhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBh
cnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBt
YXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1
cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0
RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2Vk
UGF5bG9hZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1
bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVm
NDA5Li4yN2RkNGVhZTBkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaApAQCAtMzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtp
dF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkK
LSAgICAgICAgOiBtX3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5p
dERhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51
bSBmb3Igc3lzdGVtIHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEo
Y29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0
OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVk
aWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VS
Uk9SLCBudWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9Ci0gICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERh
dGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9h
ZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpKSkKKyAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICB9CiAKLSAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlk
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCisgICAgSW5pdERhdGEoY29uc3QgU3Ry
aW5nJiBzeXN0ZW1JZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkK
ICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRy
YWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBh
eWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1f
cGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03Miwx
MCArNzUsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28g
YmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1J
ZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAg
ICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAg
ICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF5bG9hZDsgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0
ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENv
bnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTg2LDExICs4OSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVk
ZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lz
dGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50
cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWMuLjY5MjhhNjNl
OTcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVz
Y3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRU
YWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFj
Lm1tCmluZGV4IDgzZTZhZjdiMDM4OS4uNjhiY2M4ODQ2YThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9w
dE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRv
Y3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1
dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAw
OWMxYzQ1YzQ1OTMuLmZhMDAwODExNjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBA
IC0zNSw5ICszNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFu
VVNob3J0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZv
bnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBFT1RIZWFkZXIgewogICAgIEVPVEhlYWRlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNi4uMGZhOGYz
MDZhZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0zODEsNyAr
MzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxv
YWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8
dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVh
VGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZh
bGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJz
dC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2Fs
IGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5U
eXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6
VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0
byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7
CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0
ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAg
ICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhN
YXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcx
OWEuLjBkYjRhZmFkYjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcg
QEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0Li4wOGZjOWYxOWVhZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9u
dCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRp
bmdzOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdz
PGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4
IDYyOWUwZTYxYTEwNC4uNzczNTczOWI5MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
QEAgLTI3Miw3ICsyNzIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJE
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBi
aXRtYXA7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0
MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKaW5kZXggNGY0NzI1ODZiNDI0Li5jMjM2NWZkNzQ0YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRp
cmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+
IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJl
Y3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2Li4yZDk3MjcwYTcz
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
V2luLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAv
LyBUaGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBmcm9tIFdlYktpdAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1
ZmZlcihjb25zdCBjaGFyKik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuY3BwCmluZGV4IGQ5NTZkOWU3NjI1ZC4uMzNjOTVlYzMzMzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVm
ZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZm
ZXImIHNoYXJlZEJ1ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihj
aGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVkID0g
MDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAgLTEz
NSw3ICsxMzUsNyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAK
IH0KIAotUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6
Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRy
PFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRv
IHdpdDogIlJJRkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0
U2lnbmF0dXJlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYS4u
OWM0MDU1NzgyNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEg
c3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBi
ZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxT
Y2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03
MCwxNiArNzAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisg
ICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgp
KSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2Vn
bWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAg
ICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9Cisg
ICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29u
dGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9l
bmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewog
ICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAg
ICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVi
bGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
bG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlB
bHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMuLjI2
Zjg4NjQ5NmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcApAQCAtNDEsNyArNDEs
NyBAQCBBVklGSW1hZ2VSZWFkZXI6OkFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVj
b2Rlcj4mJiBkZWNvZGVyKQogCiBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1hZ2VSZWFkZXIoKSA9
IGRlZmF1bHQ7CiAKLWJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wg
QVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2
aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNl
aXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAg
Ym9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklG
SW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGEpCit2b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgs
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCiB7CiAgICAgaWYgKG1fZGVjb2Rlci0+ZmFpbGVk
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCmluZGV4IGNiY2Ew
YjhjMTI0Yi4uNDk2ZjY5ZjgxMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKQEAgLTM5
LDggKzM5LDggQEAgcHVibGljOgogICAgIEFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdl
RGVjb2Rlcj4mJik7CiAgICAgfkFWSUZJbWFnZVJlYWRlcigpOwogCi0gICAgYm9vbCBwYXJzZUhl
YWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwotICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJvb2wg
cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgs
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYpOwogICAgIHNpemVfdCBpbWFnZUNvdW50KCkgY29uc3Q7CiAgICAgZG91
YmxlIHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3Bw
CmluZGV4IDcyNzY5YTY5MjZlYy4uZjc0NTVjMTQ2YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQog
Ci12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZh
aWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdj
N2NhODFmZWE2Li42NGRlZDZhYmJlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiYm1wIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBm
aW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFt
ZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsKICAgICAvLyBDQVVUSU9OOiBzZXRG
YWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAvLyBh
Y2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJv
bSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKaW5kZXggNDg0NGYzODBkYzE3Li5iZDQzMGU4
YThiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEJN
UEltYWdlUmVhZGVyIHsKIHB1YmxpYzoKICAgICAvLyBSZWFkIGEgdmFsdWUgZnJvbSB8ZGF0YVtv
ZmZzZXRdfCwgY29udmVydGluZyBmcm9tIGxpdHRsZSB0byBuYXRpdmUKICAgICAvLyBlbmRpYW5u
ZXNzLgotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUg
dWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQxNl90IHJlc3VsdDsK
ICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCAyKTsKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3Qg
cmVhZFVpbnQzMihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAgICAg
bWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5LDcg
QEAgcHVibGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBwYXJl
bnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNldCwg
Ym9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogCiAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29kaW5n
LiBJZiB8b25seVNpemV8IGlzIHRydWUsIGRlY29kaW5nIG9ubHkKICAgICAvLyBwcm9ncmVzc2Vz
IGFzIGZhciBhcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBpbWFnZSBzaXplLiBSZXR1cm5zCkBAIC0y
NzIsNyArMjcyLDcgQEAgcHJpdmF0ZToKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBt
X2J1ZmZlcjsKIAogICAgIC8vIFRoZSBmaWxlIHRvIGRlY29kZS4KLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogCiAgICAgLy8gQW4gaW5kZXggaW50byB8bV9k
YXRhfCByZXByZXNlbnRpbmcgaG93IG11Y2ggd2UndmUgYWxyZWFkeSBkZWNvZGVkLgogICAgIHNp
emVfdCBtX2RlY29kZWRPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3Jl
Q2Fpcm8uY3BwCmluZGV4IDYwMTIwMzc0ZjljNC4uNGEyMTI1NWE4YzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdT
dG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0
Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3Bp
eGVsc1B0cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwg
c2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAg
ICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fp
cm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5
LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vf
c2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMu
Z2V0KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQq
PihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGIuLmI5ZWMwMWI4YWU4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VE
ZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3AKIAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBk
ZWZhdWx0OwogCi12b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgK
aW5kZXggMzVkZjMzZjZkZmM0Li5jNzQ3MTk5OTliOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29k
ZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
Z2lmIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXpl
KGNvbnN0IEludFNpemUmKSBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZp
bmFsOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlUmVhZGVyLmgKaW5kZXggNDIxNDZlMDMyOTMyLi4xMDgyZmRmMGRmZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAm
ZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAg
IGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVk
IGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90
IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBs
ZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1Ny4u
YzA3MTM0NWI4YmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBJQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFn
ZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuaAppbmRleCBmYjdhOTAzYjJhMDcuLjEwZWU5YjRkMmU4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2Fs
YWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJpY28iX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUg
c2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJ
bnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0
NWJiNzg2ZmYuLjVjZmFjOWYyMzU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9t
YXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQ
cm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVy
OwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9s
aXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUND
TWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEz
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29t
cHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAg
ICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJT
aXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAg
IGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5k
YXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZm
ZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXIudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9T
a2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBi
b29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9u
bHlTaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAK
aW5kZXggYmVjZjY0NTAyNzdlLi4yMDQ3M2YwZWVlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAw
MC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcy
MDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAq
bV9kYXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1
YTNlLi40Y2JkMzIzZDlhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTIs
NyArMTUyLDcgQEAgcHVibGljOgogICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOwogICAgIH0KIAot
ICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJv
b2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5
LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25s
eSA9IHNpemVPbmx5OwogICAgICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNf
Y2FzdDxQTkdJbWFnZURlY29kZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDJmMWIwOWRiYzc2Li5iMWJlYzU1
ZTc4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdl
RGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFdFQlBJbWFnZURl
Y29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzIs
NyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5k
ZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJv
dGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3Ig
aW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNv
ZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5
IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmlu
ZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUg
ZGF0YS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0
YShtX2RhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcHJv
dGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAgICBXZWJQRGVt
dXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVt
dXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuaAppbmRleCBhZjM2NWU5Y2Y5YzcuLmRkMjhiYzg4ZGY1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldF
QlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVC
dWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50
IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYi4uYjIz
NzdmZTM0MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQpAQCAtMjM2LDE0ICsyMzYsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoW3R5cGUgaXNFcXVh
bFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0pIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZs
YXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFu
Z2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3Vs
dDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVy
ICYmIHJlYWRlci5yZWFkUlRGRCgqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBS
ZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgIH0KIAogICAgIGlmIChbdHlwZSBpc0Vx
dWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVJURl0pIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0
ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJk
V2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJl
YWRSVEYoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpE
aWROb3RSZWFkVHlwZTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogI2VuZGlmIC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogICAgIGlm
IChbc3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnRhaW5zT2JqZWN0OnR5cGVdKSB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7Cisg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgp
KQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRF
eHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCksIHR5cGUsIGl0ZW1JbmZvLnByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVh
ZFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQuLjE2YjNkNWQ0NDE1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
CkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpA
QCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVu
dFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQu
Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVu
dFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpj
b250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5k
YXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBj
b250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcg
KzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAg
IGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYg
KE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZl
ciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmli
dXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYg
KE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZl
ciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmli
dXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxs
cHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2Vu
dGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0
b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250
ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3Rv
bURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2Fy
ZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwog
fQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBw
YXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRh
dGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlm
IChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVU
SSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlN
RVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFn
ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFt
ZV07CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJS
ZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQ
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1l
T3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAg
ICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJl
ZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBw
bGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkg
d2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9m
IGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBw
YXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUg
Y3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hl
biBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjcyLDggKzY3Miw4IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAg
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4odmFsdWUpOwor
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2Nv
YVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tCmluZGV4IDU0NDY1M2M0NDAzZC4uY2FiYWFhMTE4ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIs
NyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZp
ZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgfQogICAg
ICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHBy
b3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3
Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2Fk
YWI1OS4uMGQyNTQ5OGI4NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIo
Y29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJv
YXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAg
ICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzYyLDcgKzM2Miw3IEBAIHZv
aWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRV
UkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEg
PSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBl
KCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRy
aWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRy
aWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiLi44OGQwNDAyNTg0Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1t
CkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUlu
U3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsg
KytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xp
ZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVh
ZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVi
b2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4o
d2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRE
YXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRh
OmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0
dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjLi5jM2I0ZDJkOTYy
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbQpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYg
KHBsYXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBz
dGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVi
b2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAg
ICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0
cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAK
ICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlh
bGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAg
ICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9y
VHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAt
MzQxLDEyICszNDEsMTIgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3Rl
Ym9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBv
d25lcjpuaWxdOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9y
VHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
K2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAg
ICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRh
OmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERh
dGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC01MDQsOCAr
NTA0LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJv
YXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5
cGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0
KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8g
c3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNiLi43OTY1NTRmNGM5NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1wbGU7CiBjbGFzcyBN
ZWRpYVN0cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNz
IFBsYXRmb3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIApA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgQXVkaW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRpYVN0cmVhbVByaXZh
dGUmKTsKIAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3Vi
bGUpPjsKKyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGRvdWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJh
Y2smJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0ID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGMyNWRmOTE1NzRh
Ni4uNDk4ZDRlZTEzNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBA
IC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1v
Y2tDb3VudGVyU3RyaW5nKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNo
RGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9
OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgp
LCBtX2J1ZmZlci5sZW5ndGgoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWYuLjljMmM3OTdiODE5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVC
dWZmZXIoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNv
bnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsK
LSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGRvdWJsZSk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwog
CiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2
b2lkIGNvbXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURh
dGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAog
ICAgIGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFs
c2UgfTsKQEAgLTExNyw4ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0
V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2Rh
dGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNo
RGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRp
b25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFm
N2MwZTUzMTMuLjg0ODQxMDBlYWM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAg
ICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdl
IHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNh
ZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAo
bV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAg
IG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFt
X2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6
ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEo
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0g
V1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFr
ZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXgg
YTliMjlkNTllOWFhLi5jZGVlNjAzNTIzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGF0YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZmFmZGZlODdj
ODM3Li40YmViY2I1MDk4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRN
ZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwog
Y2xhc3MgVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2Li5iYThmZDRm
ZjRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBAIFJlc291cmNlSGFuZGxl
Q2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5k
bGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNv
dXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRh
KGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMzN2Q1NmNl
OGMuLmM0ZjA1NDg1ZjI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBS
ZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAg
IFN0b3JhZ2VBbGxvd2VkLApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0
ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTYuLjAwOGUyMjZmZjkxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDog
YnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25z
ZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAg
ICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dp
dmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDog
dWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNh
bGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5v
dFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRy
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+
IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7
CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8s
IFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJj
ZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVt
b3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQo
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFu
Z2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBj
b25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0
byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNp
emUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBh
IHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2Nl
cHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBs
b2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50
IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1
ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAg
cmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAg
ICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFz
a0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9
IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0
YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBn
aXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJT
aXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0
ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNV
CiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBi
eXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXpl
KCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNv
bWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8
IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJv
bURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEu
c3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAg
ICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAg
YXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxT
dHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1
ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVS
ZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24uaAppbmRleCA0MDQ4ODVhZTYzNzYuLmNlNGMyNTQ1Y2RlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRp
bnVlUG9saWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JU
IEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
c2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2Vu
dDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3Vy
Y2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2Ug
Y29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxk
Q29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291
cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNo
b3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3Bv
bnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhF
cnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiLi44Yzg5ZDkzODY1NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcs
IHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtNjUy
LDcgKzY1Miw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sg
cmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12
b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAo
IW1fdGFzaykKQEAgLTkxNSwxMSArOTE1LDExIEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAg
ICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVu
dFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKWRhdGEKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilk
YXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNl
ID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpb
c3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsK
LSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7
CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlk
PE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVn
YXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4
IGMzNmUxZjg4NzY0My4uMzQ5NDQ1OTI1NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0
JiByZXF1ZXN0LCBDdXJsUmVzcG9uc2UmJiByCiB9CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1
cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGEzYWEwY2Y1ZmNkMi4uY2RlNDQ0NTc3NWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBj
cmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5k
RGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVl
c3QmLCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVl
c3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZv
JiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4
Li4wOTBkMDM5YmE0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTExOSwxMiArMTE5
LDEyIEBAIEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRp
cGFydEhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQg
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAg
ICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5
dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpA
QCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUo
KQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMg
d2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAv
LyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCks
IG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRl
eCA1YzA4YmNjNWViM2UuLjlhMWExYmJkMTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0z
NCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhh
bmRsZUNsaWVudDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgQ3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29u
c3QgU3RyaW5nJik7CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0
ZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQx
M2ZkMzgxMzE0Li5jODEzODg2YThkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQu
aApAQCAtMjgsMTIgKzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0
KFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHBy
b3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5k
ZXggZDM1YjBlODM5MTk1Li5kODJkZDNjMTBhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMzk2LDcgKzM5Niw3
IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIp
CiAKIC8vIGNhbGxlZCB3aXRoIGRhdGEgYWZ0ZXIgYWxsIGhlYWRlcnMgaGF2ZSBiZWVuIHByb2Nl
c3NlZCB2aWEgaGVhZGVyQ2FsbGJhY2sKIAotc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ0
LDcgKzQ0NCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlw
YXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSwgQWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNl
bGxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC03NzcsNyArNzc3LDcgQEAgY29uc3QgU3RyaW5n
JiBDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkKICAgICByZXR1cm4gbV9kb3du
bG9hZEZpbGVQYXRoOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2Fk
RmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVl
c3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rv
d25sb2FkTXV0ZXggfTsKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
bV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAg
ICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3Vy
bFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggNmJkOGE2YmZiYTM3Li4zYzdj
ZGQ4ODNlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEN1cmxSZXF1ZXN0Q2xpZW50OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3Mg
Q3VybFJlcXVlc3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBw
dWJsaWMgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQsIHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFu
ZGxlQ2xpZW50IHsKQEAgLTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVw
VHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXpl
X3QsIHNpemVfdCk7CiAgICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAg
IHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzaXplX3Qg
ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5z
ZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyAr
MTUzLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRy
aWNzKCk7CiAKICAgICAvLyBEb3dubG9hZAotICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZp
bGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB3cml0ZURhdGFUb0Rv
d25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCBjbG9zZURvd25sb2FkRmlsZSgpOwogICAgIHZvaWQgY2xlYW51cERvd25sb2FkRmlsZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdENsaWVudC5oCmluZGV4IDA4Yzg2YzdkNDY4NC4uMzQ3OTgzMmY1NzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNz
IEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNl
RXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3Qm
LCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9u
c2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJs
RGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNl
RXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEuLjMwNWQ0ZTVjOWZjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTUgKzE0MiwxNiBAQCB2
b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1
cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChj
YW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1f
aGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVm
ZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkp
OwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUo
Q3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUyZmQuLmRhZjBhNTlhNGU1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBm
aW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJs
UmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1l
dHJpY3MmJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVz
dCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggYmM0ZGFhZmJmMjFhLi4xZjRhMTkzMTMzMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+TGVnYWN5UHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50
cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YS4uNDUzNjgxYmRhYjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0z
NTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFs
IDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7
IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5z
aWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUo
KSk7CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDE1ICs5ODYsMTUgQEAgc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENv
cHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVu
bG9jayhtZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVh
dGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNo
YXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAg
ICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxT
RTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2Nl
ZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAg
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAg
ICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1
Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgp
OworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUx
N2IuLjg0ZmEyOWNlMWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlT
eXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtpdC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NE
TUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMpCit2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlz
VG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+JiYga2V5cykKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvbnMu
YWRkKGlkLCBXVEZNb3ZlKGtleXMpKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBA
IC03NCw3ICs3NCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCCiAgICAgICAgIHZhbHVlLmFw
cGVuZChXVEZNb3ZlKGtleSkpOwogfQogCi1WZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tD
RE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkK
K1ZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1v
dmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBhdXRvIGl0
ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkK
QEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9y
eTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmkKICAgICByZXR1cm4gV1RG
TW92ZShpdC0+dmFsdWUpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBN
b2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29u
c3QKK2NvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFj
dG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAg
ICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9u
cy5lbmQoKSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogICAgIHJldHVybiBtX2ZhY3RvcnkgJiYgbV9mYWN0b3J5LT5zdXBwb3J0c1Nl
c3Npb25zKCk7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0
Citib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsK
ICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTEsMTIgKzIxMSwxMyBAQCBib29sIE1vY2tD
RE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
IGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsK
LSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNl
LnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOwor
ICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNw
bGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZm
ZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNw
b25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yNjksOSArMjcwLDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6
OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNh
dGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwor
ICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2so
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8g
U3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTI5Nyw3ICsyOTgsNyBAQCBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNl
PiYmIGluc3RhbgogewogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9p
bnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMy
Myw3ICszMjQsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vzc2lv
bklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3Rh
bmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMxLDcg
KzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+
ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0
b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxi
YWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNj
ZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgK
aW5kZXggZjVjZGE1MDVjZjJhLi5kOTZjMTU2ZWU0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29u
dGFpbnMoaWQpOyB9CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpIHsgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0g
ICAgY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBy
ZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBh
ZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25z
dDsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJv
bVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NE
TUZhY3RvcnkoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3Jl
YXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAg
ICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsK
KyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+
IG1fc2Vzc2lvbnM7CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUgewpA
QCAtMTIxLDggKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgp
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3
ICsxMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBs
ZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6
Ok1vY2s7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFs
bG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZj
MTI3YjdiNjdiZS4uMDU5ZjNhMzg2YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVj
aXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRh
LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5k
ZXggNDExYTMwMDk0N2I1Li42MzVhYzg0YmU3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOS4uNWY4NTQ1ZWJhNWIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7
CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAog
U2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNj
cmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVy
IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6
OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBT
dHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVy
Ojpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZl
ciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5i
ZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2Ny
aXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1
dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4
Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwg
Y29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
aW5kZXggYjM5ZDljMTMwMzMwLi5mZDJjMWFlMmY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVi
bGljOgogICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAK
ICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7
IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3Jp
cHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgp
KSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsg
cmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29u
c3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVk
IHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0
aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Ny
aXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiLi40MDY2
ZmIzNTJlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2Vy
Rm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRG
cm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZN
b3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxT
Y29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCitib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNM
b2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051bGwoKTsKK30KKwogYm9v
bCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9y
T2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9k
YXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdl
dCgpKQorICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1
b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9k
YXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRh
LCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1
cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2
ZmVhLi4xYjNkNzg3MGYxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRp
b25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAh
bV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBp
c1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJp
dmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50
IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2Nv
bnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmgKaW5kZXggZWIyNjZiNmMwN2U2Li4wOTc1NDNlMWIzYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBj
bGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNo
IHsKIGNsYXNzIENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdU
Rjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZj
MC4uOWE4ZmIzNWNhNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAg
U2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVl
ZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0
b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVk
QnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxl
TWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZp
bGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1
ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2
b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggYWI5OTYwM2VhNTNlLi5mY2NjMmE5ZWQyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRw
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25z
ZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jl
c3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxI
dHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVm
PEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklY
TUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFy
ZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRh
ID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJh
Y3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisg
ICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0
YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVz
cG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0
LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZN
b3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlC
dWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5
YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJl
c3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDAp
OwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3Vs
dCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNy
ZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQx
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1f
cmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFs
c2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0
KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDgg
KzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZl
ciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAg
ICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDcu
LjE2MmNhOTVhZWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
VXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIK
ICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1
ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNl
RGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7
CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9y
ZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA3MTc5NDc1ZjdkZmQuLjdjNjcwZjA1YjliOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMzIgQEAKKzIwMjEtMTItMDUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXIgc2hvdWxkIGJlIHVzaW5nIGNvbnRpZ3Vv
dXMgc2hhcmVkIGJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzODY1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisKKzIwMjEtMTItMDMgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVk
QnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJl
IHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1No
YXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFs
CisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3Bw
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5oOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxh
dGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBi
b2FyZEd0azMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
V2luLmNwcDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjov
Lzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3Rv
cmVBc0NhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3Vs
YXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIx
LTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlz
dGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUg
YW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6
ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAg
ICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hh
cmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJl
c291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZv
bnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5T
aGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAo
SVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERh
dGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERh
dGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0
RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBh
c3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAg
KGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06Cisg
ICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0
RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9t
YWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
Zyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRC
dWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBv
cnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAy
MS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmls
dGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTczMDY3ZTNkZDA1Li4zMWMyZDc2ZjJl
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFy
Q2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVz
dGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTczZDNkOWE2NGIuLjAyYzVjZDM3YWU1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6
Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+
JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNs
aWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25z
dCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5j
cHAKaW5kZXggZTU3NjZjMjMzNGNmLi5kZTgyNzNiOWNmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5
cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2Nv
bXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0
YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxl
dGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjb21wbGV0
aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
c3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0K
QEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYm
IGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9u
SWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlbW92
ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBs
ZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNl
cywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNl
c3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4
cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0Rh
dGEpCiAgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0
OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1
c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1CiAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIp
OwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShD
RE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGlmICgh
bV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKaW5kZXgg
OGE2MWY5ZDVmYWJjLi5mZTczMDk3MTMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5h
bDsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3Nh
Z2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5h
bCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1ZjRjM2IuLmY3Y2I2YTYz
ZWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgUmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVBy
b3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW4KIAog
UmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKIAotYm9vbCBSZW1v
dGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBk
YXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggNjkyNGU3NGUzZjUwLi4zYjY2Yzc3NTc4
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBSZW1vdGVDRE1GYWN0b3J5
UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAotICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgK
aW5kZXggZTJjZDA1ZDdjYzc0Li5kZThmNmRmNTVhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2
NTkzLi4xNTQ2YmRmZGZkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2Fj
eUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2
N2IuLjYxN2Y0NzY4OTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
OjpkYXRhUmVjZWl2ZWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQo
KnRoaXMsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKaW5kZXggZDEzZDI1ZjY1ZjAyLi41YjdhN2Uy
YTc0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lk
IGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAg
dm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIuLmU4M2Y5MTQzZDIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZv
aWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAg
ICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0
aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMi4u
NzFmZDAyMjI5YmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9p
ZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBv
dmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3Zl
cnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmNwcAppbmRleCAzZjM5ZWIzMmYxYWEuLmQ4OTIwZTk4NzY0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JT
X0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaAppbmRleCBiYmIxNDYyYTMxNjEuLmUxMWJmNTYzMTkwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmgKaW5kZXggZDYwMThmNjEzODNhLi5lMDQ5ZTViMTJkZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Js
b2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCmluZGV4IGJhYzAyMmFiNDU0My4uNzk3NWQ0MWJhZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5j
b2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8g
c2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NS4uZWU1ZWIwMDZhYTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNl
bmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2
NmJkOTY3ZS4uMzQ4Y2ZmYjllOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2Fk
TWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBlbnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6IHVpbnQ4X3Q7CiB9CiAKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2Li4wZTVlYjVhZGMwMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5j
aHJvbm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGlj
IHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xv
YWREYXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVk
UmVwbHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJv
ci5pc051bGwoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAg
aWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBw
ZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVm
ZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNz
KEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSAr
MTA1LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xv
YWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMg
eyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24g
fQorICAgICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KCkgfQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVm
ZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENy
ZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVm
ZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGlt
ZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
RW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAg
ICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJp
bmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAg
ICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAot
ICAgIGlmICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgp
CiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNl
TG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBl
KCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5t
YXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZm
ZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNl
IGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBi
dWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5j
aHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJl
ZERhdGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAg
IGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgp
OwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2
YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsg
Ly8gMzA0IE5vdCBNb2RpZmllZApAQCAtODU4LDcgKzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5n
Q29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExP
QURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKTsKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVs
bCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVh
bWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAg
ICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5
KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3Nz
T3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFz
dCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFu
ZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgp
OwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+
aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkp
OwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRh
TGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwx
MSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChp
c1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1l
dHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJv
bm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0
cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZm
ZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1v
dmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVy
KCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJl
ZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3Mp
KTsKICAgICB9CkBAIC0xMjU2LDE5ICsxMjU4LDE5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWRE
YXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJU
KG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWRE
YXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFF
bmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgp
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQo
IWlzU3luY2hyb25vdXMoKSk7CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxF
QVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJl
Y2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlT
dG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEy
ODksMTIgKzEyOTEsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXND
YWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7
Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZSht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENh
Y2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92
ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3Rv
cmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAg
bV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25z
ZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlz
IH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0
d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkp
IG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmICht
YXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhLi45ODQ0MjRhMzA2ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcs
OCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNz
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTIsNyArMTk1LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBi
dWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVy
KFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5n
dGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGlu
dmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVk
aXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWRE
YXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToK
IAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdv
cmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdl
Q2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVl
c3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1M2U0NWI3Mi4uMWFmMWUwOGUzYzQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUCiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwog
fQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQor
dm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpCiB7CiAgICAgUElOR19SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApp
bmRleCAxOWVjOGNlYjkyZTMuLmFiMjlhMGIxYWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0
b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsK
ICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlLi4xN2Q0NzkwN2Ez
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RU
YXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMxZmYxNjQ3MTExLi44NTgwOGUx
MjFiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzcu
LjgxOTY2MzAyMGM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVm
ZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNr
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFl
NzhjMmNlZmExNS4uZWUxYmM4YjdkNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mi4uN2EyNjIy
MTlkZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAg
IHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAg
ICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBi
dWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDE4ZjU0NjkxZjM3Yy4uNDRmYzA2ODVm
YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZmOTk5Li5kZDMwNWFmMjk3NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAK
QEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZl
Q29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIo
V1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92
ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5l
dHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNw
b25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2Fj
aGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYKICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25z
ZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCBy
ZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjczMjUuLmVk
MDRlYmNhMGIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCkBAIC00Myw3ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVz
aW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9u
SGFuZGxlciYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkm
KT4mJiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2
b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZh
bGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXRyaWV2ZURhdGEoY29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhf
dCosIHNpemVfdCk+KTsKICAgICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBtYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhLi43NjEwNzhkZWEwOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVz
cGFjZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXko
a2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNwb25z
ZShyZXNwb25zZSkKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5Ojpl
bmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5i
dWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAo
bV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXpl
KCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwg
Ym9keSwgeyB9IH07CiB9CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6
ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwg
bV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hhcmVk
QnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4
IDk2OTE1YzM4MDFjMy4uOWMwNDIwZDQ0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5
KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0
IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVu
dHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBA
IC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUg
bV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZi4uNDFkODIzNTAyNDc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFNwZWN1bGF0aXZl
TG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYg
Z2xvYmFsRnJhbWVJCiAgICAgOiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0
KHJlcXVlc3QpCi0gICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkpCisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVFbnRyeUZvclZh
bGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+
bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9u
c2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9y
ZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0g
bnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAg
Ym9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09
IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYm
IG1fY2FjaGVFbnRyeSkKQEAgLTEyMCwxNyArMTIwLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2Us
IFJlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVu
dHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFBy
ZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBj
b25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0g
ICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUo
KSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0
KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAg
ICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYg
KG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAm
JiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2Fj
aGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9j
YWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7
CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBz
dG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxl
QnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9u
c2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNo
ZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxl
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNC4u
MWI4NDNkYjdlYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcg
KzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRp
YWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxl
dGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMC4uMzE5OWJmZjMxMWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBy
ZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hD
YWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDog
cmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpLCBidWZmZXIoV1RGTW92ZShidWZmZXIpKQogewog
fQpAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+
IFByZWZldGNoQ2FjaGU6OnRha2UoY29uc3QgVVJMJiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNv
bmRzIGV4cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3Rv
cmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVm
ZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
aAppbmRleCBhMjUxNTIwYjMxZWEuLjUyYzBiMTBmY2M2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0Nywx
OCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCk7IH0KKyAgICAgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVh
c2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlZGlyZWN0UmVxdWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiB0YWtlKGNvbnN0IFVSTCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVS
ZWRpcmVjdChjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBi
OWFiMGRlZWJiOWYuLjQxNjY4YTViMWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyAr
NjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJM
Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
Jik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2Fk
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2QuLjMwNTFmMTY5Y2IwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCks
ICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5jcHAKaW5kZXggOGZjN2I2NjNlNmY3Li4zN2YyOTQxNjY0NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAg
IGludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1
cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0
ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50
ICYmICFpc0Rvd25sb2FkKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2Li40NWJl
NWNlMTg0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAg
IFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0
KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2ln
bmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJs
UmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihX
ZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGY1ZGI3
MDZjNDQ1OC4uMzNkNDNiNzIyMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtNTUsNyArNTUsNyBA
QCBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVn
aXN0cmFibGVEb21haW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDIuLjE3ZjA4YzI4
ZWExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNv
cHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVz
IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0
aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBh
dm9pZCBjb3B5aW5nIGZyb20gdGhlIERlY29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNlIGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpA
QCAtNDMsMTEgKzQzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAg
ICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQot
ICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAg
ewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CisgICAgU2hhcmVkQnVm
ZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCisg
ICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCiAgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CiAgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1Li42N2Vj
OGU1ZTkyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIG9y
IERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhl
IGRlY29kZWQgZGF0YS4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERh
dGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRl
Y29kZWQgZGF0YS4KIAogI3ByYWdtYSBvbmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMuLmMwMjZmNTQ5NTY5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTaGFyZWRNZW1v
cnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihz
aXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7
CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcx
YmNkNzMwMmMuLjFiNGZkZmFmNjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8g
RklYTUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJl
ZE1lbW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3Qg
SGFuZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZp
bGVEZXNjcmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzUuLjExMGUwYWRkZTU1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBz
dGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwg
Y29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpk
YXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNv
dXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNm
RGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
Q0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFy
Y2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KaW5kZXggODdmNGViMWViYTI4Li4zYzFiNTdkNWFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CkBAIC01NjQsMTMgKzU2NCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewot
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFj
ZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRh
OwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1
cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVz
aW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRh
LnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250
RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5D
b2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmlu
ZGV4IGM2OTYxYzcxNDQwMi4uNmZhMDJhN2JjM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5k
bGUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMg
fV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRo
aXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMi4u
ODQzZmQ0NzMxM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NP
REVSX0ZPUl9TT1VSQ0UoRGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAjdW5k
ZWYgREVGSU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2b2lk
IGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBpc051
bGwgPSAhYnVmZmVyOwogICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBA
IHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCi0gICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFyZWRC
dWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCisg
ICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAgIC8v
IG1heGltdW0gbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVu
IHNlbmRpbmcgbGFyZ2UgZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJUEMu
IENvbm5lY3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFu
eSBJUEMgbWVzc2FnZSB0aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXIm
IGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xNTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAg
ICBpZiAoaGFzU3RyaW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxh
dGZvcm1EYXRhKTsKIAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0
Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIp
Ci0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZl
cihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3Jt
RGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURh
dGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpFbnRyeSYgZGF0YSkKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRh
Y2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1p
bWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUo
bWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CkBAIC0zMDEwLDYgKzMwMTAsMzQgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRp
ZgogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZl
cihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKIHZvaWQgQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAg
IGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwpAQCAtMzEwNyw3ICsz
MTM1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVyIDw8IG1lc3Nh
Z2UuZmlyc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3Nh
Z2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5jb2RlciA8PCBt
ZXNzYWdlRGF0YTsKIH0KIApAQCAtMzExNyw3ICszMTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkNETUkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFj
MDI5MmEwLi42ZmFjMmFhMWVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNz
IENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC0xMzgsNyArMTM5LDcg
QEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0
aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50czsKQEAgLTc1MSw2ICs3NTIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsK
IH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IGNmMmU0ZDVmOTNmZC4uYjYwN2FjZTgz
OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0
RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7
CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0g
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBp
bWFnZVNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZS4uNjcxNzU4YTI4MGE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAg
LTk1LDcgKzk1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3Rv
bURhdGEgPSBzZWxlY3Rpb24uaGFzQ3VzdG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3Vz
dG9tRGF0YTsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEo
KSk7CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxh
Y2UoKTsKICAgICBlbmNvZGVyIDw8IGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2MuLjE0OTBj
NTExYmRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50
OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0lt
YWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmlu
ZGV4IGFmYTkyOWNmMDkzZC4uZmU1MGU1MzhiOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgT0JKQ19DTEFTUyBOU1N0
cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3
ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdl
RGF0YSgpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlz
cGxheSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0Vu
Y2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuaAppbmRleCA3ZmMwNTQ1N2U2NGMuLjRlMjY2ZjM2N2FjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGEuLjEx
MWYwOTI2M2Y4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RS
ZXN1bHRzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtMTE5
LDcgKzExOSw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdU
Rjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVmPE5h
dmlnYXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YS4u
ZGZlZjNlMDcwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAog
ICAgIHJldHVybiBbZmlsZVdyYXBwZXIgcmVndWxhckZpbGVDb250ZW50c10ubGVuZ3RoOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFn
ZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc0Vu
Y2xvc2luZ0ltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0Mi4uMDFj
ODEwMjc4ZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0
Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGln
aHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBh
dXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdp
dGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4
dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dL
QXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6
bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZElu
QXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdo
dDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdl
YkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGln
aHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0MzcwMTUuLmM4MDI5YzE0
MGE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92
ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYy4uOGQzYTg1NjQ2MmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0x
MjIwLDcgKzEyMjAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNfY2Fz
dDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0
aV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYK
ICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0
YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0
YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkLi42ODMzNzNlYWUwMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29h
Lm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBv
bmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJh
dGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRv
cHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9
IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlv
bkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgp
KTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25z
dW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7
CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3Vt
ZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkg
fSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlNy4uZjU4OTEyNDE3MDJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTUwNiw3
ICs1MDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpE
cmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSk7CiAgICAgdm9p
ZCBzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5z
aW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJM
LCBOU1Bhc3RlYm9hcmQgKik7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJD
b3JlOjpJbWFnZSosIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNT
dHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUs
IE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKKyAgICB2b2lkIHNldFByb21pc2VkRGF0YUZv
ckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0
ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxl
VVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0
cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKICAgICB2
b2lkIHBhc3RlYm9hcmRDaGFuZ2VkT3duZXIoTlNQYXN0ZWJvYXJkICopOwogICAgIHZvaWQgcHJv
dmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqLCBOU1N0cmluZyAqdHlwZSk7CiAg
ICAgTlNBcnJheSAqbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VS
TCAqZHJvcERlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3Li42MjM2N2RjNWFkMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00NDQ5LDcgKzQ0NDks
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVu
YW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlzZWRVUkwgPSB1cmw7CiB9
CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6Oklt
YWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0
cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwg
TlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwg
TlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0
cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2
ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRp
ZmllcikKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBh
c3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0p
OwpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRG
aWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVS
TCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRv
IG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5z
RGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQg
c2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBl
V2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEs
NyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChO
U1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2Ug
TlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00
NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxO
U0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAg
ICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJS
ZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCmluZGV4IGM0ODVjN2ZjMzEzZS4uYjQ2MmQ4ZGI1Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0zMjgsNyArMzI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1
YTgzMmU1NWFjYmEuLmU1ZWFmNDFmMzhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3Mg
VmFsaWRhdGlvbkJ1YmJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3Li4xOTk3ZWFlMjBhYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdl
YlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFu
ZGxlciwgV2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJz
LnJlcXVlc3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZN
b3ZlKHBhcmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0
YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkgLT4gRQogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVS
TFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAt
PiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChp
c1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0Rh
dGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAg
ICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29t
cGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBt
X2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAg
IGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAg
ICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNw
b25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0
cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9y
ZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjkuLjc5OTQyZjliMjBh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcgKzQ0LDggQEAg
Y2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRp
b25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAog
ICAgIHZvaWQgc3RvcCgpOwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5j
TG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2Li43Mjc5Zjg0NGNjMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpPiYmKTsKICAgICB2b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAg
dm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrMy5jcHAKaW5kZXggYzJiZjUxODNiMzBmLi41OTY2ZDU1NzRjMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1
IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7
CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVh
ZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
aGFuZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
PiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNv
bnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFk
QnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRv
bV9pbnRlcm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0
YSogc2VsZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVhZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNE
YXRhKj4odXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjViODFmYThmMjlkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAs
MTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRh
IHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBS
ZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIo
Y29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJl
YWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAg
ICAgZ2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJ
T1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1
bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Li5hYjg3YzJh
N2U4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRv
UmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRC
eVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Rh
cnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFy
Y2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNl
dFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4
dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhNDExMjEzNWYyZWYu
LmMzNjNlOTU1ZTg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6
OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxl
Qml0CiAgICAgbV9pbXBsLT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12b2lkIFBhZ2VD
bGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVV
UkwsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CmluZGV4IGUwM2UwODBhZWUwOC4uMDFkODQwYTJhNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0
YVNpemUpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFy
Y2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5
QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlB
cmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uY3BwCmluZGV4IGZhOTQwMjVlZDc0Ny4uYzI4ZmU2NWYwY2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3
IEBAIGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwg
aW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2Fk
QW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxp
emUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RN
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8v
IFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmlu
ZGV4IDBhZGRmODMzNTNiNi4uOGM0NTRlYjgzZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRl
OgogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmln
dXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNv
cmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVx
dWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlv
bnMmKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50
U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNv
bnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAg
ICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5n
PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1
cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVk
ZWEyMWU5OTVhLi5hMTNlNTE0NjBmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3
IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0
aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFt
X2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAx
MDZiYTNiMTE2MWMuLjJjNzg1MWU0NDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBA
QCBwcml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAg
dm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJz
aXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBh
ZjBiYWQ0YzkwZDguLmM3NDBjMDQ1MDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cApAQCAtNDksNyArNDksNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewog
ICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBm
YWxzZSwgRmFpbGVkKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcK
ICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcg
KzEwOSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0
YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0
YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1l
c3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFs
dWUoKS5idWZmZXIoKSkKICAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgp
LmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hh
bmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDog
RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZC4uNGU0
Y2QyYzAwNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xp
ZW50KTsgfQogICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0
cjsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NS4uNjI5MjY3OThjNWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJ
bWFnZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVk
Q29udGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIg
ZXhwZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpT
aXplQXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1l
IHJ1biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2QzYS4uNDBkMzczNGY3YTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGIGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAg
ICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29k
ZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBj
cmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRp
ZmllciwgbWltZVR5cGUpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBX
ZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwg
V2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGlu
Z09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAg
ICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9p
ZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBm
aW5hbDsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuY3BwCmluZGV4IDQxZDUzODgwMjNkMy4uMDgyYjMzNjZjOGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVt
b3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJ
bWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1h
Z2VEZWNvZGVySWRlbnRpZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZSB7IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNz
KQogICAgIEltYWdlRGVjb2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnN1cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29k
ZXJBVkY6OmNhbkRlY29kZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAg
ICBbdGhpc10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
SW1hZ2VEZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlci5oCmluZGV4IGMyMzc4MmI2NTA0ZS4uMzYxOGFmZDEyMDk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVy
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2Vi
Q29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKIAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyLi5iNDA4OWZkMzU0OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwg
Y29uc3QgV2ViQ29yZTo6CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291
bnQgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1f
Y29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29y
ZGVyOjpGZXRjaERhdGEgeyB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbWltZVR5cGUgPSBtaW1lVHlwZSgpXShhdXRvJiYgZGF0YSwgZG91YmxlIHRp
bWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBp
ZiAoZGF0YS5zaXplKCkpCiAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlLCB0aW1lQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApp
bmRleCAzMDNhNTRmNzZmMTguLjU3NmZkMWM2ZTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9p
ZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUp
PiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RG
OjpNZWRpYVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdl
YkNvcmU6OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRk
ZGZiNC4uMDM1M2FhYmY3ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5k
ZXggYTA2MzUyMDQzMzViLi4xODBiMTExMWVjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBj
bGFzcyBET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50
KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVj
dCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6
OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJl
cXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6Oldl
YlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmUuLjk0ZmVkMmU3ZTM2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDE4ICs2MiwxOSBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0
KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZl
cih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBi
eSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJl
cXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQq
PihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgU2hhcmVkQnVmZmVyKj4o
ZGF0YSktPmRlcmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0
IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAo
IW1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBz
aGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRo
b3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOwor
ICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0g
QVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCks
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91
c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVz
dCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEko
TUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVu
cmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaAppbmRleCAzNmJkOTgwYjJmYWEuLjg2M2JkYWI2Mjg0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1
ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVj
dCopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2Jq
ZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVS
TCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21h
Yy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5k
ZXggZTUyNGQ4ZTFiMDE3Li5hNzg0ZWMzODhiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291
cmNlKQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNl
LmRhdGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAg
bV9maWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
OTRkOWQyY2MzZWIyLi4wMjI3MGE1M2FmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApA
QCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNo
ZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291
cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0g
aGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFi
bGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0
ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZv
ciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1
Li4zMTBmY2E3ODc1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2Up
KSB7CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciA9IG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuYmVnaW5J
bnRlcmNlcHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2Nv
cmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVy
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVz
dElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBv
bGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBp
bnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRh
YmxlIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVl
c3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVy
Y2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fY29yZUxvYWRl
ciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBXRUJS
RVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGlu
dWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKICAg
ICAgICAgICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29udGludWVSZXNwb25zZShpbnRl
cmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3
b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAg
ICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVu
YWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0
byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNM
b2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaAppbmRleCA0MmRlNDYxNDE5NzcuLmE3ZjQ1Yzg0MDFiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjA3LDcgKzIw
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9v
bCkgZmluYWwgeyB9CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5h
bDsKICAgICBib29sIHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhp
dFRlc3QoKSBjb25zdCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUxMS4uZDQ3ZjMyYjdk
NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KQEAgLTI1NTIsNyArMjU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNw
bGF5TW9kZUNoYW5nZWQoaW50KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIE5TRGF0YSAqcGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzLi41OGQ3MGEz
OWExNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02
MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNp
emU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jv
b3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykg
Y29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVS
ZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTEuLjdmYjIwYzU5MmRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVt
ZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQ
YWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhw
YXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAg
ICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
KSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSAr
NDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkg
ewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0
ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRh
KQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51
YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBl
cnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9t
YW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
MjYsMTEgKzkyNCwxMSBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiAg
ICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1f
bWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7Cisg
ICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5p
c2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRS
ZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVy
IHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFu
dWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVh
bFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
YnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1l
bnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1f
bWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NS4uZDE1
M2EyOWNhMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNv
cmUuCiAKQEAgLTExNSw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZEFsbG93
U2NyaXB0aW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVz
b3VyY2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgU3Ry
aW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
KSBjb25zdDsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToK
IAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1
ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAK
ICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3Vs
ZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzguLmIwNGNjY2YxMTNlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcxLDE2ICs3MSwxNSBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2Us
IG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50
aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZl
ci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAg
ICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVz
cG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNl
RGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0
YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAg
ICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkK
ICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBm
b3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdj
YWQyYWI1Zi4uNmIwYTQxN2NmMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC00OSw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5p
c2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkg
ZmluYWw7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9i
TG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZv
cm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0
YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNl
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYS4uN2NmYzAz
YTg1ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wg
V2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYg
c3R5bGUsIGNvbnN0IHN0ZDo6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVm
ZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxl
TmFtZSwgZGF0YS5nZXQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4
ZC4uYjA1ODYxODkxZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBXZWJDb3Jl
OjpTaW1wbGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7CiAKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5hbDsKICAg
ICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggNGJkYmJjY2QzZmJjLi4xNGEwODNjYTIwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTE4OCw4ICsxMTg4LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBp
ZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWlu
UmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVy
KGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFh
NzBlZjViYjYuLjRhOGJlZTU3ZmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVy
biBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZl
ckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNS4uMWZmODNlMTFiYzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2
NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVy
Rm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDA3YjE2N2UwZWVlZS4uZDQxNTkwNGM3MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRp
IHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2
b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKQEAg
LTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFn
ZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIu
Z2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkp
OwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1f
YnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWIuLmNjM2IyNGI3MjliMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEzIEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViRnJhbWU7CkBAIC00NSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYg
dXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNv
bnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OS4uZTFlMGU2MTEyYTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2Ut
PnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0g
aW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxLi5kODhmNDRj
ZmNkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTM0MCwxMCArMzQwLDEwIEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QK
ICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVy
KCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291
cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29k
ZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7Cisg
ICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAog
U3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGIzYjBmYmNjNzZlNi4uYWNl
MjMxNTY2MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMTczOCw3ICsxNzM4LDcgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJl
cXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRh
SW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBz
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVy
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNz
aW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVy
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNz
aW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgdm9p
ZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25v
dyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBm
cm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55
IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgq
dGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5j
b250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0
RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CisgICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVl
c3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNv
bnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRF
bmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgp
KTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KICAgICBGcmFtZUxvYWRS
ZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVz
dCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAtMzg2MSw3ICszODYxLDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9w
dGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdpblZp
ZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKSkK
ICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsKQEAg
LTM4NzcsNyArMzg3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJhY2so
ZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRl
ciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFs
b2FkZXIpCkBAIC0zODkyLDcgKzM4OTIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogCiB2
b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4m
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJh
bWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAg
ICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVm
ZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVS
TCk7CkBAIC02OTc3LDcgKzY5NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lv
bkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlm
ICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNp
b24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEp
IG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
aWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggMzVjMjNmZTYwMmViLi5mNmRkZDc4ZWExOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwog
Y2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTEz
OTYsNyArMTM5Niw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQg
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHJlcXVl
c3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5k
aWYKIApAQCAtMTU5OSw3ICsxNTk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VG
b3JGcmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2
aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vz
c2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxs
b3cpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29y
ZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25z
dCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAK
ICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggYzk1YzM4NDYzOTIyLi44NWU2NTE4NjkyZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBA
IC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQo
dWludDMyX3QgYWN0aW9uKQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3du
Y2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAg
ICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJ
bWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdl
OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRl
eCBkNDEyODJmYzVkYzYuLmYzZWRjMjkxZmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUo
KSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3Io
KS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8g
c2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXgg
ZDNkMzhjYWM0MTIxLi4zN2YyN2U5NTJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hh
ciogbmFtZSkKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZDc3
NmU4MmRmMTMyLi4zNzc3ZjJhNTZiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQK
KyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVy
IHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgorCiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1w
b3RlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGlu
Z0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxl
LmgKaW5kZXggMWY1NTg0ZmEzODdkLi5hMjU1NjBhMTBjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHBpbmdMb2FkQ29t
cGxldGUoeyB9LCByZXNwb25zZSk7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAg
dm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAg
ICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZS4uNWY2MTAyMTk2YTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTItMDMgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVk
QnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJl
IHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1No
YXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFs
CisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdl
YlZpZXcvV2ViUmVzb3VyY2UubW06CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisg
ICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9N
SFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3Vy
Y2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgor
ICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRl
bSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVz
b3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6
CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTAyICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQ
VV0gSG9vayB1cCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYy
NjZkZi4uNjM1NWI2ZjkwMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilk
YXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJh
d0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEo
KTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEt
PmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5n
ICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3Ni4u
OTU5ZDc0OGI1NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYp
PiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAg
ICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOS4u
YWEyY2M5ODE0NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjAxMiw3ICsy
MDEyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVI
YW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVO
U0RhdGFBcnJheSgpOwogICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5
LmdldCgpKQpAQCAtMjA5NCw3ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAg
ICAgICAgfQogCiAgICAgICAgIG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVu
dExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBidWZmZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBmaW5pc2hlZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIxMzEsNyBAQCBzdGF0
aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBz
aXplKQogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciog
aWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29u
KFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQogewogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwLi41MjdmYTU1MjE5MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBp
bnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBm
YzA3NzZlNjJkNjYuLjM5ODY4NTlmNzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQpAQCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5
cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2lu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5
cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxLi44M2U4NTkx
NDM0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KQEAgLTQ2MCwxMCArNDYwLDEwIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0Rh
dGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291
cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4p
cmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2Li4zOGQ3ZTUz
MmQ2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5T
YXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYg
KFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBT
aGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9k
b2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNl
ZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBh
cnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
LmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTguLjI4ZDg3NTkyOWNjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0z
NTQwLDggKzM1NDAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJl
TWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlm
IChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAg
ICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRo
RGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+
c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1z
IGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVm
ZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5z
ZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOC4uYWFkY2ZiZmVhMzU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAg
LTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVy
ICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7
CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAg
IAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7
CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0
ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0
YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2Ut
Pm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2Rp
bmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAg
ICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9
Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtl
eV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291
cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVz
b3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6
V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRF
bmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3
ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVz
b3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBf
cHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4ICszNjcs
OCBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2RpbmcuaXNWYWxp
ZCgpKQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAot
ICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9w
cml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29k
aW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVE
YXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7
CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJl
c291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3Jl
RGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29y
ZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCAwMmU5NDZiYzFmYjAuLjg5ZDM0ODg2NDYzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBj
bGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAg
ICB0eXBlcy4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgICogTWVtb3J5
U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViRnJh
bWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmNw
cDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1l
Ojpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJk
YXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3Ry
ZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAq
IE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
QXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAg
ICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIgTG9jayBBUEkg
d29yayBhY3Jvc3MgbXVsdGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNS4uMDg5N2M3YzA1NDhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3
IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0q
KiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RF
RDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VD
b250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3Vy
Y2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50
YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEw
YTEzMzZlLi41NThlMTNjN2YxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAK
QEAgLTU1OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0
XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBX
ZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RS
IG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWls
aW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1l
LCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVT
dHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5
cGUpCkBAIC01ODUsMjEgKzU4NSwyMSBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVT
VUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIg
bWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewot
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBp
ZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CiAgICAg
ICAgIGlmICghc3RhdC5jYlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewog
ICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7
CiAgICAgICAgICAgICBVTE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9l
cyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhl
IFNoYXJlZEJ1ZmZlcgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNz
IGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRo
aW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAg
ICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVk
QnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVm
ZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShz
aGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsK
KyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
TmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiLi5mYTljMzgxY2M1NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVP
d25lckVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNl
RXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogfQogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJl
ZjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAg
dm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwg
X0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwg
QlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4
dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7
CiAgICAgdm9pZCBzZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHBhZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNp
emUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5v
dCk7CiAgICAgdm9pZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NC4uMjc0Yjdk
MmQ2Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsx
NjUsOCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNv
bnNpZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rp
b25hbGl0eQotV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVz
b3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lU
X0FQSSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
SW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7
CiAgICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OTQ4
YWYxOTg3YmYuLjFjZTdkMGE0MzczYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBj
bGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAg
ICB0eXBlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2lu
L1Rlc3RXZWJDb3JlU3R1YnMuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0Mgor
ICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisy
MDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBv
bmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAy
MS0xMi0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmls
dGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDg1ODNiMjlhZDk5MC4uYjg0N2QzYTgyNmIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9p
ZCBjcmVhdGVUZXN0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOwogfTsKIAotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1U
ZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorLy8gRklYTUU6IFJl
ZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCBhcyBh
IHNpbmdsZSBjbGFzcy4KIGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4
IGQyM2Y3ZTFlNzI5ZS4uZWEyYWUyYzdlOGIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0xOTksNyArMTk5
LDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICAg
ICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xv
YmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlz
cGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3Bs
YXlMaXN0SXRlbSkgY29uc3QgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpbmRl
eCA9IG1faXRlbXMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoc3RkOjpnZXQ8
U3Ryb2tlUGF0aD4oZGlzcGxheUxpc3RJdGVtKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4Mi4uMTdj
ZTg3OTQxYmE4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDEsODAgKzQx
LDc1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3Np
bmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0
aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9O
VUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZm
ZXIpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmco
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUp
CitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09m
RXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgo
KSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsK
KyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5
QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0Nv
bnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNU
X0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkg
PT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgp
LCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAg
ICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9U
UlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIu
Z2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBh
cHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwot
ICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXpl
KCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBF
Q1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSldKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVm
ZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1
ZmZlcikKIHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3RE
YXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3Js
ZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBl
Y3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENv
bmNhdGVuYXRpb24pKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEo
MHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikp
OwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdU
Rk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
OwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTMxLDcgKzEyNiw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyVGVzdCwgY29weSkKIHsKICAgICBjaGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGlu
dGVnZXIgZXJvcyB0aW5jaWR1bnQgYSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1
ZSBtYWduaXMsIgogICAgICJldCBtb250ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVs
aXQgdHVycGlzLCBkYXBpYnVzIGludGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMs
IgpAQCAtMTUxLDE3ICsxNDYsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAg
ICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2Fn
aXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgog
ICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRp
Y3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRh
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIx
LmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8v
IHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0g
MHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJl
ZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgp
KTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+
ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShs
ZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25l
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVy
Mi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVD
VF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cg
ZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5
KCkpOworfQorCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7
CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFM
U0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5
KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5w
dHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQg
dGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwg
c3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVz
ZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVD
VF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNF
bXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3
MCArMjA0LDgwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1
ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0
U29tZURhdGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRh
KQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAg
IFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1
aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMx
KSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycs
ICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAg
IAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVE
YXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBp
amtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRT
b21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAg
ICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hp
amtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNv
bWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNo
ZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1
ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRh
dGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6
ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlq
a2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAg
Y2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIp
OworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNo
ZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBF
WFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRh
dGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIo
bC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
aXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8p
CiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYg
Y29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0
byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgp
OwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycs
ICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2Mn
LCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7
CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAn
ZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VR
KG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdl
dCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7
J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOwor
ICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdj
JywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEo
bWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7
CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4
NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVy
ID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJp
bmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVh
cigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsK
ICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBh
IHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFy
ZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVm
ZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAg
ICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2
ICsyOTAsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxl
VGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlz
TnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsK
IAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFy
ZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRC
dWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAg
RVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNr
KGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTI2Niw3ICszMDgs
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBU
LCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0g
KSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8
U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBh
cmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZv
aWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJv
b2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBT
dHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4x
RmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0yOTksNyArMzQxLDcgQEAgc3RhdGljIHZv
aWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBz
dGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5j
bHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFy
ZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVh
ZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkp
OwpAQCAtMzEzLDIyICszNTUsMjQgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVz
dCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1
NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7CiAgICAgY29uc3Qg
Y2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAg
IGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8g
Y2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAg
ICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlz
Iik7CiAKICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4
U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC0zNTgsMjIgKzQwMiwyMyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0
KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBs
ZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwor
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAg
ICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAx
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNp
bXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihz
aW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwg
c3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2Vn
bWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhl
IG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtd
KFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxT
dHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3Mx
V2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAi
Y3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtz
KCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVu
dCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIp
OwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsK
KyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1
ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBF
WFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2so
YnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0
LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1Mi4uZDAzNDFh
ODFkZWRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFp
blRocmVhZCgpOwogCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0
VXAoKQogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6
OlRlYXJEb3duKCkKIHsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRo
KTsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0
LmgKaW5kZXggNjQwMTE5YmRlNmZjLi5hMzkyYTA1MTk0NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaApAQCAtMjksNyAr
MjksNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcAppbmRleCA3YTMyMDdmOTVjNjIuLjg1ODI4ZjAzOTIyNCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBn
bG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVy
Q2FwYWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVt
T3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1My4uYzNi
NWQzZThkN2MwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSwxOSArNDUsMjAgQEAgc3RhdGljIHZv
aWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNB
cnJheTxOU0RhdGEgKj4KICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVOU0RhdGFBcnJheSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEg
XSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpA
QCAtNjYsMzUgKzY3LDM1IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFB
cnJheSkKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFG
b3JEYXRhU2VnbWVudCkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRh
Lmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRn
ZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdl
IENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9
IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRT
aXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNV
SW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBi
dWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgp
KQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRh
KCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAg
IEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAg
TlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAg
ICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRv
IGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAg
ICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlz
RXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAg
cG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1
dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAg
ICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRT
aXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBp
c0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGlu
Z11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCmluZGV4IDQ2Yzc2
MjAzZTFiMi4uNWJlNjY1OTQ2MTM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dp
bi9UZXN0V2ViQ29yZVN0dWJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0
V2ViQ29yZVN0dWJzLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291
cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKQogewogICAgIHJl
dHVybiBudWxscHRyOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446156</attachid>
            <date>2021-12-07 04:19:01 -0800</date>
            <delta_ts>2021-12-07 17:34:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233923-20211207231859.patch</filename>
            <type>text/plain</type>
            <size>5669</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUxODYwZTlmMWY4NWQy
NTUyYTZlYjkzNWQ4MmFmNGQ0YzgwOTdiYi4uYjc1MzlhYzY4MTM4Y2EwM2VlNzA3NzIzOTBmMGVm
MmYwMjJiNDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTEyLTA3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBQcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIgbm90IG1vZGlmeSB0aGUgU2hhcmVkQnVmZmVyIG9uY2UgcmV0dXJuZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzkyMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0
Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
Ojp1cGRhdGVNYWluUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXJQcm92aWRlci5oOgorCiAyMDIxLTEyLTA1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CiAKICAgICAgICAgU291cmNlQnVmZmVyUGFyc2VyIHNob3VsZCBiZSB1c2luZyBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaAppbmRleCA2NmI5MzU4ZWM1MzExMTQ4NDgyMmE3Y2MyNGU3ZjNhOTkx
NzA2NWE4Li44NjQwOWY2MDA2ZDdjOTQ5OGUyYjBmODU2NDJhMjJhYzQyYTY1MTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtNjcs
NyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252
ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252ZXJ0
ZXJQcm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0
ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3Vy
Y2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJl
ZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA2MWNjNmRkNDIzODlkYWI2
N2I0OTU0OTY1NGRlZjgxYzJlZjQ1YTFkLi40YjJlMzRkYWRiZTk3ZmMxY2Y2ZTY4NTA2MDE4YmFm
YmI1NjNjOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsK
LSAgICBtX29yaWdpbmFsRGF0YS0+ZW1wdHkoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQo
KTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZl
cnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRl
ci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0yMjQsMTAgKzIyNCwxMCBAQCB2b2lkIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmll
d0NvbnZlcnRlciYgYwogICAgIG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3Zp
ZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZl
cnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3Zp
ZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZl
cnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIs
ICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3Jp
Z2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5h
bERhdGEtPnRha2UoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3
TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRl
cjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZl
cnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xp
ZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+
cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KKyAg
ICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
IH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNp
ZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxk
RGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDYzMWFkZTdjY2Y3
YWQyOTY5M2EyZTc2NTFmZTZhOWNkZWJkMzc3M2EuLmJmY2UxMWE4YmY5ZTI5MjcwNzgxZTZhZTY4
ZGM1YmJmYjI5YzEwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuY3BwCkBAIC04MiwxMSArODIsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0
ZU1haW5SZXNvdXJjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm92aWRlci0+
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoKnRoaXMsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byBidWZmZXIpIHsKLSAgICAgICAgaWYgKGJ1
ZmZlcikKLSAgICAgICAgICAgIGFwcGVuZEZyb21CdWZmZXIoKmJ1ZmZlcik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGRpZEZhaWxVcGRhdGluZygpOworICAgIHByb3ZpZGVyLT5wcm92aWRl
TWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcigqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgIGFwcGVuZEZyb21C
dWZmZXIoV1RGTW92ZShidWZmZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAppbmRleCBiOTg2ZWU0MGQx
OTc1MTc0ZjU0YWQyOWExNjhjYWRmMTg5NDU2YzNhLi5hYjcwMDRiZTkzMWYwMDNhNjk2Zjg4OTc2
YjZiNTQwZjgyMjRmNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyUHJvdmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIDogQ2FuTWFrZVdlYWtQdHI8UHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyPiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVzb3Vy
Y2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29u
dmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446266</attachid>
            <date>2021-12-07 17:34:26 -0800</date>
            <delta_ts>2021-12-09 06:36:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233923-20211208123425.patch</filename>
            <type>text/plain</type>
            <size>5711</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjUxODYwZTlmMWY4NWQy
NTUyYTZlYjkzNWQ4MmFmNGQ0YzgwOTdiYi4uZmI5OWFiYmE4MjIxZDc1MzViYjA0ODhhOGY0OTM4
MmE5ODBkZjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEyLTA3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBQcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIgbm90IG1vZGlmeSB0aGUgU2hhcmVkQnVmZmVyIG9uY2UgcmV0dXJuZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzkyMwor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84NjE0OTg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgQVBJIHRlc3RzLgor
CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNl
Rm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgor
CiAyMDIxLTEyLTA1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgU291cmNlQnVmZmVyUGFyc2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAppbmRleCA2NmI5MzU4ZWM1MzExMTQ4NDgyMmE3Y2MyNGU3ZjNhOTkxNzA2NWE4Li44NjQwOWY2
MDA2ZDdjOTQ5OGUyYjBmODU2NDJhMjJhYzQyYTY1MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgotICAg
IHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZl
cnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29u
dmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dv
cmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29u
dmVydGVyPiBtX2NvbnZlcnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbQppbmRleCA2MWNjNmRkNDIzODlkYWI2N2I0OTU0OTY1NGRlZjgx
YzJlZjQ1YTFkLi43M2JiY2UwMjI3YzUwZTgzNmU1YjVjMjBiMWExMjZkZjhmNTEyYTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFs
RGF0YS0+ZW1wdHkoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJj
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1f
Y29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9u
c2UoKSB9OwogCkBAIC0yMjQsMTAgKzIyNCwxMCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwog
ICAgIG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VG
b3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VG
b3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0g
bV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQo
KS5nZXQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmNvcHkoKSk7
CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZh
dWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2
aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmll
d0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJl
c3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9j
b252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9
Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KKyAgICAsIG1fb3JpZ2luYWxE
YXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fcmVz
b3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVM
b2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVm
b3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDYzMWFkZTdjY2Y3YWQyOTY5M2EyZTc2NTFm
ZTZhOWNkZWJkMzc3M2EuLmJmY2UxMWE4YmY5ZTI5MjcwNzgxZTZhZTY4ZGM1YmJmYjI5YzEwMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC04
MiwxMSArODIsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm92aWRlci0+cHJvdmlkZU1haW5SZXNv
dXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfV0oYXV0byBidWZmZXIpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAg
ICAgIGFwcGVuZEZyb21CdWZmZXIoKmJ1ZmZlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGRpZEZhaWxVcGRhdGluZygpOworICAgIHByb3ZpZGVyLT5wcm92aWRlTWFpblJlc291cmNlRm9y
UHJldmlld0NvbnZlcnRlcigqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9XShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgIGFwcGVuZEZyb21CdWZmZXIoV1RGTW92ZShi
dWZmZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAppbmRleCBiOTg2ZWU0MGQxOTc1MTc0ZjU0YWQyOWEx
NjhjYWRmMTg5NDU2YzNhLi5hYjcwMDRiZTkzMWYwMDNhNjk2Zjg4OTc2YjZiNTQwZjgyMjRmNzBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyPiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlclByb3ZpZGVyKCkgPSBkZWZh
dWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29u
dmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRl
TWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2
aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikg
PSAwOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446267</attachid>
            <date>2021-12-07 17:35:50 -0800</date>
            <delta_ts>2021-12-09 06:36:30 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>755366</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0Li43MDgwYTZjZjdhNmQgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFy
dCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
Y29kZXJUZXN0L0RlY29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0x
MS0yMSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1Bl
cmZvcm1hbmNlIHRlc3RdW2Nzcy1jb250YWluXSBBZGQgY2FzZSB0byB0ZXN0IGNvbnRhaW46IGxh
eW91dCBpbnNpZGUgYSBjb21wbGV4IGRvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCBiYTJiZTEzOTE2MjguLmQxNzI0MjAxNWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIg
dG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAzICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHJ1Y3R1cmVJREJsb2IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2Nh
MmMyMzNhOC4uYjQ2OTNmOTFjNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVy
Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgLy8g
T25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
IGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9y
IHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXpl
X3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyNWEwODI0YmI3YzcuLmZiOTlhYmJhODIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEwNTAgQEAKKzIwMjEtMTItMDcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciBub3QgbW9kaWZ5IHRoZSBT
aGFyZWRCdWZmZXIgb25jZSByZXR1cm5lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTIzCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2MTQ5ODUw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
bW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdM
b2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZp
ZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisKKzIwMjEtMTItMDUgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBTb3VyY2VCdWZmZXJQYXJzZXIgc2hvdWxkIGJl
IHVzaW5nIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM4NjUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODYw
ODUyNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBvYnNlcnZhYmxlIGRpZmZlcmVuY2VzLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpT
ZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6
c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21l
bnQ6OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpT
ZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKworMjAyMS0x
Mi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFt
ZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1
ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVp
ciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgUmVuYW1lIG9ubHksIG5vIGNoYW5n
ZSBpbiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICog
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNv
dXJjZS5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVk
aXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9XZWJD
b250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
Lmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29udGVu
dFJlYWRlckd0ay5jcHA6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAg
ICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAgICog
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdC5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVS
ZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAg
ICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJveHkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZv
cm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4u
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVD
YWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZU1vY2suY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVy
UE9TSVguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKiB0ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5
Lmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVm
ZmVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAg
ICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIsIGEgU2hh
cmVkQnVmZmVyIGNhbiBub3cgb25seSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAgIGEgU2hh
cmVkQnVmZmVyQnVpbGRlci4gQSBTaGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUgb25jZSBj
cmVhdGVkLgorCisgICAgICAgIEZseS1CeTogUGFzcyBTaGFyZWRCdWZmZXIgdmlhIGNvbnN0IHJl
ZmVyZW5jZXMgb3IgcG9pbnRlcnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRvIGRvIHNvLgor
ICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVs
RWxlbWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6cmVzb3VyY2VEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjphcHBlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxl
U2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNo
ZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJl
c291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlU
b0NsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6dGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5p
dERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJv
ZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9u
c2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKToKKyAgICAg
ICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OlNjcmlwdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNT
aW5nbGVGaWxlTWFwcGVkU2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1
ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9u
dExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
Rm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1
ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1Z
dmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRp
Z3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUg
aW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNvIGNv
dWxkIGJlIG11dGF0ZWQgd2hpbGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2lyYWJs
ZQorICAgICAgICBiZWhhdmlvdXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyIHdoaWNoIGd1YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAgICAg
ICAgb2YgY29udGlndW91cyBkYXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxkIGhh
dmUgbXV0YXRlZCBhIFNoYXJlZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAgICAg
ICAgbW92ZWQgdG8gQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdoZXJl
IFNoYXJlZEJ1ZmZlcnMgd2VyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21lbnQg
d2hlcmUKKyAgICAgICAgY29udmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAg
ICAgICAgUHJldmlvdXNseSwgYSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0ZW5l
ZCBvbmx5IGlmIGl0IG5lZWRlZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBkYXRh
IHdhcyBnb2luZyB0byBiZSBhY2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAgICAg
IHRoZSBjb252ZXJzaW9uIGlzIG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0byBt
YWtlQ29udGlndW91cy4KKyAgICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYgdGhl
IFNoYXJlZEJ1ZmZlciBiZWluZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFyZWRC
dWZmZXIgYmVpbmcgc2hhcmVkIGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVzZXJz
IGl0IHdhcyBuZWNlc3NhcnkgdG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBiZWlu
ZyBwZXJmb3JtZWQKKyAgICAgICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisgICAg
ICAgIFdoZW4gdGhlIGZsYXR0ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVkQnVm
ZmVyIGNyZWF0aW9uIHBvaW50cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVudGlm
aWVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRoZSBl
bmQsIHRoZXJlJ3Mgbm8gbW9yZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25zIHRo
YW4gdGhlcmUKKyAgICAgICAgd291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAg
ICAgICAgVGhlcmUncyBhIHBvdGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5IHVz
YWdlIHdpdGggdGhlCisgICAgICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNzOyBi
dWcgMjMzNTExIGlzIHRyYWNraW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2UgaXMg
ZXh0ZW5zaXZlLCBjb2RlIGNvdmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9yb3Vn
aAorICAgICAgICB3aGljaCBtYWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5Lgor
CisgICAgICAgIEluIGJ1ZyAyMzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBjb21w
bGV0ZWx5IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBj
aGFuZ2UuCisgICAgICAgIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJIHRl
c3RzIGNyZWF0ZGVkLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRp
emVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0
cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjprZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXJpYWxpemVJREJLZXlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlz
dHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRl
eFJlY29yZEZvck9uZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5l
Y2Vzc2FyeSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBNb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9t
b2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAgICAg
IChXZWJDb3JlOjp3cml0ZVRvVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VP
blN0cmVhbWluZ0FjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9D
U1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVu
dEZvckVsZW1lbnQpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAoZmls
ZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRS
ZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhB
dHRhY2htZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVj
dG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICogaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250
ZW50KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpw
YXJzZWRBcmNoaXZlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YnVmZmVyRnJvbVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlRnJvbVNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmNyZWF0ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNo
ZWNrTm90aWZ5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3Vt
ZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAg
ICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZV
UkxDYWNoZWRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpy
ZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJT
dHlsZVNoZWV0IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6CisgICAg
ICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6
CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVEYXRhUmVhZGVyOjpTaGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXll
ZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3Vz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25l
U2VnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhU2VnbWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlz
aEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BORyk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1
cml0eUNoZWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVu
dDpwb3NpdGlvbjpzaXplOl0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRy
YWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmlj
OjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIp
OgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dP
RkYpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlSlNPTlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFw
cGVuZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RNYXBw
ZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptYXJrdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0Q2Vu
Y0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm86OmdldEl0YWxpY0NvcnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6Ok1hdGhHbHlwaEluZm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFy
dHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVj
dGlvbjo6Z2V0U2l6ZVZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhDb25z
dGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0
aEdseXBoSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxl
OjptYXRoVmFyaWFudHMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRh
dGVUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1ZhbGlk
RW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6
Z2V0Q292ZXJhZ2VJbmRleCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lRm9u
dCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3ZlcmFn
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6OmdldFN1
YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cExp
c3Q6Omxvb2t1cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZVRh
YmxlOjpnZXRHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OkZlYXR1cmVMaXN0OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BlblR5cGU6OkxhbmdTeXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6U2NyaXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExpc3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZUxp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9va3Vw
TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpkZWZh
dWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxl
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6
OmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRIbXR4VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjps
b2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE6OnNldEN1c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YTo6Y3VzdG9tRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElD
Q1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJv
ZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZl
ckF0UHJlZmVycmVkSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVQYXN0ZWJvYXJkSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgt
W1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3Vy
bERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6
c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
U2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpl
bnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJG
ZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6
OnJldHJpZXZlKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9jTG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgor
CiAyMDIxLTEyLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXNlIGVuZCBiaXRzIGluIHRleHQgYm94IGl0ZXJhdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKaW5kZXggMzM1NGI1MmE1MGNiLi5kYTMzNmU2ZjVi
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
aAppbmRleCAyYjYyNjI4NDE5YjAuLjZlMjIwNDhjZjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERv
Y3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogc3RydWN0IENsaXBib2FyZEltYWdlUmVhZGVyIDogUGFzdGVib2FyZEZpbGVSZWFkZXIg
ewogICAgIENsaXBib2FyZEltYWdlUmVhZGVyKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRG
aWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAK
ICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0g
ICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50
OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjAuLmVmZjEwYjViNjVmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIx
Niw4ICsyMTYsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9r
ZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVy
LT5kYXRhKCk7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0
YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53
cml0ZVN0cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAg
ICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oZGF0YSkuY29weVJlZigpKTsKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAg
Y3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
NjUsOSArMjY1LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlw
Ym9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBl
ID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0g
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2Rh
dGEpKSB7Ci0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZy
b21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkg
eworICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmlu
Zzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
bV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+
KG1fZGF0YSk7CiAKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQog
ICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1
ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIo
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRp
emU7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAg
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAg
ICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2Rh
dGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmlu
ZGV4IDJjYzJjOGUxYTU0ZS4uMzdjODI1ZTIzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21p
c2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9
IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZm
ZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJl
YWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVM
b2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTIuLjI3NGUwMzhkNDE4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVh
ZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lv
cy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEg
PSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9y
ZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1l
VHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmlu
ZGV4IGI0YzMxY2E1MDYzOS4uMzgyMWIwMzcxODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2Fy
ZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMywxMCArMzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWlt
ZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tO
U0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRo
RGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpu
aWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRh
dGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24g
cmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRp
ZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4
IGU2Y2MxYWFlNzgzYS4uZjA1YzIzMzA3YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFs
bChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0
YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCBy
ZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJl
Y2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3Jk
UG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7
IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3Bv
bnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFz
a0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwg
cmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxs
KFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRh
LmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVj
b3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2Us
IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAg
LTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNl
Qm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAg
IGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3Zl
KGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1v
dmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVl
c3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UK
IAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAg
YXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYu
Y29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBy
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2
aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11
dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6
cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERP
TVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0g
cmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNo
dW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RG
TW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRh
KFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzLi5jMGY4
MDMyYjA0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9u
c2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKICAgICB9LCBbXShj
b25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAg
ICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigp
OyAvLyBTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlz
LgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAg
ICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDI4
NTBkYmExZTNiZi4uOWQxYmM2NzRmYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBib29sIENETTo6c3Vw
cG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAog
ICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVz
KCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RN
OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBD
RE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gSW5pdERh
dGFSZWdpc3RyeTo6c2hhcmVkKCkuc2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXRE
YXRhKTsKIH0KIAotYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorYm9vbCBDRE06OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlICYm
IG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQog
ewogICAgIGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ4YTRiM2FmMTJmMS4u
ZDdiMWQ1M2QwNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2
YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
Q0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETT4s
IHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNzMsMTAg
KzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIxZTUyZjRi
NzE0Zi4uNDEwZWQyZmI2NDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTM2LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUNsaWVudCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1DbGllbnQo
KSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1l
UGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5y
ZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYi4uNmY4ODhlMTc4NThkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAKQEAgLTU0LDEzICs1NCwxMyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVp
bnQzMl90IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5
L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkg
fTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAg
IGlmICghdmFsdWUpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAg
ICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRzQXJy
YXkpIHsKICAgICAgICAgYXV0byBrZXlJRCA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBp
ZiAoIWtleUlEKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAg
IHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5o
dG1sI2Zvcm1hdApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9IEpT
T046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVmZmVy
LnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lkc0Fy
cmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAotc3RkOjpvcHRp
b25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVn
aXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBG
b3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1h
dC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTUxLDkgKzE1
MSw5IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9u
U3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hlczsKIH0K
IAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lz
dHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVn
aXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAKICAgICBhdXRvIHBzc2hC
b3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhidWZmZXIpOwogICAgIGlmICghcHNzaEJv
eGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uCiAgICAgcmV0
dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6
c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlE
IGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3Rl
bQpAQCAtMTk1LDcgKzE5NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0
cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4g
YnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
V2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICAvLyBDaGVjayBpZiB0aGUgYnVmZmVyIGlzIGEgdmFsaWQgV2ViTSBp
bml0RGF0YS4KICAgICAvLyBUaGUgV2ViTSBpbml0RGF0YSBpcyB0aGUgQ29udGVudEVuY0tleUlE
LCBzbyBzaG91bGQgYmUgbGVzcyB0aGFuIGtXZWJNTWF4Q29udGVudEVuY0tleUlEU2l6ZS4KQEAg
LTIwNSwxMCArMjA1LDEwIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdl
Yk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7
CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKKyAgICBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwogICAgIGlm
ICghc2FuaXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0y
MzMsNyArMjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgpCiAKIElu
aXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERh
dGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5z
YW5pdGl6ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0K
IAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lz
dHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAg
IGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5oCmluZGV4IGNkMTM4N2E2YmQwMy4uNzdkNjA0YjA4YmI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRh
UmVnaXN0cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJl
Z2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERh
dGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAg
IHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUlu
aXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFy
ZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0
aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVk
QnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5j
dGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rp
b248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRh
Q2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNr
IGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+
Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5j
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0
YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyLi4xNDc3NmMy
MDE1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIE1lZGlh
S2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0
YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlk
ZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8g
MTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlwZSwgcmVq
ZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAvLyAx
MC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVk
IHZlcnNpb24gb2YgaW5pdCBkYXRhLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERh
dGFUeXBlLCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEo
aW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAgICAgLy8gMTAuMy4gSWYgdGhlIHByZWNl
ZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlw
ZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZEluaXREYXRhKSB7CkBAIC0yMjMsNyArMjIz
LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0RGVjcnlw
dFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVl
c3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEu
cmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8U2hhcmVkQnVmZmVy
PiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVh
bGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0
YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Np
b25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCks
IFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIg
PSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZm
ZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA2LiBSdW4g
dGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3Bv
bnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAg
ICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNh
bml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNw
b25zZShyZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVz
cG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwg
b3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEg
bmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2Ug
fHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgewpAQCAtNjAxLDcgKzYwMSw3IEBAIHZv
aWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAgICAgICAv
LyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAg
ICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nl
c3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBp
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBt
ZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFi
bGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNz
aW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAvLyA1
LiBSZXR1cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNz
YWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
bWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1l
c3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBtZXNz
YWdlKQogewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2ZW50CiAgICAgLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jcXVldWUtbWVzc2FnZQpAQCAtNzE2
LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIH0pOwogfQogCi12
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpz
ZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwg
bWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAzZDk2Zjg4MDJlNzQuLjM2NWFjZTVjMDk1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIENETTsKIGNsYXNzIERl
ZmVycmVkUHJvbWlzZTsKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwOwogY2xhc3MgTWVkaWFLZXlz
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5OwogCkBAIC04
NywyMCArODcsMjAgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Qcm9t
aXNlUHJveHk8SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7IHJl
dHVybiBtX2Nsb3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0dXNlczsgfQorICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KIAogICAgIHVuc2lnbmVkIGludGVybmFsSW5zdGFuY2VT
ZXNzaW9uT2JqZWN0UmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlU2Vzc2lvbi0+
cmVmQ291bnQoKTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYs
IFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3Rp
bmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7
Ci0gICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHVwZGF0ZUV4cGlyYXRp
b24oZG91YmxlKTsKICAgICB2b2lkIHNlc3Npb25DbG9zZWQoKTsKICAgICBTdHJpbmcgbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25DbGll
bnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKENE
TU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZv
aWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsKIApA
QCAtMTQwLDEwICsxNDAsMTAgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBlIG1f
c2Vzc2lvblR5cGU7CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8Q0RN
SW5zdGFuY2VTZXNzaW9uPiBtX2luc3RhbmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1fZmlyc3REZWNy
eXB0VGltZSB7IDAgfTsKICAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsKLSAg
ICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1f
c3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVzaW5nIERpc3BsYXlDaGFu
Z2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxheUlEKT47CiAgICAgRGlz
cGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYy4uMzk4ZThhYjFiNjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3Rh
dHVzTWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0
dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwog
fQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxl
bmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEo
KSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlT
dGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3
IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUs
IE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5z
aXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0
dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1
cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmQuLjYwZDYyYWFmZjgwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcCA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggODNi
MjRhY2VhYTViLi4zNjdmMzFkMTg2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29s
IE1lZGlhS2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29uc3QKICAgICAgICAgfSk7CiB9CiAKLXZv
aWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9p
ZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhKQogewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAg
ICBjZG1DbGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZl
ZChpbml0RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA3YjU5YTNiYzZkMjIu
LjkxYTFhMDcxMTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRp
YUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJz
aXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBS
ZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGll
bnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3Rl
ZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjYu
LjAwMzkzMDJmN2RjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRj
aEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZv
cm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNv
bHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVk
QnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1l
ci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwg
c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ug
d2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBG
ZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQog
ICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAg
ICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1
cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRh
a2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2My
MTZhMDFjZGYuLjIyMTNkNjIzMDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMg
dm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7Ci0g
ICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgcmVzZXRD
b25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVh
ckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBj
bwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAg
ICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHR5
cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHR5
cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9t
aXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSBy
ZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50
VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEu
YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJv
bWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgq
c3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25z
dCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVy
OjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VEYXRhKCk7Ci0g
ICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRl
bnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1E
YXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCiAgICAg
ICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0YT4+KCpmb3Jt
RGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJy
b3IpOwpAQCAtMzI0LDE2ICszMjYsMjAgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1fc291cmNlLT5l
bnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFwcGVuZChkYXRh
LCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7Cisg
ICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRhKSk7
Cit9CisKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZURhdGEoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAtMzQxLDkgKzM0
Nyw3IEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QXJyYXlCdWZmZXIoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1f
YnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsK
LSAgICByZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKS0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzU1
LDcgQEAgUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IEJsb2I6OmNyZWF0ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXpl
ZENvbnRlbnRUeXBlKG1fY29udGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpl
eGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRy
YWN0RGF0YSgpOwotICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRh
KSwgbV9jb250ZW50VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1
ZmZlci50YWtlKCktPmV4dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcg
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2NCw4IEBAIFN0cmlu
ZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwot
ICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2Uo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
Ojp0ZXh0RnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1
cm4gdGV4dDsKIH0KIApAQCAtMzgzLDEwICszODUsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpyZXNldENvbnN1bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJj
ZShSZWY8RmV0Y2hCb2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1v
dmUoc291cmNlKTsKLSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVl
dWUobV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVu
cXVldWUobV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KIAogdm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2Vw
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaAppbmRleCAyYjA1NmYxMjY0M2IuLjg3MWQyYzA4NjMzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsMTAgKzUwLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0g
ICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0
KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVm
ZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQg
c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1
ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJp
dmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsK
ICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAg
ICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4Li4wM2Y4OWI2MWNh
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBA
IC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9h
ZGVyLT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0
YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaExvYWRl
cjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKICAgICBhdXRv
IGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2ZmOS4uNDYxMmQwZTBlM2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zOSwx
NCArMzksMTQgQEAgY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXI7CiBjbGFzcyBGZXRjaExvYWRlckNs
aWVudDsKIGNsYXNzIEZldGNoUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBGZXRjaExvYWRlciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsK
IHB1YmxpYzoKICAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYsIEZldGNoQm9keUNv
bnN1bWVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZldGNoTG9hZGVyKCk7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwogCiAgICAgdm9pZCBzdGFydChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmV0Y2hSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQmxvYiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNGRm
ODQyNmM3MThiLi5lMzhhODNhZGU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0Nh
bGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1
bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3Vv
dXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxi
YWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6
OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0
cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXIt
PnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYy4uY2Y3ODYzMjM5ZmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTM0LDcgKzEzNCw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFC
eUNodW5rQ2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRT
dHJlYW1pbmcoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0
U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRha2VOb3RpZmljYXRp
b25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxiYWNrKTsgfQogICAg
ICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURhdGFDYWxsYmFjaygp
IHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcw
YWE3ZC4uMWE2NmJmODE4MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxp
Z2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBB
cHBIaWdobGlnaHQgewotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsK
KyAgICBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0IGlzTmV3R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOwpAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7
Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhp
Z2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YSho
aWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEp
OwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5
YTYxZTQyNzYuLjVlODBmMGMwNzJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwxNSAr
NDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxp
Z2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cmUg
IChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpv
cHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRh
OwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRS
YW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAg
ICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAqdGhp
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhLi5iNWRhZjYwMjUzOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEgewog
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAgICAgICAgIFN0cmluZyBpZGVudGlm
aWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBI
aWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lk
ZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4Zi4uZTVkZTg0OTRmMzUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgQXBwSGlnaGxpZ2h0
U3RvcmFnZTo6c3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmIHJhbmdlKQogICAg
IG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoV1RGTW92ZSho
aWdobGlnaHQpKTsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Ny
b2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGln
aGxpZ2h0IHNjcm9sbCkKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9s
bFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Ny
b2xsVG9IaWdobGlnaHQgc2Nyb2xsKQogewogICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
ID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKICAgICBpZiAoIWFwcEhp
Z2hsaWdodFJhbmdlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCBiMTUyZjc2ZWQ0MjQuLmUyNzY2MzNi
NDg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNS
YW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
fkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVB
cHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3Jv
bGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xs
VG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGln
aGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAg
IE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUo
KSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3Li4yN2NkOGVl
YzUzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2
LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2Jq
ZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFu
c2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgo
aW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJB
dHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2Ug
dHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8g
a2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBp
ZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUi
X3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFu
IGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURC
S2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRh
dGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3Mg
fTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAg
aGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5
QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBr
ZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBm
b3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQo
aW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1
ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5
IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3Rv
cmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0
byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICgh
dmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRo
ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUg
c3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+
aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJB
dHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4t
cHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sg
Zm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9y
IGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElE
QlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlv
bik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFi
YXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9z
IH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVj
b3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9Owog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9y
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBA
IC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5
ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5
ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2Vy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1
cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIx
MzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFu
Z2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5
RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0
Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhS
ZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQo
KSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkg
IT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVj
b3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAt
MjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENv
dW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50
ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElE
QktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAg
YXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlm
ICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVw
cGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkg
OiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQg
b3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOS4u
NDg2MTAzNGQzYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBA
IGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5i
aW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93
ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vz
c2FyeSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJl
IHN0YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5k
ZXggMGE0NjliZDBiZDFmLi5jOWQ2ZGE2YmRkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsx
OTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0
YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5l
IFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJs
b2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgp
LCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5p
dCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBC
bG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNi4uMWU5
Yjc0YWIxN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlzcGF0Y2hFcnJvcihFeGNlcHRpb24mJik7CiAKICAgICBlbnVtIGNsYXNzIFRha2VQcml2
YXRlUmVjb3JkZXIgeyBObywgWWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgZG91YmxlKT47CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiwgVGFr
ZVByaXZhdGVSZWNvcmRlcik7CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHAKaW5kZXggM2Y0YzliY2QxMzNhLi44NzRhYTdmMGIxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgLy8gU2FuaXRpemUgdGhlIGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJ
bWFnZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNo
ZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwog
ICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFw
SW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiLi5jYzVhODY1NzMwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVl
OwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3
LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNS
YXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVm
ZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAo
bV9pc1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCmluZGV4IGY1
ODI3ZGY5Mzc5NC4uNzM5NDJhODM1OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29u
bmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
IGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1lc3NhZ2Ug
ewogICAgICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIH07CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAgIGJvb2wg
bV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTMuLjNjZWVkMGEwMTFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250
ZXh0SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNz
YWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsm
XShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2Vp
dmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpdGNoT24o
bWVzc2FnZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAg
ICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBb
Jl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYyLi4xMWJkNDVkZTkxNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBA
IC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3Rh
dGU7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAgICAg
fTsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcs
IFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0
YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNp
bmcgUGVuZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVNZXNz
YWdlKFBlbmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZv
aWQgcHJvY2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKaW5kZXggMzA5YzAyNjQzZjVhLi42M2YxYzNjYmUxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVS
TChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZh
bHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
bV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAg
ICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291
cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9y
Q2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEu
cmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAg
ICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpj
cmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCks
IHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFr
ZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJj
ZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJl
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQuLmNlMDA5ZDRlNWVkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3Nv
dXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9y
ZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1
ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxl
dGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5t
bQppbmRleCAzZTgyYWMyMjE2NzkuLjEzMDNlYzRkMjU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJV
U0QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0
L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TVVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxT
b3VyY2UpCiAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJNb2RlbEZpbGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0g
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5k
YXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50
ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsK
ICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRh
dGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNp
bmsuaAppbmRleCAwYjg5OGY2YWRiNTcuLmQ1MTczZmJmOGI0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNz
IFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUy
YzgzZmJkNWMuLmI4Yjc3ODVmOTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUg
QEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNC
dWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkK
KyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsK
LSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUko
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0Fy
ZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAg
ICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5k
TWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0
cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAg
ICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9j
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRT
dHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZm
ZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBt
X2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYg
Kzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZm
ZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7
CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBT
dHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3MzIyNi4uZWYzN2YxZDBj
YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZh
czsKIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBJbWFnZUJpdG1h
cEJhY2tpbmc7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKIAogZW51bSBjbGFzcyBT
ZXJpYWxpemF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZS4uMTA4ZTZjODc2
N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NT
Rm9udFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmls
aXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxl
bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9u
dEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRl
YWM0ZjQxY2Y0Li5jNDJlYzA1MWZlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
CkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5h
bCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRl
bnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisg
ICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlw
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYS4u
YzVlOWUyNmIzNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTMzLDcgKzQx
MzMsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50
SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiB7IGF0dGFjaG1lbnQtPnVuaXF1ZUlk
ZW50aWZpZXIoKSwgV1RGTW92ZShhZGRpdGlvbmFsVHlwZXMpLCBXVEZNb3ZlKGFkZGl0aW9uYWxE
YXRhKSB9OwogfQogCi12b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3Zv
aWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJy
ZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBp
ZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudC0+cmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVk
RmlsZU5hbWUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFm
ZTBiNWUwNDRlLi4xZDA3MTZjNWI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcs
OSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwog
Y2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBD
dXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRp
b247CkBAIC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsK
IGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsK
IGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTYzLDcg
KzU2NCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJl
ZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAg
ICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMC4u
OTU3YjRmZDRhNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2Vu
ZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFn
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1NDllYjdk
MmU0YzAuLjExN2RiYTY4ZWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lk
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBm
aWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmlsZXMuYXBwZW5kKEZp
bGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVm
ZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVj
NTI5ZGQ3YzhlYy4uOWQ4MTYwNWYxOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3Ry
dWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVh
ZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJl
YWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0
b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzguLjA3ODI0ODM2MmFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsx
MjczLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJj
ZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1p
bWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNl
aG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmls
ZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3Jh
cHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1
cmwsIG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RG
b3VuZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxl
V3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5T
CiAKICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAg
ICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJl
Z3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJp
bmcgKmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsK
ICAgICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAg
ICAgICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3Vy
Y2UtPnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50
TG9hZGVyKiBkYXRhU291cmNlLCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBp
ZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0g
ICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYi4uNzZiMWEwMDlkZTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpA
QCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1l
bnREYXRhKGNvbnN0IEZyYW1lJiBmcmFtZSkKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0
aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkU2l6ZSkKIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1l
czo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2
b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3Vt
ZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiBy
ZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0
YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291
cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAg
ICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAt
MzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAg
ICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291
cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyAr
MzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWlt
ZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0
YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZh
bHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudElu
c2VydGlvbkluZm8pIHsKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2
ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMgc3RkOjpvcHRpb25h
bDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93
TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBl
eHRyYWN0TWFya3VwQW5kQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwo
KSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hpdmUpCkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNo
aXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5S
ZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBh
cmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7
IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJp
bmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0
aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09M
aXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRp
YyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50
JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNl
VVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1
cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1l
TWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgp
LnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAg
ICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFy
Y2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNv
bnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwog
CkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICByZXR1cm4g
c2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAq
c3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7
CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVm
ZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
V2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjEyLDEyICs2MTIsMTIgQEAgYm9vbCBXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBy
ZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51
bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJj
ZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjI2LDExICs2MjYsMTEgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVu
dEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAg
IGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3Ry
aW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02MzksMTIgKzYzOSwxMiBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsK
ICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUs
IHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNjUzLDExICs2NTMsMTEgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRl
bnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50
ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2LDcgKzY3Niw3
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZElt
YWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50
ID0gKmZyYW1lLmRvY3VtZW50KCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAKLXN0YXRpYyBS
ZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxIVE1MRWxlbWVu
dD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogICAgIFJlZiBkb2N1bWVudCA9ICpm
cmFtZS5kb2N1bWVudCgpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxl
bWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtODMz
LDcgKzgzMyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZm
ZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVy
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsu
Y3BwCmluZGV4IDYwNDg2ZTcxYWQ1OS4uZDNlOTgxOWJkNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVu
dCA9ICpmcmFtZS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNj
YTQuLmJjYTY2OTZlYmU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAg
Y2xhc3MgQmxvYkxvYWRlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxl
U3RyZWFtOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBFeGNlcHRpb25PcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRR
dWV1ZS5jcHAKaW5kZXggNTU5ZWJjYzQ4YzVmLi40MmY0MTgwZGZhODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lk
IE5ldHdvcmtTZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdlcygpCiAgICAgICAgIGJvb2wgc2hvdWxk
U3RvcFByb2Nlc3NpbmcgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoT24obV9xdWV1ZS5maXJzdCgp
LCBbdGhpc10oY29uc3QgQ1N0cmluZyYgdXRmOCkgewogICAgICAgICAgICAgbV93cml0ZVN0cmlu
Zyh1dGY4KTsKLSAgICAgICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Cisg
ICAgICAgIH0sIFt0aGlzXShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKICAg
ICAgICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KG1fd3JpdGVSYXdEYXRhKTsKICAgICAgICAg
fSwgW3RoaXMsICZzaG91bGRTdG9wUHJvY2Vzc2luZ10oVW5pcXVlUmVmPEJsb2JMb2FkZXI+JiBs
b2FkZXIpIHsKICAgICAgICAgICAgIGF1dG8gZXJyb3JDb2RlID0gbG9hZGVyLT5lcnJvckNvZGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggNTUxZjcw
ZjkxNjdiLi5kMjNjZmViYjQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1Nl
bmRRdWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QmxvYjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1
ZXVlIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygp
OwogCi0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3Rk
Ojp2YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVm
PEJsb2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVT
dHJpbmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzMuLmQyYjg3NDFhMDQ0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6
OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0
RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhv
c3RFbGVtZW50KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2QuLjY2MWRlYzkzNzZkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIEZpbGU7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgUmVuZGVy
QXR0YWNobWVudDsKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChIVE1MQXR0YWNobWVudEVsZW1lbnQpOwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1l
bnQmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKIAog
ICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2Vy
dGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IDUxNzFiOWNkYzc4OS4uMWE1NmJjMDM1OWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJ
Zk5lY2Vzc2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwog
fQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVx
dWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlh
UGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0
YS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCmluZGV4IDY5NTY2OTQ5NjMxMC4uNmMzYjY5M2I3YjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXli
YWNrSWZOZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApp
bmRleCA0NDJkMDk0NmJlMjUuLjAwZDhmMjM5ZDcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50Ojp1cGRh
dGVEdXJpbmdQYXJzaW5nKCkKICAgICBpZiAoIW1faW1hZ2VFbGVtZW50KQogICAgICAgICBjcmVh
dGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCi0gICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCisgICAgaWYgKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
KQogICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+dXBkYXRlQnVmZmVyKCpi
dWZmZXIpOwogCiAgICAgaW1hZ2VVcGRhdGVkKCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJ
bWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIGlmICghcGFyc2VyKCktPmlz
U3RvcHBlZCgpICYmIG1faW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIENhY2hlZEltYWdlJiBjYWNo
ZWRJbWFnZSA9ICptX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5S
ZXNvdXJjZURhdGEoKTsKIAogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbXVsdGlwYXJ0IGltYWdl
LCBtYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBwYXJ0LCBzaW5jZSB0aGUgcmVzb3VyY2UgZGF0
YQogICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0IHBhcnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IGE3Y2E3MTYyZDc5MS4uMTg3OTNmZjA2NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUw
LDcgKzg1MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1
ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2Vu
dC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlm
IChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3Jr
QWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25z
ZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIz
Li5kMjk1NzgxMGQ4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRG
bG93OwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0
UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRp
YyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4
OSw3ICsxMjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRl
cmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0
UmVxdWVzdEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25z
dCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRl
eCA2MWU0YmMzYmEwMTkuLmYwNjQwM2E2MjM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVy
Y2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYgbG8KICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVy
Y2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwg
V1RGTW92ZShoYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5kZXggZjc2MTE0Y2U5OGY0
Li4wN2I0MjFiNTljMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBj
bGFzcyBGcmFtZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVz
b3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsK
LSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0
IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNl
SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsK
IH07CiAKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAg
ICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNl
KSk7CiAgICAgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVu
dGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0Zi4uZjMyZjY2MGI5
MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2lu
Z2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJl
cXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2
NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92
ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250
ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAg
bV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwog
ICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNp
Z25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQog
ICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFC
dWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/
IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXpl
KCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NF
UlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0
YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVs
c2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAg
bV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQog
ewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0g
bV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+
c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQg
PSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaCht
X2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29u
dGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5k
YXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7
Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQog
CkBAIC0yNjcsNyArMjY5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVk
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICByZXNvdXJj
ZURhdGEtPnNldENhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9pZCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNo
YXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAg
ICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQo
cmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExLi5lZTM5
NDU3Zjc2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50
LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQwLDcgKzQxLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBj
bGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC04OCw4ICs5MCw4IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuY29weVJlZigpOyB9CiAg
ICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4mJiBkZWNv
ZGVyKSB7IG1fZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7IH0KIAotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7
IH0KLSAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
IHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYo
KTsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAogICAgICAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgICAgIHZvaWQgc2V0Q2VydGlm
aWNhdGVJbmZvKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNh
dGVJbmZvKSB7IG1fY2VydGlmaWNhdGVJbmZvID0gY2VydGlmaWNhdGVJbmZvOyB9CkBAIC0xMDMs
MTAgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1w
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAgICB2b2lkIHNl
dFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9
IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBoYXNEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzRGF0YSgp
IGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2b2lk
IGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
ICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksOCArMTIxLDggQEAg
cHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgICAgICBTdHJp
bmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVj
b2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hl
ZFJlc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291
cmNlVHlwZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKQEAg
LTE0NCw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFk
ZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVz
b3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCBhZGRS
ZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAg
ICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAg
IFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyLi4xODlmMjZiMDk4YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZv
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQs
IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJj
ZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShj
b25zdAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29k
ZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAg
ICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJh
c2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVu
dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91
bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBk
ZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJj
ZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAg
ICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9
IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwot
ICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZS4u
NmJjZDg3ZGRjZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBi
b29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3Qo
UmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYm
KTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJ
bnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRl
cmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAg
OiBtX29yaWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9j
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9
CkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmln
aW5hbFJlc3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9u
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSkKKyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25k
ZWQpCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+
IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEuLjFiNjQ2YWEyMTczYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcApAQCAtMTAwLDE1ICsxMDAsMTUgQEAgc3RhdGljIGJvb2wgZGVjb2RlQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0
ZXgKIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUq
IGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUt
PmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAK
LWJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8g
YnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRl
eHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIGRh
dGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNv
bnRlbnQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhCiAgICAgaWYgKCFs
b2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KHVybCwgbG9hZGVyLT51cmwoKSkpIHsKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oCmluZGV4IGI1MWFkZGIxYmQ4Zi4uM2Q1ZTU2NmRiZTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3Zlcmxh
eTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdl
bnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQ
YWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90
aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRl
bnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9v
bCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3Ry
aW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRS
ZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVu
dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwg
U3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcg
c291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMuLjZhZTUyNjU5N2NkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAg
IEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3Vy
Y2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNp
emUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVy
LT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0y
NzYsNyArMjc2LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIEFTU0VSVCh3aWxsSGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2Vt
ZW50RGF0YSgpIH07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9Owog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywgc3Rh
dGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJfcyB9
OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNlbWVu
dERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vz
c2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29sPiBs
b2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzIuLjNi
OTBlZjRjNTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0yMTEsNyArMjExLDcgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiAjZW5k
aWYKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9h
ZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+
Y29weSgpOwpAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXli
ZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoKm1fYXJjaGl2ZSk7
CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwogICAgIGF1dG8mIG1haW5S
ZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAgIG1fcGFyc2VkQXJjaGl2
ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0g
bWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgIG1fd3JpdGVyLnNldE1J
TUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5k
b2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5kYXRhKCkuZGF0YSgpLCBt
YWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hp
dmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4g
dHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBE
b2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNl
KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJl
c291cmNlRGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOwpAQCAt
MjI1NSw4ICsyMjU1LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5n
TXVsdGlwYXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2Uo
KTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNl
RGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBj
b21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJj
ZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRp
bmcoKQpAQCAtMjI5Miw3ICsyMjkyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29u
TG9hZGluZygpCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERlY2lzaW9u
Rm9ySWNvbnMoaWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdl
dExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxvYWRJZGVudGlm
aWVyKTsKIApAQCAtMjMxMyw3ICsyMzEzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAg
ICByYXdJY29uTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRl
cjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIFNoYXJlZEJ1ZmZlciog
YnVmZmVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9h
ZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICAvLyBJ
ZiB0aGUgRG9jdW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNv
biBsb2FkcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVCht
X2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1
YzQ2MGU0Li4zMzk4NzNkNWQzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBj
bGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xh
c3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFk
ZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcg
QEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVy
OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzEsNyArMTcy
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5S
ZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAg
IAogICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsg
fQogCkBAIC0zOTIsOCArMzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0
SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lv
bkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxv
YWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5r
SWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MjEsNyArNjIyLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxz
ZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9h
ZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKKyAgICBI
YXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxM
aW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNC4uMDhhMGFl
MTlhMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBA
QCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVk
UmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01X
cmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAt
NzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNz
IENhY2hlUG9saWN5IDogdWludDhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRhLi5lZTlmM2QwYzk4NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFJl
c291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lk
Z2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGFlZjY2OGJk
NjNlZC4uMjlkMmUzZjQ2MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9uczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4
IDYzMzc1NTk2MzIwMC4uNjA0M2FjOWJlMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEy
IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihk
YXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUp
OwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwg
V1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0K
IAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIy
MTUzYzkzZi4uYjUxNzRlZGM5NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAK
aW5kZXggYzYyNzc2ODU4YTZkLi5kOTRiNzAwMDc0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RG
b3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0s
IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciog
YnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RG
b3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxn
b3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYXV0
byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0
QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAppbmRleCBhZWEz
ZGM1N2M4NzguLjgzYjg2MTNjZmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1
LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBw
YXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVy
Kik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNo
YXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFs
Z29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTguLmRmMTM5
NTg4ZThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03
Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3Vy
Y2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwg
UmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0K
ICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExv
YWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9h
ZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYg
ZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9u
cyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0
YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJl
ZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMTg5LDcgKzE5MCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBi
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZWFjaGVk
VGVybWluYWxTdGF0ZSgpKQpAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAgaWYgKGRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJz
dGl0dXRlUmVzb3VyY2UoKQpAQCAtMzI5LDI5ICszMzAsMjkgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNh
bmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
IHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1f
cmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3Vy
Y2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0g
YnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2Up
CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZlcikKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAgICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsKK30KKwogdm9pZCBSZXNv
dXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAgIGlmIChtX3Jlc291cmNlRGF0
YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgaWYgKCFtX3Jlc291cmNl
RGF0YS0+aXNOdWxsKCkpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwogfQogCiBi
b29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAgLTU1MSwx
NCArNTUyLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQog
ewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIp
LCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCiB7Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3Ro
ICpPUiogYSBTaGFyZWRCdWZmZXIuCisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0
IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIEFTU0VSVCgh
YnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4g
dGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4g
ZG8KQEAgLTU3MSw3ICs1NzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAgIC8vIEhv
d2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlz
IHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRo
IGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
ID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAg
ICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/
IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgs
IHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
bGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCkBAIC03MzUsNyArNzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ24KICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiLi41NGIxYjg2
NmRmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9h
ZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxv
YWRlcik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNv
dXJjZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVk
IFJlc291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2
ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmly
dHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0
KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBj
b25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBi
b29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3ICsxMTAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2OSw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRp
b25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9s
aWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IHJlZmVycmVy
UG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3ICsxOTQsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBT
aGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZvaWQgZmluaXNoTmV0
d29ya0xvYWQoKTsKIApAQCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNl
UmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7
CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jl
cXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUg
cmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAg
IFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTEuLjM3ZDBi
YjgyMWFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb24KICAgICBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmll
d0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTQyLDcgKzU0Miw3IEBAIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRy
LCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUp
OwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIApAQCAt
NTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNv
dXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0
YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNv
dXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2Yjlh
YjlmLi44MzJjOWYwZTczZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBs
ZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+
IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25l
KExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRh
LmgKaW5kZXggZjY2MjkyZTMxY2JlLi5hOGE0OWI0N2Y5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2
ZWFsVG9TZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNo
b3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVudChXVEZN
b3ZlKGNvbnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAg
ICAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9u
SGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9
PSBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBjb25zdCBT
aGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0K
KyAgICAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAgIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5j
b2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2
YXRlOgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2Zh
aWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7
IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4Li5jZjJkZTBjNjJkOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDEy
ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAg
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9
KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsg
bV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRh
LmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEu
Y29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
CisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICA6IG1f
dXJsKFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2Up
KQogICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90
ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCA4OWYzYjBmMWRjMzkuLjAzNmVmZDIwZTQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
QEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNo
TG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlm
ZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5p
ZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBh
dXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVS
TCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RS
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0
IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25h
dHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVz
dCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/
Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NS4uNTE5NzhmNDEyMzg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKQEAgLTI1NSwxMCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlubGluZSBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291
cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3Qg
bmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwg
dG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmll
ZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJl
c291cmNlLmRhdGEoKS5jb3B5KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVz
b3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShy
ZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJl
c3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBu
ZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUg
bW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7Cisg
ICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAg
ICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTcuLmI5NjM1NmU3ODU2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xh
c3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xh
c3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3
ZTE3NTYzMDEuLjJiYjNmZTc1Yjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDcg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXBwbGljYXRpb25DYWNoZVJl
c291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitSZWY8QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBV
UkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICBp
ZiAoIWJ1ZmZlcikKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGMKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMIHsgdXJs
IH0sIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpLCBwYXRoKSk7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNp
Z25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkK
K0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgOiBT
dWJzdGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92
ZShkYXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkKQEAgLTUx
LDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2Fk
ZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8g
ZGF0YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1f
cGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1f
cGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApp
bmRleCA4OGM5NGRlMWE3NzQuLmMyODhlNzAzNmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAt
NDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsK
IAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3Qg
VVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGgg
PSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNy
ZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUp
OwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2ln
bmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2ln
bmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBh
dGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5Li43YjJmYjZj
OWMyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAx
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0
YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAppbmRleCAxYjMzYWM5NWJjZGUuLjhjZjA1Y2NlMTg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CkBAIC03ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRh
dGFTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENh
Y2hlUmVzb3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAo
IWRhdGFTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmlu
ZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1
LDcgKzgxNCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1l
bnQtPmJpbmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEs
IHJlc291cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2Io
MSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAg
CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIg
Kzg3MiwxMiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0
ZVN0YXRlbWVudChlbnRyeVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAorCiAgICAgLy8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2Ug
ZGF0YSB0byBhIGZpbGU/IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0
YSBhbmQgZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9y
eToKICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEo
KS5jbGVhcigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5z
ZXRTdG9yYWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjczLDcgKzEy
NzIsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNl
QXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzbwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhdWRpby8iKSB8fCBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKTsKIH0KICAgICAKLWJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBmaWxlRXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgKaW5kZXggOWE5NTMwMDg3NjZhLi40MTAyYTE4MDhiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7
CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRv
VW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwor
ICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0
SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBjMTBhYzdkLi40ZWY5Y2Q2NmJkMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2
LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFy
Y2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYp
OwordHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3Qg
VVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
UmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hp
dmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZl
IGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNo
aXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1
cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxB
cmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8
QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUo
dXJsLCBidWZmZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojpp
c0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWlt
ZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7
CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYg
dXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8
QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5Li41NTY0NTE1Yzll
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
aApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQXJjaGl2
ZUZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXJjaGl2ZU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVS
TCYsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3Rh
dGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IGZjMjBkYTNkYTAzMi4uMDczODM5NGE4Mjg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJj
aGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0
aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0
RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJl
c291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBV
UkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwg
cmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBl
KCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5k
ZXggMjA5ZTk3MTdhZWIwLi4wNTQ4ZWY3MjFlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVS
ZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNy
ZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNw
b25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25v
cmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFy
Y2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIuLjcxMTUwY2JkZDg5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJj
ZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkg
Q0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0
YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAg
ICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5
IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVz
b3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNv
dXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVBy
b3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJj
aGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAg
CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5n
ZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAt
MjE1LDEzICsyMTUsMTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlz
IG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJj
ZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNp
b24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0
VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5u
b3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3Vy
Y2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNv
dXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCkBAIC0yNDgsMjMgKzI0OCwyMyBAQCBSZWY8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZlUmVz
b3VyY2U+JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBk
YXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAg
IGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBD
RkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
UHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxp
c3RJbW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5E
RUJVRwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAg
ICAgICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IEFyY2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwg
YWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwg
TGVnYWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNl
RGljdCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFp
biByZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAg
LTMzMyw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBz
dWJyZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAg
ICAgICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
ICAgIH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qo
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRp
Y3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBhdXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZy
YW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1
YmZyYW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3
IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
SW52YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1h
cmt1cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9u
c2UudXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25z
ZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAg
ICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJh
bWUqIGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICBy
ZXR1cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1
bWVudCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhl
ciBkb2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3du
KS4gCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9c
IiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVp
Z2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQw
OWVjOWY3NWFiYS4uNWEwN2IxMGI0YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVj
dCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJj
aGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRC
dWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBW
ZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExl
Z2FjeVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxi
b29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRl
eCBhY2ZiYmI3MDIwMjIuLmQwMTM5Zjg3YTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2LDcg
QEAgUmVmPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCitS
ZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVh
c29ucyB3ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlmICgh
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJv
dG9jb2woKS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxBcmNo
aXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBk
YXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTUhU
TUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkK
IHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAgICAg
UGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKQEAgLTE2Miw4ICsxNjIs
OCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBh
Z2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkg
YXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0
IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVp
bGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBh
c2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7
CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxl
bmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51
cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNj
aWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAg
ICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEg
c3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0
YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSBy
ZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGlu
ZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1
b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1s
RGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRt
bERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAg
ICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAg
ICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxv
dyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBD
UkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNv
ZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAg
ICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVu
Z3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERh
dGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAg
ICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAg
ICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAg
ICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxl
IChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFz
Y2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsK
LSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxl
bmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlT
dHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0
bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDIuLjJkZmU4N2U4MmU3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxB
cmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxB
cmNoaXZlLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1IVE1MUGFyc2VyOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MQXJjaGl2ZSBmaW5hbCA6IHB1Ymxp
YyBBcmNoaXZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2ZT4gY3JlYXRl
KCk7Ci0gICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNv
bnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAKICAgICB2aXJ0
dWFsIH5NSFRNTEFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwMy4uNWVlOTE4Njg0
YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29sIHNraXBMaW5lc1VudGls
Qm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgbGluZVJlYWRlciwgY29uCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoU2hhcmVkQnVm
ZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4iKQogewogfQpAQCAtMTQw
LDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5l
eHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9m
UGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgp
KTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9
ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVk
ID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9
PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBt
aW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWly
ZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVu
dC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0
b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAg
aWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsx
ODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBh
cnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4
KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJz
IChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRl
bnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAg
ICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAg
ICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlN
RUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUg
cmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50
IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1M
RiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJc
biIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFk
ZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAg
YXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAg
ICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9
IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEp
IHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhU
TUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjA0LDExICsyMDUs
MTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQo
Y29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVk
UHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAg
ICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgp
LCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
SU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAg
ICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAg
ICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVu
dC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKaW5kZXggMWU5YmQ0ZDc3
NjdlLi4wZDYwNDM0M2YzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNsYXNz
IE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTUhU
TUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VBcmNo
aXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDcuLmUxYTg3NTE2YmQ4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
IGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEs
IG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjQuLjM3OThhOWI0
ZDkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6
Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYg
bWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURl
Y29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2
b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2MS4uMzhhMmUxN2Yw
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHls
ZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAg
ICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0
aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVp
dGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRT
dHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5j
b2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgp
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRh
KSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0
byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1
cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJp
Y3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8g
YmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgK
aW5kZXggNWQ0ZGQzZGM3ZTM1Li5lNjU1YzY5ZTNlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjOC4uZDJiYzI4MjE0
NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02
NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+
KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0g
ICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2Rh
dGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiB9CkBAIC0xMDUsNyArMTEwLDcgQEAgYm9vbCBDYWNoZWRGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0
YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJv
b2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQ
dHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxscHRyOwogfQpA
QCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGll
bnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGll
bnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNm
Li4xMzQ2NmNjOTlkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJU
IHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXgg
YjE1OWYyOWVlOTBmLi45NDYyNzk1MjBkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hl
ZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0K
IAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBk
YXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2Rh
dGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5z
aXplKCkpOwogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wg
Q2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1
cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vj
b25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1h
Z2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkK
LSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBk
YXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRf
SU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3Vt
ZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgp
KS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1h
Z2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNo
b3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNv
bnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC01NTMsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUlt
YWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAg
LTU2Nyw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0
YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRh
ID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKQEAgLTU5
Myw3ICs1OTUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZQogdm9pZCBDYWNoZWRJbWFnZTo6
ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkKIHsKICAgICBpZiAobV9pbWFnZSkgewot
ICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cgdGhhdCB0aGUgU2hhcmVkQnVmZmVyIGhhcyBi
ZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBo
ZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCisgICAgICAgIC8vIExldCB0aGUgSW1hZ2Ug
a25vdyB0aGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBz
byBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCBy
ZXNvdXJjZSBidWZmZXIuCiAgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzI0Mjc1NjE3
KTogSXQgd291bGQgYmUgYmV0dGVyIGlmIHdlIGNvdWxkIHNvbWVob3cgdGVsbCB0aGUgSW1hZ2Un
cyBkZWNvZGVyIHRvIHN3YXAgaW4gdGhlIG5ldyBjb250ZW50cyB3aXRob3V0IGRlc3Ryb3lpbmcg
YW55dGhpbmcuCiAgICAgICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSh0cnVlKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2
MmEwZGNhZi4uMDgzZjkyZjg4ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0
aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51
bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURh
dGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBk
YXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJ
bnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJl
cGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIwODM2OTc1
ODguLjg5NWRiMTE1OGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNl
OjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBl
IHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJj
ZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVz
b3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9
IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91
c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAg
ICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJl
ZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGlu
IGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02
NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRh
OworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlv
dXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJl
dmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3Rp
ZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRh
dGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxv
b3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRh
dGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0K
LSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUo
KSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFs
RGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNl
aXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MS4uYTc4NjVm
OGFkMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9y
ZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBv
dmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFD
aHVuayhjb25zdCBTaGFyZWRCdWZmZXIqKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAj
aWYgVVNFKFFVSUNLX0xPT0spCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAK
ICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2Fk
aW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1Yy4uYmY2OWU4MGU1
NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5
RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAt
MzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWlu
dDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBA
IC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWRE
YXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+
YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAg
ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxLi5jOTgyZGQ2
OTM3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwog
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEy
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
KSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lk
IGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5k
ZXggN2RhMTQ4NTFhNzA3Li5kYjQzMTYwN2FlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0
cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2Rl
Y29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9k
b2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5Li40NDVlNGY5ZjQyYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9j
dW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2
YmI2OTMuLmQyYzFkZTQ3ZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAg
ICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlz
YWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250
ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigp
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5Li5iNjczOThiMGU0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAgdW5z
aWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNo
OwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4Ny4uODY1MWU2
MzlhZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
CmluZGV4IDEyMjk4MTUwMzEyOC4uMGM4NDI4YmI5OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENh
Y2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1Vw
ZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9V
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEz
ICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVm
ZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVz
b3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigm
ZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2
NTEzLi4wOWI0MzM5YTM3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lk
IGRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2UyZjVlOTY0ODcuLmQyZWZmMmQyZDQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0
OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1l
KCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9k
YXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmlu
ZGV4IDY4NDJiNjQ0ZjYxYy4uYmQyMzEyMTRmMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIu
Z2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBt
X2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNi4uODY0MDlmNjAwNmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3
ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6
IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDgsNyArNTAsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFp
bCgpOwogCkBAIC02MCwxNyArNjIsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWwgeyB9OwogICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikg
ZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2
b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikg
ZmluYWw7CiAKICAgICAvLyBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIKLSAgICB2b2lkIHByb3Zp
ZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsK
ICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVz
b3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVy
IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmlu
ZGV4IGQxOGIyNTJlOTc1Ni4uNzNiYmNlMDIyN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRp
YyBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wg
TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRM
b2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5j
bGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0
ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07
CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdD
b252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0pOwog
fQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
YXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYgKCFy
ZXNvdXJjZUxvYWRlcikKQEAgLTIyNCwxMCArMjI0LDEwIEBAIHZvaWQgTGVnYWN5UHJldmlld0xv
YWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiBjCiAgICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNv
dXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJl
dmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29u
dmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmNvcHkoKSk7CiB9CiAKIExlZ2Fj
eVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1
LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkg
PSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAg
ICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhp
cykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnBy
ZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29y
aWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERh
dGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNv
dXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxv
YWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZv
cmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oCmluZGV4IDgyMzc0ZTcyNjJjNy4uZWE2MTVkZmY0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRp
dG9yQ2xpZW50LmgKQEAgLTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVu
dW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3Mg
RnJhbWU7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRp
ZXM7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBA
IC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdl
QWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBj
b25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJl
ZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIg
Ki8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJl
ZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0
IFN0cmluZyYgLyogZmlsZVBhdGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyog
aWRlbnRpZmllciAqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmlu
ZGV4IDFhMTIxMGZhODMzNy4uYWM1M2NiMTRiZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFk
ZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFn
CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aW1hZ2UoKSA9PSAmSW1hZ2U6Om51bGxJbWFnZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gaW1h
Z2VSZW5kZXJlciA/IGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRh
KCkgOiAwOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gaW1hZ2VS
ZW5kZXJlciA/IGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRhKCkg
OiAwOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IGltYWdlLT5pbWFnZSgpLT5kYXRh
KCk7CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRv
UmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIG1fcmVzb3VyY2Vz
LmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IDk2YWQwODI1NDNkZC4uNzU4MzZi
ODc5MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRh
UmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRh
UmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJl
RGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4
XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBm
aWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7CiAgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+
ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmls
ZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAK
KwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5n
RmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7
CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2Nv
bXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlp
bmdNYW5hZ2VyLmgKaW5kZXggZTM4MDZlODdkZjc5Li5mYzY2YzM2NWEyZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0lu
Zm87CiAgICAgc3RydWN0IEFydHdvcmtDYWNoZSB7CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8
QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNO
b3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcAppbmRleCAxNTczMWViMjNmYTcuLjA3ZWQ0OGU1ODg0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgU3RyaW5nIFBhc3Rl
Ym9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVn
eSA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAg
cmV0dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5h
bWUoKSwgY29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3
ZDI0N2RjZDFhMTYuLjM1NzYzZWUxMmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjEsMTIgKzYxLDEzIEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVu
dEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTE0Nywx
NiArMTQ4LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0
IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsg
fSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiB0aXRsZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYpID0gMDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29s
IHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJl
ZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZp
cnR1YWwgYm9vbCByZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZp
cnR1YWwgYm9vbCByZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3MSw3ICsx
NzIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3Rl
Ym9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpA
QCAtMjk2LDcgKzI5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJ
dGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBT
dHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAg
IFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCmluZGV4IDlkM2Y4N2E5MTE0Yy4uN2I0YjNkMzZhYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0
cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qg
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgb3RoZXIp
CiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAg
ICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1
cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4o
b3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMzQs
NyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9F
bmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRD
dXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFk
ZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07
CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJl
dHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEp
IHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRy
eS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZv
ckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEp
PiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBs
YXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRh
dGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEp
IHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYg
KChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmlu
Zz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAg
ICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEz
Li45N2ZmOTg1ZTI0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OCw3ICs0OSw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBTdHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGN1c3RvbURhdGE7Ci0g
ICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURh
dGE7CisgICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gcGxhdGZvcm1EYXRhOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSgpOwpAQCAtNjUsMTEgKzY2LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2Rl
cihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBT
dHJpbmcgcmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owog
CiAgICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJp
bmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
IAogICAgIHZvaWQgY2xlYXIoKTsKQEAgLTgzLDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBmb3JFYWNoVHlwZShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKICAg
ICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBmb3JFYWNoUGxh
dGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29u
c3Q7CisgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaEN1
c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBkYXRhKT4mJikgY29uc3Q7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2Uw
Li5jNDFlMDg1MjQ0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRT
dHJhdGVneS5oCkBAIC0zMSwxMCArMzEsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsK
IGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFz
dGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJv
YXJkVVJMOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3Qg
YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAg
dmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0
IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3Qg
Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMyYTVhNjU4
Li45ZTcyZTQ0YTJlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
Q29udGVudEZpbHRlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEo
KSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZpcnR1YWwg
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3QgPSAwOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmlu
ZGV4IDdhMmEzMTAwNzQyNS4uNzFkZmI5M2U1NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVjdCB3cGVf
cGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlv
bkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3Ry
dWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBh
c3RlYm9hcmRXZWJDb250ZW50OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAwIGlmIHBhc3RlYm9hcmQgb3du
ZXJzaGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRf
dCBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcuLmJmY2UxMWE4YmY5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTYz
LDkgKzYzLDkgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmll
d0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmV2aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNo
YXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAorY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBj
b25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9w
cmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFp
blJlc291cmNlKCkKQEAgLTgyLDE1ICs4MiwxMiBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVw
ZGF0ZU1haW5SZXNvdXJjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm92aWRl
ci0+cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoKnRoaXMsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byBidWZmZXIpIHsKLSAgICAgICAgaWYg
KGJ1ZmZlcikKLSAgICAgICAgICAgIGFwcGVuZEZyb21CdWZmZXIoKmJ1ZmZlcik7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGRpZEZhaWxVcGRhdGluZygpOworICAgIHByb3ZpZGVyLT5wcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcigqdGhpcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgIGFwcGVuZEZy
b21CdWZmZXIoV1RGTW92ZShidWZmZXIpKTsKICAgICB9KTsKIH0KIAotdm9pZCBQcmV2aWV3Q29u
dmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9p
ZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3aGlsZSAoYnVmZmVyLnNpemUoKSA+IG1fbGVuZ3Ro
QXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBuZXdEYXRhID0gYnVmZmVyLmdldFNvbWVEYXRhKG1f
bGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIyLDcgKzIxOSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlm
ICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAg
ICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdE
YXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjM5LDcgKzIzNiw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQo
UHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVy
dGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CiAKLXZvaWQgUHJldmlld0NvbnZlcnRl
cjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgeyBSZWYgeyAq
dGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApp
bmRleCAyYTM3MjkyMjc5OWMuLjkyMDJlZGRkOWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsMTUg
KzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKIHN0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0
ZSA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CiAgICAgdmlydHVh
bCB+UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5n
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKIH07CkBAIC03Miw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBjb25zdCBSZXNvdXJjZUVy
cm9yJiBwcmV2aWV3RXJyb3IoKSBjb25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXImIHByZXZp
ZXdEYXRhKCkgY29uc3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcHJldmll
d0RhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKICAgICB2b2lkIGZp
bmlzaFVwZGF0aW5nKCk7CkBAIC05NCw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1Bs
YXRmb3JtUGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7Ci0g
ICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQg
YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9p
ZCBkaWRBZGRDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYpOwogICAgIHZvaWQgZGlkRmFp
bENvbnZlcnRpbmdXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlk
RmFpbFVwZGF0aW5nKCk7CkBAIC0xMDYsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBs
YXRmb3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUHJldmll
d1BsYXRmb3JtRGVsZWdhdGUKLSAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlk
RmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9y
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAg
IFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUg
eyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQuaAppbmRleCAwNGVhMzY4MDY5MmIuLjljZWU5MzMyMGIyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByZXZpZXdDb252
ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQg
OiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB+
UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAgc3Ry
dWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVy
dGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hV
cGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3
Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZl
cnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVE
YXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdD
b252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRG
YWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKaW5kZXggODI3ODYz
OTNmY2VkLi5hYjcwMDRiZTkzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5NYWtlV2Vha1B0
cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5S
ZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRl
ciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
PiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MS4uN2ZhZjY3N2Q3MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM3LDYzICszNyw2OSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEsIHNpemUpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogfQogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsKIH0KIAotU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkK
LSAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgbWFwcGVkRmlsZURhdGEpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwog
fQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBw
cm92aWRlcikKLSAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCitSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikKIHsKLSAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0K
IAotI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXImJiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQotICAgIDogbV9z
aXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURh
dGEpCisgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9
KTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmls
ZU1hcHBpbmcpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQorICAgIDogbV9zaXplKHByb3ZpZGVy
LnNpemUoKSkKIHsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBp
bmc6OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1v
ZGUsIG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGZpbGVQYXRoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCitGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHZlY3RvcikpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAotc3RhdGljIFZl
Y3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKKyNpZiBVU0UoR1NUUkVBTUVS
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7Cit9CisK
K0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVk
T3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6
ZSgpKQoreworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgm
bWFwcGVkQnVmZmVyKSB9KTsKK30KKyNlbmRpZgorCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNv
bWJpbmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
Y29tYmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNp
emUpOwpAQCAtMTAzLDMzICsxMDksMTkgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
U2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICBy
ZXR1cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9P
bmVTZWdtZW50KCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8v
IEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUg
bm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVu
ZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdv
cml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAg
ICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJuIFJl
ZiB7ICpzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNb
MF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNl
Z21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAotY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwot
ICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmNvcHlEYXRhKCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Ojpjb3B5RGF0YSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0
YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CkBAIC0xMzksNyArMTMxLDcgQEAgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogICAgIHJldHVybiBk
YXRhOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCitWZWN0
b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogewogICAgIGlm
IChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE1NCwxMyAr
MTQ2LDEzIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKICAgICBy
ZXR1cm4gY29tYmluZWREYXRhOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZm
ZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK1NoYXJlZEJ1ZmZlckRhdGFW
aWV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikg
Y29uc3QKIHsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVtZW50ID0gZ2V0
U2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICByZXR1cm4geyBlbGVtZW50LT5zZWdt
ZW50LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07CiB9CiAK
LWNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVy
OjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QK
IHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CiAgICAgYXV0byBjb21w
YXJhdG9yID0gW10oY29uc3Qgc2l6ZV90JiBwb3NpdGlvbiwgY29uc3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSYgZW50cnkpIHsKQEAgLTE3MSw3ICsxNjMsNyBAQCBjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0
aW9uKAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1TdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hl
eFN0cmluZygpIGNvbnN0CitTdHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJp
bmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBmb3JF
YWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewpAQCAtMTgxLDcgKzE3Myw3IEBAIFN0cmlu
ZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVp
bGRlci50b1N0cmluZygpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0
byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CkBA
IC0yMDAsNjggKzE5Miw2MyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVu
dCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNh
cGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1f
c2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVm
KCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1l
bnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21l
bnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwog
fQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAg
IG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBB
U1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAg
ICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHtt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9
KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0
ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKICAgICBtX3NlZ21lbnRz
LmNsZWFyKCk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogewotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOwor
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBj
bG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBj
bG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwg
ZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5j
b3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwog
fQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQotdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVh
Y2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYp
PiYgYXBwbHkpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdt
ZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBw
bHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CiAgICAgZm9yIChh
dXRvJiBzZWdtZW50IDogc2VnbWVudHMpCiAgICAgICAgIGFwcGx5KFNwYW4geyBzZWdtZW50LnNl
Z21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAKLWJvb2wgU2hh
cmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkg
Y29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYgKHByZWZpeC5lbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4Myw3ICsyNzAsNyBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpy
ZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChvZmZzZXQgPj0g
c2l6ZSgpKQpAQCAtMzEwLDEyICsyOTcsMTIgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAgIHJldHVybiBk
YXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNv
cHlUbyhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIEFTU0VSVChsZW5n
dGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBpZiAob2Zmc2V0ID49IHNpemUoKSkKQEAgLTM1
MywxNCArMzQwLDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wg
U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKLXsKLSAgICBhdXRvIGl0ID0gYmVn
aW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKLX0KLQogI2lm
IEFTU0VSVF9FTkFCTEVECi1ib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQo
KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKSB7CkBAIC0zNzIsNDIgKzM1MywxMyBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmRhdGEoKSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0g
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCog
eyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZE
YXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHTElCKQotICAg
ICAgICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAg
IFtdKGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgotICAgICAgICBbXShjb25z
dCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKLSAgICAg
ICAgW10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVy
biBwcm92aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0
YSk7Ci19Ci0KICNpZiAhVVNFKENGKQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9y
eU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4ge3sg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwotfQot
Ci1ib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZv
dGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NTYsNyArNDA4LDExOCBAQCBib29sIFNo
YXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
c2l6ZSgpIGNvbnN0CitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9jb250
aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRp
Z3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250
aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0
eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNv
bnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigp
IH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcp
Cit7CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
IHsKKyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBw
aW5nU3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
CisgICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQor
Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmICht
X3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyBk
YXRhKCksIHNpemUoKSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9
CisKKyNpZiBVU0UoQ0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmV0
YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCitS
ZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0
YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RGF0YVNlZ21lbnQ+IERh
dGFTZWdtZW50OjpjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwor
fQorI2VuZGlmCisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFT
ZWdtZW50OjpjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitjb25zdCB1aW50
OF90KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byB2aXNpdG9yID0gV1RG
OjptYWtlVmlzaXRvcigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyNpZiBVU0UoQ0YpCisg
ICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAorI2VuZGlmCisj
aWYgVVNFKEdMSUIpCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0
ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYg
ZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorI2VuZGlm
CisgICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBj
b25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5k
YXRhKCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0
IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAgICk7CisgICAgcmV0dXJu
IHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30KKworYm9vbCBEYXRhU2Vn
bWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxl
RGF0YSk7Cit9CisKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0
byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUs
NyArNTM4LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAK
LVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0
aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3Nl
Z21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBv
c2l0aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21l
bnQtPnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ4OSwyMiArNTUyLDEyIEBA
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRC
dWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiB7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBt
X3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwotfQotCiBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9
IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2Vn
bWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyBy
ZXR1cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1
cm4gc2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIz
ZjVkNjlhZDMyLi4xMTlmMzg0ZTU4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMjUgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5
IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZl
cmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0
YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3MgTWF5
VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwot
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rv
cjx1aW50OF90PiYmKTsKIAotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFpblB0cjxOU0Rh
dGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVO
U0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
TlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAqKTsKLSNlbmRpZgogI2lmIFVTRShD
RikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7Ci0gICAgdm9pZCBhcHBl
bmQoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJik7CiAjZW5kaWYKLQogI2lmIFVTRShHTElC
KQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1Jl
ZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJik7CiAjZW5kaWYK
LQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYpOwogI2Vu
ZGlmCi0gICAgLy8gQ2FsbGluZyBkYXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0
byBiZSBjb3BpZWQgaW50byBvbmUgc2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAg
ICAvLyBJdGVyYXRlIHRoZSBzZWdtZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFk
LgotICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFu
ZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
YWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1pbGFy
IHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEg
aW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCku
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7Ci0KLSAgICAvLyBDcmVhdGVzIGFu
IEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0
aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJz
IGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwogCi0gICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVj
dCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Cisg
ICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJik7CiAKLSAgICAvLyBE
YXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2Ug
aXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkg
b3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xh
c3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsK
KyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAg
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRh
KQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgog
I2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1Jl
ZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRl
cz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
ICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQor
ICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBzdHJ1Y3Qg
UHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsK
LSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAg
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0K
LQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxl
RGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENG
KQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNl
Z21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAogI2Vu
ZGlmCi0gICAgICAgIERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0
YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQotICAg
ICAgICBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQorICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBm
cmllbmQgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCit9OworCitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwor
ICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8
VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0
YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAg
ICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQg
d2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFj
dERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlC
dWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZl
ci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgY29uc3Q7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICBi
b29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsgfQogCi0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCi0g
ICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxj
b25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZv
ckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21l
bnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmls
aXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAg
IHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9z
aXRpb247CkBAIC0yMTAsNzUgKzE4OSwxOTcgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdt
ZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFT
ZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vn
bWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVT
ZWdtZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9zZWdtZW50cy5zaXplKCkgPT0gMTsgfQogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8o
MSkgdGltZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRh
VmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29u
c3Q7CiAKLSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5l
ZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rl
cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShv
dGhlcik7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNo
YXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKIAotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25z
dCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
JiYpOworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CisKKyAgICBE
YXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOworICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFs
c2UgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoKTsKKyAg
ICBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRh
dGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJiBkYXRhKSB7IGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICNpZiBV
U0UoQ0YpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2Vu
ZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR0J5dGVz
Kik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAg
IHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgp
IGNvbnN0OworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
eyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Cisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRh
ICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMg
aW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUg
U2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVu
dHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0
aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWlu
dDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRT
ZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRh
U2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRh
YmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCi1pbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQorLy8gQSBTaGFyZWRC
dWZmZXIgaXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5
IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgor
Y2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgeworcHVi
bGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4o
QXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRh
U2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQor
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBk
ZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9v
bCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNo
YXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKworI2lm
IFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlmCisj
aWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdC
eXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworfTsKKworY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7
CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxk
IGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmICghYnVm
ZmVyIHx8IChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSkg
eworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKCpidWZmZXIpOworICAgIH0KKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZl
cmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisg
ICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygp
KSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIuZ2V0KCkp
KTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYu
Li4gYXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZl
ci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsg
fQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7
IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVu
c3VyZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29w
eSgpIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsK
KyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZm
ZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
Cit9OworCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4
dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCiAgICAgICAgIHJldHVybiB0YWtl
RGF0YSgpOwogICAgIHJldHVybiBjb3B5RGF0YSgpOwogfQogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBw
dWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKLSAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0g
c3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VO
REFUSU9OKQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0Owog
I2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAg
Y29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBt
X3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIuY3BwCmluZGV4IGNkYjZlNzAzNDA0ZC4uOWQwNTVjZTI3ZDg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3Bw
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRN
TCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDog
bV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChi
dWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRl
cmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikK
QEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJl
Z2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21l
bnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50
LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjLi4xYzY0MDhk
NGM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1YmxpYzoKLSAgICBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4m
IHNlcGFyYXRvcik7Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgY2hhciogc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOworICAg
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBj
aGFyKiBzZXBhcmF0b3IpOwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNo
YXI+Jik7CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAtNTgsOCArNTgs
OCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsK
IAogcHJpdmF0ZToKLSAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9p
dGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAgIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJh
dG9yQ3VycmVudDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25zdCB1aW50OF90
KiBtX3NlZ21lbnQgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9
OwogICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIyZDdhNTUwZDQ2MC4uYTRi
NGJiMTA0YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlU3RyaW5n
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX2N1c3RvbURh
dGEud3JpdGVTdHJpbmcodHlwZSwgdmFsdWUpOwogfQogCi12b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6
OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
K3ZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX25vbkRlZmF1bHREYXRh
VHlwZXMuYWRkKHR5cGUpOwogICAgIG1fY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGTW92
ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKaW5k
ZXggYzA5YjZkZTMxZjJlLi5lZGQ3MTM2MjNmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewog
cHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJ
bkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVT
dHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAg
IHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xl
YXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2
ODc5NTkwMGM1YWQuLjFkNjViYzQwM2FkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmluZyBzcmM7CiAg
ICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAg
ICAgewpAQCAtNjcsNyArNjcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBpbWFnZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQog
ICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXgg
YmI3ODhhZmExZTkxLi43ZjA0OTYwYzU5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0
Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93
UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEp
IHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFn
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlp
bmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5n
SW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8u
Z2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3Ry
aW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9T
aGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxLi44MTllMjZmYTRjZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRh
dGFSZWYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgYXBwZW5kKGRhdGEpOwogfQpAQCAtNDMsMjQgKzQz
LDIwIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogI2lmICFV
U0UoRk9VTkRBVElPTikKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAg
IGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6Omdl
dF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11
dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBj
ZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0g
ICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBw
ZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwot
ICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCitSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBk
YXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhKSk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29u
c3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9zZWdtZW50cykgewogICAgICAg
ICBpZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKQEAgLTcwLDkgKzY2LDggQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKICAgICB9CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCit2b2lkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGlmIChkYXRhKSB7CiAgICAg
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9
KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5oCmluZGV4IDA3OTdkZmJlOGQwMS4uY2JlODc3MWE0NWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbQppbmRleCA0MjkwZGIxMjhkMDAuLjJlZjI3MDFmZTY3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9y
ZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25z
dAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5oCmluZGV4IDA2OGNkY2IzODNmNC4uNjc5YWU5MzI5NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmlu
aXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFj
ZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRs
ZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpp
bmRleCBiNDYxZjk3NTM2ZGUuLjFjOTYwNDcxNmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNl
bWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VS
VChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVw
bGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGMuLmI4MTcwODE3Y2VjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpA
QCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0Zp
bGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5v
bi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNs
dWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdl
YktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkg
PSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgp
ID0gZGVmYXVsdDsKIApAQCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9h
cmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFD
KQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVy
JiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkco
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0g
YWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZl
ci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNC
aXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2lt
YWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGll
czpAeyB9XTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CmluZGV4IDllZTBjMGI1NWQ3OS4uMjVmMzExZjI1ODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDEx
IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJD
b3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0
YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpE
YXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6
ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJl
ZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFT
ZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNV
SW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAg
W3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwpAQCAtODgsMTMgKzg4LDE0IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEp
CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRhdGEpKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjph
cHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBy
ZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIApAQCAtMTA1LDEwICsxMDYsOCBA
QCBSZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiAK
IFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QK
IHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0
ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4g
YnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAK
QEAgLTExOSwxNCArMTE4LDE0IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5T
RGF0YUFycmF5KCkgY29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJy
YXkobV9zZWdtZW50cywgW10gKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgcmV0dXJuIHNlZ21l
bnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0Rh
dGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRh
aW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERh
dGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4
IGZiYzI4M2ZiYzMzNi4uMmRlNDE5MzRkYTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
Y2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Np
b247CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKIApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBDRE1JbnN0YW5jZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0
YW5jZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlQ2xpZW50KCkg
PSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiAvLyBK
YXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNlZCBmcm9tIHRo
ZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggMzdj
ZDA3YzdiZjJkLi5kMjU5MjI1YmE5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00Mywx
NiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5j
ZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Np
b25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0
dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hh
cmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVj
dG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+Owog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENE
TU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGlj
OgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5z
ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFp
cjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBz
dGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAg
dXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
IHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5n
ZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpv
cHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3Mg
U2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyAr
MTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1
c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChL
ZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3Vj
Y2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
LCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApp
bmRleCBjYzZkYzdmMTQwY2QuLjUyYTYxNDhjODNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNzMsOCArNzMsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmlu
ZGV4IGYyMThmOTc5MDRmYi4uNGJhNzViZjAwZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjcsNyArMjI3LDcg
QEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgS2V5U3RvcmU6OmNvbnZlcnRU
b0pTS2V5U3RhdHVzVmVjdG9yKCkgY29uc3QKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3I7CiAgICAga2V5U3RhdHVzVmVjdG9yLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtS2V5cygpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IG1f
a2V5cykKLSAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8
UmVmPFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+
aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOworICAgICAgICBrZXlTdGF0dXNW
ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZl
cigpLCBrZXktPnN0YXR1cygpIH0pOwogICAgIHJldHVybiBrZXlTdGF0dXNWZWN0b3I7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5o
CmluZGV4IGE1ODRiNmNkMjY2Yi4uZTFlMDk4YTFkNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0
YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAgICAgfQot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CisgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CiAKICAg
ICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlLi5mY2E2ZjIzODhhNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBD
RE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05P
YmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZh
aWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQg
dW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC00
Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQ
YXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmpl
Y3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0
byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmgKaW5kZXggNzRmNTE1YjBiZDJhLi5mY2Y1YmRkYTdjNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCkBA
IC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgQ0RNVXRp
bGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4Yy4uMzFhOWZkZmEwMmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNl
bnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3Qp
CiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5k
IHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3Rh
dGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTM4LDcg
KzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5
aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1w
dHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5p
dERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRh
KCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgsMTUg
KzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0aW9u
IGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0
RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBr
ZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRh
KTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7
CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJ
ZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5
SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWdu
ZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFs
aWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAg
ICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1
dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEg
PSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3Vz
SW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAt
MjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7
CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsK
KyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdl
Yk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEg
aXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwg
aW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQot
ICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAog
ICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlk
c0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3Qg
Y29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8g
QW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFz
ZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkg
SUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJh
eS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJh
eSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0g
b2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRh
dGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBr
ZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJl
dHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlD
bGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENETVByaXZhdGVD
bGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jv
b2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNv
bnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9i
amVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVD
bGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBj
b25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04g
b2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2Up
KQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJh
Y2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJh
Y2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9u
PiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVh
cktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZh
bHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lv
biBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBh
cmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAg
ICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNo
Q2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxi
YWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAg
ICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3Rv
ciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSks
IHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25z
dHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBr
ZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9y
bWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFs
bEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJl
cHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycg
YXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtl
eXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTMsMTQgKzU5
NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAgICAv
LyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAg
IC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmpl
Y3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3Ry
aW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0
ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3Ry
aW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5
U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0
YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpT
dWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3Ip
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1
Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVj
b3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5k
ZXggOWMwNzQ3ZGMxYmQ4Li45ZTI3ZmU5MTJjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aApAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgp
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKIH07CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNl
CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAg
ICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0x
MDksOCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBw
dWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNl
U2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3Nl
U2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1v
dmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3
ZWUuLmVjZjRlMDhjOWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZEVuY29kZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtl
eWVkRW5jb2RlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAyNGMuLjkzN2QxZmI2ZjBjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChi
eXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRl
cykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0
ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAppbmRleCA5ZmM0ZWE4MmViYmMuLmRjMWZiMTZlYTBiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBHbHlw
aFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1Li5mYmJjY2M0
MzY4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFj
ZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUu
IE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2Jz
ZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNlYjY0OTUzLi5lMzJhMzZjNjA3
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEw
NCw3ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJ
bWFnZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9l
bmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5Li42NTVkZmU3M2NmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNzAsNyArNzAsNyBAQCBj
bGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXpl
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0
cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFt
ZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEyNCw3ICsxMjQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJv
bUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRh
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAg
IFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1
YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCov
KSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBT
dHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYg
dW5rbm93bgpAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwogCi0gICAgU2hh
cmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9Ci0g
ICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1h
Z2VEYXRhLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0
dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7
IH0KIAogICAgIHZpcnR1YWwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIApA
QCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBp
eGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKICAgICBJbWFnZU9ic2Vy
dmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1h
dGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggNGRkYjZkZjgzZWNiLi5kZTMzZjFhZjQx
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1f
cGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0
YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50
UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3ZlclNpemUobV9z
aXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBvdGhlci5tX3BpeGVscy0+
ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
IG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAg
fQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFBhY2tlZENv
bG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRy
IHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFJlY3QgbV9mcmFtZVJl
Y3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQg
Zm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEwMDg4Li43YzU0OTQ3ZjRkODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMo
KQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFh
MDhhZGMxNzVkLi42YThmZmNiNjBmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0zNywxMiArMzcsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgPSBk
ZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgewpAQCAtOTEsNyArOTEsNyBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFU
eXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVkaWFUeXBlKT47CiAgICAgdXNpbmcgQ2FuRGVjb2Rl
VHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKLSAgICB1c2luZyBDcmVh
dGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJl
ZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVj
dCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAgICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1
cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNl
aXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FsbERh
dGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZDgxYzQ4MDE5Mjg0Li4zMDc3NDMzMTVhNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiAgICAgQVNTRVJU
KCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9CiAKLWJvb2wgSW1hZ2VTb3Vy
Y2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBJbWFn
ZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURl
Y29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghZGF0YSB8fCAh
ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDEz
ICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxs
RGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKFNoYXJlZEJ1
ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgc2V0RGF0YShk
YXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VT
b3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0RGF0
YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDhhZjUwODBh
MDBhOS4uODE0ZjBlMTJlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURl
Y29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFn
ZVNvdXJjZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVu
ZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAg
IEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5n
ZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHBy
aXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0
YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFt
ZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2Rl
ckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2
YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2Rl
ckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAg
ICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZC4u
NTc3YmQ1MDhhNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9k
ZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBl
LCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkp
KTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAg
ICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJs
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3
OWYxMS4uZTZiZGUxNjZmOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2Rl
bCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJp
bmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9k
ZWwoKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBl
eHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CkBAIC02MCw3
ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1f
ZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6
ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3Vy
bDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggNzQ1OWM1ODU4ZDI0Li44ODY5
MWRjMjU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcs
IHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3Zl
ZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZp
cnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Li44YjA0ZjliZTk2YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEyIEBA
IGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgp
CiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4g
ZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0
OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVy
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXpl
KCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsK
ICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJy
YXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7CkBA
IC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFj
dFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBTY2hlbWVB
bmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+Pj47
Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5m
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBl
eHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZlcik7
CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2No
ZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRy
YWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJlc3Vs
dHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9yIChh
dXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAgIFVOVVNF
RF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVk
QnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0
cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0
aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJRHMuYXBw
ZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMsNyArMzkz
LDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewog
ICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNv
cHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggYmM5
M2Y2ZjZhN2JkLi4zMTdiYjhkNTdlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCkBAIC03MSwxNyArNzEsMTcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZElu
aXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBz
dGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVz
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IDE1OWI5MGNkYjQ4Zi4uNTZiNThjMjVh
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgog
ICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAKICAgICB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VD
bGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIE5TVVJM
ICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlVVJMLmdldCgpOyB9CiAgICAg
Ym9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50
U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVy
Q2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5
U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOworICAgIFJldGFpblB0cjxBVkNv
bnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlv
bkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGll
bnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5h
bDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1
ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKSBmaW5hbDsKICAg
ICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1
ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAgIHVzaW5nIEtleXMgPSBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0OwogICAgIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3Vw
KEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlS
ZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRy
PENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5
U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNl
c3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Nl
cnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3Nl
cnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1
ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFr
UHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lv
bnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0
YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Np
b24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwg
Q2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYm
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5Li5iYTUw
NjFlYmI1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAg
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhu
c0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9u
RGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250
ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRl
bnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3Rz
LmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyAr
K3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBA
IC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsK
IH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09O
VmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZh
aWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQg
dW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0z
MjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJv
b3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAog
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgp
KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2Vy
dGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBA
QCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAg
ICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vz
c2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lv
bktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkp
IHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RG
b3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlE
czsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5z
ZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBl
LCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAK
ICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2lu
Zk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAg
IGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5J
VERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNl
bmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5T
U3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBl
cnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwog
ICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNF
cXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
cmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1f
ZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25v
d2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5z
ZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4
cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRh
LmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lv
blJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3Vy
cmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1
ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJl
cXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5n
KFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQu
Z2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsK
QEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAg
ICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFty
ZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBb
bV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtl
eVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFs
dWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3By
b2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNv
bnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyAr
OTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0Rh
dGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBs
YXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAg
ICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VV
UkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAg
ICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJ
RHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDkgKzExNTMs
OSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2
ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0g
VmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+
PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2Fs
bGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxi
YWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rp
b248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNr
QWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAg
ICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8m
IGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0g
cmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7Cisg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5n
KGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhw
YXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAg
cmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0x
MjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAg
ICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0
cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3Qu
Z2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3Zl
KGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1
dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0g
V1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZN
b3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxl
IHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsK
IAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIo
ZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVl
c3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
CmluZGV4IDAzMzRkNjIzYjJhNy4uNjJiODNmYmZkNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNv
cmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1
YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1h
Z2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3Vw
cG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApAQCAtOTQsNyArOTQs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJh
bWVJbmZvPiBmcmFtZUluZm9zKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VEZWNvZGVy
QVZGT2JqQyhTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckFWRk9iakMo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZp
cnN0RW5hYmxlZFRyYWNrKCk7CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1Li4z
NWM2Y2U2N2U4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUqIHRv
U2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFnbWEgbWFyayAtIEltYWdlRGVjb2RlckFWRk9i
akMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJB
VkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlv
biBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAg
UmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9iakM6Oklt
YWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBt
X3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAtMzA5LDcgKzMwOSw3
IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2Vi
Q29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFy
ZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpk
YXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBk
YXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBs
ZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRl
Om1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hf
UVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3lu
Y2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBAIC02NDEsOSArNjQxLDkgQEAg
dm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9u
ZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVu
dFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9i
akM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpk
YXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAg
W21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNl
aXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAppbmRleCAyMDBlMWE4ZjlhZmIuLmM5ZDliMmE5Njg1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJl
bnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJl
bnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVk
Q3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9j
YWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsK
ICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCBkMThhODVhNzk0ZjUuLmIxYzYwNzljNjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuYwogICAgIGlm
ICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5jZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKKyAgICBhdXRvIGluc3RhbmNl
U2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKICAgICBpZiAoIWluc3RhbmNl
U2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2EyMTQuLjRkZDZi
OTFhOTQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0
byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRh
ID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBp
ZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250
aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkg
d2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjQuLjc1NGIxZTJlZWMwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03
Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMjIxLDcgKzIy
MSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBI
QVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
bV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hl
ZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGYwZDhlNzExMzJmNi4uMGVmZWVhZWY1YjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNDMsNyArNDMs
NyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogY2xhc3MgUGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8
QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGEyMmE5
OTdiMTEwNy4uZjkyMWYzZGEwZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNTYsMTQgKzE1NiwxNCBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNo
b3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9u
ZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3Ip
OyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjExLDEzICsyMTEsMTAgQEAgdm9p
ZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgbV9wYXJl
bnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVy
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5u
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3Mg
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVS
TFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQog
Ci12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpu
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1
ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZS4uOTQxOWJjZWEz
OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSwxMCArMzEsMTEgQEAg
dHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2Vs
ZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7
CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
RlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9G
YWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRD
cmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWYuLmI2ZDNlYjM2MzExMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5
dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLAog
CiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKIHsKLSAgICBTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAg
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaGFyZWRCdWZmZXItPmRlcmVmKCk7CiB9
CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNv
ZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1
dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRl
Q0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFk
b3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYg
KHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBl
SWRlbnRpZmllckhpbnQ7CkBAIC01NjIsMjMgKzU2MiwyNCBAQCBQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAK
LXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9pc0FsbERh
dGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNy
ZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCi0g
ICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRl
IENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwotICAg
IC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJj
ZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0
aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0
aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KKyAgICAvLyBXZSB1
c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRl
IENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcworICAg
IC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIENH
SW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNl
Ci0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIGRhdGEucmVmKCk7Ci0gICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24g
Y2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJl
ZEJ1ZmZlcgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKKyAgICAvLyBXZSB1
c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0
ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMg
bm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJh
bnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBm
b3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVy
RGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZm
ZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5Q
dHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsK
KyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6
ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVBy
b3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRh
UmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA5NzQwNzM2YTIxYWMuLmEwYWMxYzJm
YmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2VEZWNvZGVyQ0coU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwor
ICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAgICBzdGF0aWMgUmVmPEltYWdl
RGVjb2RlckNHPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZl
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lk
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CmluZGV4IDMxYzI3YzA2OWIyYi4uZmY3N2I1M2U5ZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAt
MzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRh
KGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewot
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENH
UERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzLi5kZTZk
ZWJlMmJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjUsOSAr
MzY1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxv
Y2spOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZj
b24sIHZvaWQqLCBzaXplX3QpCisgICAgc3RhdGljIHZvaWQgRnJlZVNoYXJlZEJ1ZmZlcih2b2lk
KiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSBy
ZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAg
ICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHJlZmNv
bik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKQEAgLTQwOCwxMSArNDA4LDgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGxhc3RSZWFkID0gcmVhZFJlc3VsdC52YWx1ZSgp
OwogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVu
dCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xl
IERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24n
dCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJl
ZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAvLyBU
T0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNr
ZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/Ci0gICAgICAgICAgICAg
ICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7Ci0g
ICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVh
ZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CisgICAg
ICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwg
c2hhcmVkQnVmZmVyLT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CiAgICAgICAg
ICAgICAgICAgLy8gRnJvbSBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgZG9jdW1lbnRh
dGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgZm9yIDY0LWJpdCBhcmNoaXRlY3R1
cmVzLCB0aGlzIHN0cnVjdCBjb250YWlucyBtaXNhbGlnbmVkIGZ1bmN0aW9uIHBvaW50ZXJzLgog
ICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIGxpbmstdGltZSBpc3N1ZXMsIGl0IGlzIHJlY29t
bWVuZGVkIHRoYXQgY2xpZW50cyBmaWxsIENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSdz
IGZ1bmN0aW9uIHBvaW50ZXIgZmllbGRzCkBAIC00MjAsMTAgKzQxNywxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlIGFsbG9jYXRvcjsK
ICAgICAgICAgICAgICAgICBhbGxvY2F0b3IudmVyc2lvbiA9IDA7CiAgICAgICAgICAgICAgICAg
YWxsb2NhdG9yLkFsbG9jYXRlQmxvY2sgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIGFsbG9j
YXRvci5GcmVlQmxvY2sgPSBGcmVlRGF0YVNlZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYWxsb2Nh
dG9yLnJlZkNvbiA9IGZpcnN0U2VnbWVudC5wdHIoKTsKLSAgICAgICAgICAgICAgICBmaXJzdFNl
Z21lbnQtPnJlZigpOwotICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVm
ZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZvaWQqPihjb25z
dF9jYXN0PHVpbnQ4X3QqPihmaXJzdFNlZ21lbnQtPmRhdGEoKSkpLCBmaXJzdFNlZ21lbnQtPnNp
emUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQsIGNhblJl
YWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLkZyZWVC
bG9jayA9IEZyZWVTaGFyZWRCdWZmZXI7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnJlZkNv
biA9IHNoYXJlZEJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPnJl
ZigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRl
V2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PHVp
bnQ4X3QqPihzaGFyZWRCdWZmZXItPmRhdGEoKSkpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgbnVs
bHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQsIGNhblJlYWQsIDAsICZy
YXdCbG9ja0J1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSBrQ01CbG9ja0J1ZmZl
ck5vRXJyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVu
b3VnaE1lbW9yeSk7CiAgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSBjYW5SZWFkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA0MDI1ZTA2OTJkYzUu
LmJhNjA1ZGNiMzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAKQEAgLTczNyw3ICs3MzcsNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6
OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogdm9pZCBJ
dGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJdGVtKQog
ewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+cmVxdWly
ZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBv
dXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdXRPZkxp
bmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkgewogICAgICAgICBvdXRPZkxp
bmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRlbXBvcmFyeUl0
ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzLi5iMzFiYzVmZDRlOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3Bs
YXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBA
IHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5zdXJl
IHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAvLyBJ
ZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNvZGlu
ZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3aWxs
IGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5j
b2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50
IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29kZWQg
ZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBhcHBl
bmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAogICAg
IC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVz
LCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRhdGEs
IGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVk
IHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTUuLjJiNDQzZmJiZWQyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBy
ZWxlYXNlQ3VzdG9tRm9udERhdGEodm9pZCogZGF0YSkKIHsKLSAgICBzdGF0aWNfY2FzdDxTaGFy
ZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHN0YXRpYyBjYWlyb191c2VyX2RhdGFf
a2V5X3QgZnJlZVR5cGVGYWNlS2V5OwogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFj
ZSBmcmVlVHlwZUZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICA6IG1f
Zm9udEZhY2UoYWRvcHRSZWYoY2Fpcm9fZnRfZm9udF9mYWNlX2NyZWF0ZV9mb3JfZnRfZmFjZShm
cmVlVHlwZUZhY2UsIEZUX0xPQURfREVGQVVMVCkpKQogewogICAgIGJ1ZmZlci5yZWYoKTsgLy8g
VGhpcyBpcyBiYWxhbmNlZCBieSB0aGUgYnVmZmVyLT5kZXJlZigpIGluIHJlbGVhc2VDdXN0b21G
b250RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFk
MTliODc2YjI3Li5kZmJjNTgwZmI4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwCkBAIC04MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogICAgIHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyU2FtcGxlKilpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxJbWFnZURlY29kZXJH
U3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRy
PEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
ckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0
cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CkBAIC0xOTksNyArMTk5LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKIHsKICAg
ICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CkBAIC00MjYsMTAgKzQyNiwxMSBAQCBFbmNvZGVk
RGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERh
dGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsK
IH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5j
b2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9z
ID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNp
emUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdT
dHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0g
YnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdT
dHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAg
ICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDY2ZjMzNzI4NDZhNC4uZDNl
ZjZhNDVjZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4
ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJl
YW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1l
ZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcy
LDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBA
QCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNh
bXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4
KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1Li5iMzI0Y2YxMTQ2NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNjkyLDcgKzM2
OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2No
ZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6
dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAg
ICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAo
ImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5w
YXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAg
R1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRh
LnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBp
bml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA1ZDg2ZmIx
YWY0ODcuLjkzMDE5MDk5NDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5
Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNy
YyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNs
ZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyLi4zNDliZmRjYWFkNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENE
TVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktl
eSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdl
ZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lz
dGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hh
cj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVu
ayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMg
YXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3Rl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5
J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8g
dGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQg
YmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhh
dCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdh
cmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5
cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4OC4u
YzM4OTE2ZTdkMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTIyMCw3ICsyMjAs
NyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1
ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0
aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtMjM3LDcgKzIzNyw3IEBAIGJvb2wg
Q0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENE
TVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CiB9
CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKICAgICBjYWxsYmFj
ayhTdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9z
eXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0
X2Nhc3Q8dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAgICAgICBjZXJ0aWZpY2F0
ZS0+c2l6ZSgpKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9u
PiBDRE1JbnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xhc3MgUGFyc2VkUmVzcG9u
c2VNZXNzYWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShjb25zdCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShj
b25zdCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICB7CiAgICAg
ICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM1NCw4ICszNTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiBtX2lzVmFsaWQ7IH0KICAgICBib29sIGhhc1BheWxvYWQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihtX3BheWxvYWQpOyB9Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5
bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNT
RVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIGNvbnN0IFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3Bh
eWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3Bh
eWxvYWQudmFsdWUoKTsgfQogICAgIGJvb2wgaGFzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZS5oYXNfdmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZSgp
IGNvbnN0IHsgQVNTRVJUKG1fdHlwZSk7IHJldHVybiBtX3R5cGUudmFsdWUoKTsgfQogICAgIFdl
YkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2Fn
ZVR5cGUgYWx0ZXJuYXRlKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPyBtX3R5cGUudmFsdWUoKSA6
IGFsdGVybmF0ZTsgfQpAQCAtMzY0LDExICszNjQsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiBtX3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlh
S2V5TWVzc2FnZVR5cGU+IG1fdHlwZTsKIH07CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRl
ZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAg
ICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3NhZ2UpIHsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogICAg
IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigi
Q0RNIGVycm9yIik7CiAgICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRh
KCksIG1lc3NhZ2UtPnNpemUoKSk7CkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFT
aGFyZWRCdWZmZXIsCiAgICAgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBj
b25zdCBBdAogICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpLCBtX2luaXREYXRh
LnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNr
cywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewogICAgICAgICBHU1RfRVJS
T1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAg
ICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFp
bGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdAogCiAgICAgYXV0byBnZW5lcmF0ZUNoYWxsZW5nZSA9IFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9
IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgaWYgKG1fc2Vz
c2lvbklELmlzRW1wdHkoKSkgewogICAgICAgICAgICAgR1NUX0VSUk9SKCJjb3VsZCBub3QgY3Jl
YXRlIHNlc3Npb24gaWQiKTsKICAgICAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VO
b25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7CkBAIC01NDUsMTMgKzU0NSwxMyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnNlc3Npb25GYWlsdXJlKCkKICAgICBtX3Nlc3Np
b25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQp
OwogCiAgICAgR1NUX1RSQUNFKCJVcGRhdGluZyBzZXNzaW9uICVzIiwgc2Vzc2lvbklELnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5n
ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShi
b29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVz
c2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAg
IGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU2
Miw3ICs1NjIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgICAgIFBh
cnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdl
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAg
ICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAg
ICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNz
YWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAg
R1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogewog
ICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwog
Ci0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3Mu
YXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3Ms
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNz
KSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU5Nyw3ICs1OTcsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBl
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNl
TWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBp
ZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAg
ICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1l
c3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2Fk
KCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUg
JXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAo
Im1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om1ha2Vf
cGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6Okxp
Y2Vuc2VSZXF1ZXN0KSwKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNl
bgogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nlc3Npb25JRCA9PSBzZXNzaW9u
SUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAg
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBM
aWNlbgogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VN
ZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1Bh
eWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
ID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBh
cnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1Rf
REVCVUcoInNlc3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGggJXp1IiwgbV9zZXNzaW9u
SUQudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OlJlbGVhc2VkKSwg
V1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IGNkZDhkYTIxMTIzYy4uMTAy
MGUxNTMyMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMsOCArOTMsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTEx
MCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRh
dGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVt
ZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJ
ZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9rZXlTeXN0ZW07
IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7
CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlciBmaW5h
bCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQxLDE0ICsxNDEs
MTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIqIGNkbUluc3Rh
bmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAg
IHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKLSAg
ICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsK
IAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJhY2soS2V5SURU
eXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAgIHZvaWQgZXJy
b3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVycm9yQ2FsbGJh
Y2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKICAgICB2b2lk
IHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIElu
aXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3MgbV90aHVuZGVy
U2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBtX3Nlc3Np
b247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBtX25lZWRzSW5kaXZpZHVh
bGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFj
az4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Li5lYTg5MGY2N2RhMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdF
cnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBt
YXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBh
c3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0
YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5
bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENl
bmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQp
OwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5Li4yN2RkNGVhZTBk
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgs
OCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25f
ZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBtX3Bh
eWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1
bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1
aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5
cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAi
Y2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1f
cGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAg
ICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9CiAKLSAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHBheWxvYWQpCisgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5
c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVk
KFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxv
YWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQo
cGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUsMTAgQEAgcHVi
bGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJl
IQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBt
X3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2Fk
LmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4g
bV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBj
b25zdAogICAgIHsKQEAgLTg2LDExICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAi
Y2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9w
YXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWMuLjY5MjhhNjNlOTcxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1
Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxp
bnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZh
ZjdiMDM4OS4uNjhiY2M4ODQ2YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyAr
NDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3Jl
YXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRv
Y3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJy
ZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTMuLmZh
MDAwODExNjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw5ICszNSwxMCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJj
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IHN0cnVjdCBFT1RIZWFkZXIgewogICAgIEVPVEhlYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNi4uMGZhOGYzMDZhZDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZl
cnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0
IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBhZHZh
bmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBjb25z
dCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3Bl
blR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5
cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAogdm9p
ZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBp
cyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFibGUq
IHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihidWZm
ZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBA
IHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3QgT3Bl
blR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBl
OjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdldFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
cmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcxOWEuLjBkYjRhZmFkYjNm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVj
dFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgZW51bSBEV1JJVEVf
Rk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5k
ZXggNWYxMGY3MzkyZDA0Li4wOGZjOWYxOWVhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRD
cmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5
UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNp
ZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRU
YWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1
cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDYyOWUwZTYxYTEwNC4u
NzczNTczOWI5MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIs
NyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZv
aWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKaW5kZXggNGY0NzI1ODZiNDI0Li5jMjM2NWZkNzQ0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDog
cHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQo
KTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRC
dWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3Rh
dGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwog
ICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxs
RGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBm
aW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2Li4yZDk3MjcwYTczNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAvLyBUaGlzIGZ1bmN0aW9u
IGxvYWRzIHJlc291cmNlcyBmcm9tIFdlYktpdAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFy
Kik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
CmluZGV4IGQ5NTZkOWU3NjI1ZC4uMzNjOTVlYzMzMzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNw
YWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZl
cikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVu
c2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVk
QnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVkID0gMDsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBi
b29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRyPFNj
YWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/
V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYS4uOWM0MDU1NzgyNDFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUg
ZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNlIHRoZXJlIGlz
bid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVj
b2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVy
PiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03MCwxNiArNzAsMTUgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0
YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBp
ZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAg
ICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUg
aW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRh
LmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29u
dGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1
b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJl
Z2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9k
ZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXpl
KGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+
IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0
YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYv
QVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMuLjI2Zjg4NjQ5NmU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklG
SW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBBVklGSW1hZ2VS
ZWFkZXI6OkFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJiBkZWNvZGVy
KQogCiBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1hZ2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKLWJv
b2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wgQVZJRkltYWdlUmVhZGVy
OjpwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9N
ZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBB
VklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rl
ci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VS
ZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGJvb2wgYWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRl
Y29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBi
dWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2b2lkIEFWSUZJ
bWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEpCiB7CiAgICAgaWYgKG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2F2aWYvQVZJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCmluZGV4IGNiY2EwYjhjMTI0Yi4uNDk2ZjY5
ZjgxMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKQEAgLTM5LDggKzM5LDggQEAgcHVi
bGljOgogICAgIEFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJik7CiAg
ICAgfkFWSUZJbWFnZVJlYWRlcigpOwogCi0gICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQg
ZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJvb2wgcGFyc2VIZWFkZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CisgICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYp
OwogICAgIHNpemVfdCBpbWFnZUNvdW50KCkgY29uc3Q7CiAgICAgZG91YmxlIHJlcGV0aXRpb25D
b3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDcyNzY5YTY5
MjZlYy4uZjc0NTVjMTQ2YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdl
RGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2Li42NGRl
ZDZhYmJlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiYm1wIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBm
aW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgo
c2l6ZV90IGluZGV4KSBmaW5hbDsKICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVz
IHxtX3JlYWRlcnwuIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRl
ZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlUmVhZGVyLmgKaW5kZXggNDg0NGYzODBkYzE3Li5iZDQzMGU4YThiZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZVJlYWRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEJNUEltYWdlUmVhZGVyIHsK
IHB1YmxpYzoKICAgICAvLyBSZWFkIGEgdmFsdWUgZnJvbSB8ZGF0YVtvZmZzZXRdfCwgY29udmVy
dGluZyBmcm9tIGxpdHRsZSB0byBuYXRpdmUKICAgICAvLyBlbmRpYW5uZXNzLgotICAgIHN0YXRp
YyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVp
bnQxNihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50
IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQxNl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5
KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCAyKTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBpbmxpbmUg
dWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
LCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkK
ICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQs
ICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAg
IEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBwYXJlbnQsIHNpemVfdCBkZWNv
ZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNldCwgYm9vbCB1c2VzQW5kTWFz
ayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBidWZm
ZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAm
ZGF0YTsgfQogCiAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29kaW5nLiBJZiB8b25seVNpemV8
IGlzIHRydWUsIGRlY29kaW5nIG9ubHkKICAgICAvLyBwcm9ncmVzc2VzIGFzIGZhciBhcyBuZWNl
c3NhcnkgdG8gZ2V0IHRoZSBpbWFnZSBzaXplLiBSZXR1cm5zCkBAIC0yNzIsNyArMjcyLDcgQEAg
cHJpdmF0ZToKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBtX2J1ZmZlcjsKIAogICAg
IC8vIFRoZSBmaWxlIHRvIGRlY29kZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9kYXRhOwogCiAgICAgLy8gQW4gaW5kZXggaW50byB8bV9kYXRhfCByZXByZXNlbnRp
bmcgaG93IG11Y2ggd2UndmUgYWxyZWFkeSBkZWNvZGVkLgogICAgIHNpemVfdCBtX2RlY29kZWRP
ZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4
IDYwMTIwMzc0ZjljNC4uNGEyMTI1NWE4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJh
Y2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIElt
YWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAg
ICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgp
LCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9f
dXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRf
dXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQo
KSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShz
dXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQq
IGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYo
KTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGIuLmI5ZWMwMWI4YWU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzVkZjMzZjZk
ZmM0Li5jNzQ3MTk5OTliOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9Ci0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
KSBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0
aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmgKaW5kZXggNDIxNDZlMDMyOTMyLi4xMDgyZmRmMGRmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2
b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBt
X2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8v
IEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdl
YkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsK
IApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29k
aW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1Ny4uYzA3MTM0NWI4YmYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBJQ09JbWFnZURl
Y29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURlY29kZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAg
ICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApp
bmRleCBmYjdhOTAzYjJhMDcuLjEwZWU5YjRkMmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
aApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rl
cgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJp
Y28iX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZp
bmFsOwogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYuLjVjZmFj
OWYyMzU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIy
LDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtl
cikKIAogc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVj
b21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBl
Z19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1h
cmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFy
a2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBi
dWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRh
dGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVy
U2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkK
KyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91
cygpOwogfQogI2VuZGlmCiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Ynl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2Fz
dDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6
ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9K
UEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmVjZjY0NTAy
NzdlLi4yMDQ3M2YwZWVlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdl
RGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVy
OjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAg
ICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOwog
ICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRhLCAwIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNlLi40Y2JkMzIzZDlh
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVi
bGljOgogICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2Rl
KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVu
c2lnbmVkIGhhbHRBdEZyYW1lKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0
QXRGcmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5Owog
ICAgICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURl
Y29kZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5jcHAKaW5kZXggMDJmMWIwOWRiYzc2Li5iMWJlYzU1ZTc4YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNv
ZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVm
YXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4g
dGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5n
IHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEg
Y2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0
YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNv
bnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0
YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0
YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVy
U3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1
dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBh
ZjM2NWU5Y2Y5YzcuLmRkMjhiYzg4ZGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIo
KTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmlu
YWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNp
emVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3Vu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYi4uYjIzNzdmZTM0MTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjM2LDE0
ICsyMzYsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogI2lmICFQ
TEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1J
bmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFu
Z2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdh
c0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFk
UlRGRCgqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRp
ZE5vdFJlYWRUeXBlOwogICAgIH0KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVJURl0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRl
eCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAg
ICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVy
bmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikg
PyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsK
QEAgLTI1MSw3ICsyNTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
I2VuZGlmIC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1h
Z2VUeXBlcygpIGNvbnRhaW5zT2JqZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAg
cmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAg
ICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCksIHR5cGUsIGl0ZW1JbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpID8gUmVhZGVy
UmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpp
bmRleCAxNjdjZWYwMmQ3OGQuLjE2YjNkNWQ0NDE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMzgsNyArMzM4
LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2ludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNDYzLDcgKzQ2Myw3
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9
PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6
ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERh
dGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29u
dGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldl
YkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2Jq
ZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFz
c10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2Jq
ZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFz
c10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRy
aWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURh
dGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hh
cmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29j
b2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1
MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJ
bWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2Uu
Y2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkK
LSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJl
c291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBl
KSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1F
VHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0
KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJk
SW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0
U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MzUsNyAr
NjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZv
TGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0
YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJp
YWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNE
YXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7
CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJk
IHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBk
cm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJz
IGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVz
IGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxv
YiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdv
dmVyYApAQCAtNjcyLDggKzY3Miw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIg
PSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0p
OwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1
M2M0NDAzZC4uY2FiYWFhMTE4ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYg
cHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9
CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PihGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgfQogICAgICwgbV9vcmlnaW5hbFJl
c3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAgICAs
IG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OS4uMGQyNTQ5OGI4
NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpA
QCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNv
bG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2Fy
ZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxl
bmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVy
bCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBl
ci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5
IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFz
dGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQ
cmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwg
c3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
aWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0
cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRX
cml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiLi44OGQwNDAyNTg0MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEy
OCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVu
dC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQt
PmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEg
Y3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29u
dGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElV
bmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
KS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJ
dGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjLi5jM2I0ZDJkOTYyMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpA
QCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
KSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBs
YXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAg
ICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsK
QEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxk
V3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlm
IChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJv
YXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQxLDEyICszNDEsMTIg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5
cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQog
Ci1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRl
UGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07Cisg
ICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBl
OnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGlj
IFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAg
ICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0
Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpn
ZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXgg
NjgxM2Q1ZGE3ZGNiLi43OTY1NTRmNGM5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAg
LTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1wbGU7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZh
dGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXVkaW9WaWRlb1Nl
bGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRpYVN0cmVhbVByaXZhdGUmKTsKIAotICAgIHVz
aW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1c2lu
ZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+Owog
ICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikgPSAwOwogICAg
IHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGMyNWRmOTE1NzRhNi4uNDk4ZDRlZTEzNDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC05Myw3ICs5Myw3IEBA
IHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5n
KCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNoRGF0YShGZXRjaERhdGFD
YWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9OwogICAgICAgICBWZWN0
b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgpLCBtX2J1ZmZlci5sZW5n
dGgoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaAppbmRleCAyMTFmNzVlZTczYWYuLjljMmM3OTdiODE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1w
bGUmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVk
aW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFU
aW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGZldGNo
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJs
ZSk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAgdm9pZCBwYXVz
ZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNvbXBsZXRlRmV0
Y2hEYXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJvb2wgbV9oYXNB
dWRpbyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKQEAgLTExNyw4
ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRl
cjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Rh
dGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxl
dGlvbkhhbmRsZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURf
QllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25I
YW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9G
b3JtYXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTMuLjg0ODQx
MDBlYWM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0ZXIuY2xl
YXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBubyBsb25n
ZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5k
IG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJEZWxlZ2F0
ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9IG51bGxw
dHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9mZXRjaERh
dGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIs
IDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAg
IExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAg
ICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRh
LmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tl
ciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEp
OwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQogCiB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggYTliMjlkNTllOWFhLi5j
ZGVlNjAzNTIzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBu
YW1lc3BhY2UgRGF0YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZmFmZGZlODdjODM3Li40YmViY2I1MDk4
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3MgVGltZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2Li5iYThmZDRmZjRmMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJj
ZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNv
dXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
LSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMzN2Q1NmNlOGMuLmM0ZjA1NDg1ZjI4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3JhZ2VBbGxvd2Vk
LApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRh
KFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2ln
bmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVk
QnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQppbmRleCAxZmYwNjUyMTZmYTYuLjAwOGUyMjZmZjkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3Qg
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAg
ICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZy
ZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7
IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5
bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25I
YW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0
IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZl
cjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFz
cyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3Nm
dWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsK
ICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiAr
MTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRh
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8v
IEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAq
IGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMu
CiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0
ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRo
ZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAg
ICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAor
CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0
YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWlu
UHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5l
cmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sg
PSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9
IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRl
XSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3Bv
bnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8m
IHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNr
RGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAg
ICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRl
eCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJh
bmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5Rmlu
aXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQot
ICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEu
YnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
aW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENv
bnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAg
IGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
YXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NX
aXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApp
bmRleCA0MDQ4ODVhZTYzNzYuLmNlNGMyNTQ1Y2RlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgK
QEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sg
OiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2Vi
Q29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNp
Z25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9u
ZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZToo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRs
ZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lD
aGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9u
c2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZv
aWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXgg
ZTA0MDEwYTk4MTFiLi44Yzg5ZDkzODY1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAg
LTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcg
bG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxv
YWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtNjUyLDcgKzY1Miw3IEBAIGJv
b2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291
cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKQEAgLTkx
NSwxMSArOTE1LDExIEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5
KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGEKKy0gKHZv
aWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRh
OihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7
CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJl
dGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBu
c0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5n
ZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5T
VVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRh
dGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBp
ZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246
ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGMzNmUxZjg4NzY0My4u
MzQ5NDQ1OTI1NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybERv
d25sb2FkOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJs
UmVzcG9uc2UmJiByCiB9CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxE
b3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5oCmluZGV4IGEzYWEwY2Y1ZmNkMi4uY2RlNDQ0NTc3NWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC03Miw3
ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVz
dCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9u
c2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9h
ZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJs
UmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4Li4wOTBkMDM5YmE0NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTExOSwxMiArMTE5LDEyIEBAIEN1cmxNdWx0
aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVu
dCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8g
VGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBt
X2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZm
ZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5v
dCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUg
cmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRp
cGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUo
KSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0
YXRlOjpFbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA1YzA4YmNjNWViM2Uu
LjlhMWExYmJkMTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsKIGNs
YXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11bHRp
cGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgxMzE0Li5jODEz
ODg2YThkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMjgsMTIgKzI4
LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZm
ZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1
Li5kODJkZDNjMTBhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHNpemVfdCBDdXJs
UmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAKIC8vIGNhbGxlZCB3
aXRoIGRhdGEgYWZ0ZXIgYWxsIGhlYWRlcnMgaGF2ZSBiZWVuIHByb2Nlc3NlZCB2aWEgaGVhZGVy
Q2FsbGJhY2sKIAotc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRl
ZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSwgQWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC03NzcsNyArNzc3LDcgQEAgY29uc3QgU3RyaW5nJiBDdXJsUmVxdWVzdDo6
Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkKICAgICByZXR1cm4gbV9kb3dubG9hZEZpbGVQYXRoOwog
fQogCi12b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRv
RG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsK
QEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2Fk
RmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBp
ZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVI
YW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3Nl
RG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggNmJkOGE2YmZiYTM3Li4zYzdjZGQ4ODNlYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5o
CkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0
Q2xpZW50OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVl
c3RTY2hlZHVsZXJDbGllbnQsIHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAg
LTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVy
cmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAg
ICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRl
ckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENV
Ukxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0
ZToKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAv
LyBEb3dubG9hZAotICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5h
YmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25s
b2FkRmlsZSgpOwogICAgIHZvaWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVu
dC5oCmluZGV4IDA4Yzg2YzdkNDY4NC4uMzQ3OTgzMmY1NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJs
UmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3Qm
LCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3Vy
bFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
dXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlm
aWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAppbmRleCA4MThkNWE5NWUzZTEuLjMwNWQ0ZTVjOWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTUgKzE0MiwxNiBAQCB2b2lkIEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1
ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChjYW5jZWxsZWRPckNsaWVu
dGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xl
dG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3Zl
KGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwg
V1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBO
ZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuaAppbmRleCA2ZDU1ODY0NDUyZmQuLmRhZjBhNTlhNGU1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
dXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmlu
YWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJl
cXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBj
dXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7
CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJy
b3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50LmgKaW5kZXggYmM0ZGFhZmJmMjFhLi4xZjRhMTkzMTMzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxMZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YS4uNDUzNjgxYmRhYjJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAg
U3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZp
bGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsg
Kytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KKyAgICB2b2lkIHJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAw
IH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbElt
YWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbElt
YWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xP
QkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFt
ZW1PYmopIApAQCAtOTg2LDE1ICs5ODYsMTUgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFs
SW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNv
bnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUo
KSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwog
CiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERy
b3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZmZXIq
IGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJM
JiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAv
LyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRl
bjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYg
KGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmls
ZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAw
KTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2Nl
ZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUo
dGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAg
ICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQog
ICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVs
ZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmlt
YWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOworICAgIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIgfHwg
IWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2IuLjg0ZmEyOWNlMWYz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgYm9vbCBNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lz
dGVtLCAib3JnLndlYmtpdC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtl
eXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiYmIGtleXMpCit2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElE
KGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYg
a2V5cykKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvbnMuYWRkKGlkLCBXVEZNb3Zl
KGtleXMpKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC03NCw3ICs3NCw3IEBA
IHZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCCiAgICAgICAgIHZhbHVlLmFwcGVuZChXVEZNb3ZlKGtl
eSkpOwogfQogCi1WZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1v
dmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKK1ZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5m
aW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTgzLDcgKzgzLDcg
QEAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zy
b21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmkKICAgICByZXR1cm4gV1RGTW92ZShpdC0+dmFsdWUp
OwogfQogCi1jb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6
a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9z
ZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTIw
Miw3ICsyMDIsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAg
IHJldHVybiBtX2ZhY3RvcnkgJiYgbV9mYWN0b3J5LT5zdXBwb3J0c1Nlc3Npb25zKCk7CiB9CiAK
LWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIE1vY2tDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yMTEsMTIgKzIxMSwxMyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJh
Y3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAg
YXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBT
dHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAg
VmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVz
cG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRh
aW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yNjksOSArMjcwLDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFj
ayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNl
cnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcg
Y2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFp
bGVkKTsKIH0KQEAgLTI5Nyw3ICsyOTgsNyBAQCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiYmIGluc3Rhbgogewog
fQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
TW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9y
eSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMyMyw3ICszMjQsNyBAQCB2
b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3Vj
Y2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2Nr
Q0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkg
OiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQg
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25z
ZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9y
ID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5z
aXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3Ry
aW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggZjVjZGE1MDVj
ZjJhLi5kOTZjMTU2ZWU0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0aElE
KGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9CiAg
ICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNzaW9u
cy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0gICAgY29uc3QgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBp
ZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBr
ZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsKQEAg
LTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsg
dHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsK
ICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CiB9
OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUgewpAQCAtMTIxLDggKzEyMSw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJv
b2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFdl
YWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KICAgICB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0
IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBm
aW5hbDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZjMTI3YjdiNjdiZS4uMDU5
ZjNhMzg2YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVk
QWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0
ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVu
dEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNDExYTMwMDk0N2I1
Li42MzVhYzg0YmU3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNo
ZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIo
KSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOS4uNWY4NTQ1ZWJhNWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIu
YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNj
cmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3Jp
cHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVU
Rjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVm
ZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1Npbmds
ZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9i
dWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5n
ZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50
LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmlu
Zy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0K
IAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVm
ZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMw
MzMwLi5mZDJjMWFlMmY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApA
QCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGljOgogICAgIFNjcmlw
dEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAg
ICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlw
dEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZm
ZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9
CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1
ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihtX2J1ZmZlci5j
b3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2Rl
ZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29u
c3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiLi40MDY2ZmIzNTJlYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0
OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNl
IGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAg
LCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAs
IG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAg
LTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJH
bG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShy
ZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCitib29sIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vy
cm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051bGwoKTsKK30KKwogYm9vbCBXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAg
IGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1f
aXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRh
KTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFn
bWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAgICAgICAg
ICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAg
ICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBlbmQoKmNv
bnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVu
dElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAg
ICAgICAgIH0KQEAgLTExNyw5ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAg
aWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEp
Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX2RhdGEt
PmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhLi4xYjNkNzg3MGYx
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
aApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0g
ICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNM
b2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250
TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9Owog
CiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5k
ZXggZWIyNjZiNmMwN2U2Li4wOTc1NDNlMWIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBA
IC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNzIENsaWVu
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRm9ybURh
dGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMC4uOWE4ZmIzNWNhNTM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNX
U2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZp
bGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRl
c2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRl
LCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJl
ZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmls
ZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3Rv
cmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2Vh
NTNlLi5mY2NjMmE5ZWQyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChm
YWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkK
ICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6
OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxl
KCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGlt
ZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVj
ZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJh
Y2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAg
aWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5n
ZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAg
aWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmlu
ZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVz
cG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBk
ZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3Jt
YWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFT
U0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBB
U1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAw
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGlu
ZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNw
b25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51
bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNw
b25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUo
ZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4K
LSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDcuLjE2MmNhOTVhZWI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBA
IC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZv
cm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNz
IFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7Cisg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
OwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3
MTc5NDc1ZjdkZmQuLjdjNjcwZjA1YjliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMzIgQEAKKzIw
MjEtMTItMDUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBT
b3VyY2VCdWZmZXJQYXJzZXIgc2hvdWxkIGJlIHVzaW5nIGNvbnRpZ3VvdXMgc2hhcmVkIGJ1ZmZl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODY1
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6YXBwZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBT
aGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVz
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAq
IFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDoKKworMjAy
MS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVj
dWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmll
d0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRj
aERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFz
U3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291
cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAg
ICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hp
dmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToK
KyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFy
ZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAo
SVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAg
ICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dp
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAg
ICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9y
bUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJ
dGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25T
aGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRl
Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRE
YXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVu
dDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2Ny
ZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wNSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFk
ZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHAKaW5kZXggNTczMDY3ZTNkZDA1Li4zMWMyZDc2ZjJlZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90
ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAK
LXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRh
dGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkuaAppbmRleCA4ZTczZDNkOWE2NGIuLjAyYzVjZDM3YWU1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYs
IFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQg
dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZj
MjMzNGNmLi5kZTgyNzNiOWNmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApA
QCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlw
ZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZN
b3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+
cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxl
YXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Ym9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVz
c2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7
Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNl
c3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25h
bDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9uRGF0
YVJlZmVyZW5jZTsKICAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAgICAg
ICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RG
TW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1Zl
Y3RvciYmIGtleVN0YXR1CiAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3Rh
dHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKaW5kZXggOGE2MWY5ZDVmYWJjLi5m
ZTczMDk3MTMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lk
IHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNl
bmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RN
TWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rp
c3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1ZjRjM2IuLmY3Y2I2YTYzZWI5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02
MywxMiArNjMsMTIgQEAgUmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6
On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKIAotYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCitib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBS
ZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmgKaW5kZXggNjkyNGU3NGUzZjUwLi4zYjY2Yzc3NTc4NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51
bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIENETVNlc3Npb25U
eXBlIDogdWludDhfdDsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwpAQCAtNTgs
OCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAotICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNw
b25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggZTJjZDA1ZDdj
Yzc0Li5kZThmNmRmNTVhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzLi4xNTQ2YmRmZGZk
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2IuLjYxN2Y0NzY4OTU2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVT
ZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRl
c1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRh
UmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAo
bV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUo
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmgKaW5kZXggZDEzZDI1ZjY1ZjAyLi41YjdhN2UyYTc0MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3Jr
TG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51
ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZv
aWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
bG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2Fk
RmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cAppbmRleCA3ZTU3MmIzYTc0YTIuLmU4M2Y5MTQzZDIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0x
MDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWls
YWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFS
ZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJl
bmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZl
dGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2lu
dGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVy
ID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRh
KCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVu
Y2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMi4uNzFmZDAyMjI5YmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCAz
ZjM5ZWIzMmYxYWEuLmQ4OTIwZTk4NzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3Zv
aWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIx
NDYyYTMxNjEuLmUxMWJmNTYzMTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxs
ZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5k
ZXggZDYwMThmNjEzODNhLi5lMDQ5ZTViMTJkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4
cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGJhYzAy
MmFiNDU0My4uNzk3NWQ0MWJhZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290
aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0
aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4
IGMzNzczYzk4Nzg1NS4uZWU1ZWIwMDZhYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90
IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFs
OwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZS4uMzQ4Y2Zm
YjllOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNz
IFBvbGljeUFjdGlvbiA6IHVpbnQ4X3Q7CiB9CiAKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggZTUwY2Y0YWJiZTU2Li4wZTVlYjVhZGMwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDE0ICs4
NywxNCBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRh
IHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZvaWQgc2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xv
YWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVwbHkpOwogICAgIEFT
U0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5pc051bGwoKSk7CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBi
dWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0
YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9h
ZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRp
YyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBs
eSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFt
ZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZm
ZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwg
bV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFt
ZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6
Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAq
dGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAg
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1f
Y29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAg
ICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9h
CiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5
bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQot
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNh
Y2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5l
bXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0g
bV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNw
b24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBl
LCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9idWZm
ZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1f
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAg
ICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAg
IG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5n
VGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAg
IH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQg
cmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1f
cmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRy
OworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNl
LmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRy
OworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAgICAgaWYgKG1f
Y2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2Vl
ZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2Rp
ZmllZApAQCAtODU4LDcgKzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5k
RGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7
CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7
CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xP
RygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTg2Niwy
MCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2Fj
aGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUp
IHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAg
IC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBs
aW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3Qg
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0g
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2go
KSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2Vt
aXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2ln
bmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8g
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1f
YnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAg
ICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAg
ICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkp
Ci0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9h
ZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAg
ICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBt
X2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQg
ZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0
YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAt
MSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0x
MjU2LDE5ICsxMjU4LDE5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZl
cmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVy
aW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NF
UlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQp
OwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7
ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1f
YnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7
CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9i
dWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMo
KSk7CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0
cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3Rv
cmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBp
cyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNO
dWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRy
eTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
IGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEsMTIg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBz
ZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9u
ZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6
IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBl
ZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJl
bnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwg
W2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJl
YWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
aW5kZXggZDIzNGRhYjViZWVhLi45ODQ0MjRhMzA2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTExNCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkgZmluYWw7CkBAIC0xOTIsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZp
cmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9p
ZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94
RXh0ZW5zaW9ucygpOwpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAg
fTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9u
b3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6
OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+
IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERh
dGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hl
OjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsK
ICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRp
cmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CmluZGV4IDExNDg1M2U0NWI3Mi4uMWFmMWUwOGUzYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgUGluZ0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0
ZWRMZWdhY3lUCiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwogfQogCi12b2lkIFBpbmdM
b2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgUElO
R19SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCAxOWVjOGNlYjky
ZTMuLmFiMjlhMGIxYWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Js
b2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlLi4xN2Q0NzkwN2EzZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3
OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9s
aWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMxZmYxNjQ3MTExLi44NTgwOGUxMjFiNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1LDcgKzU1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwog
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzcuLjgxOTY2MzAyMGM2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAg
ICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2Fs
bGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNS4uZWUx
YmM4YjdkNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mi4uN2EyNjIyMTlkZTc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
Ojpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7IH07CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNw
b25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkK
LSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgp
LCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5oCmluZGV4IDE4ZjU0NjkxZjM3Yy4uNDRmYzA2ODVmYTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAK
aW5kZXggMDQ3NzY4MzZmOTk5Li5kZDMwNWFmMjk3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQs
NyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSks
IGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRy
eT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEp
LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCku
c3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAt
NDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVj
dEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNz
KCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVu
Y3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0
aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjczMjUuLmVkMDRlYmNhMGIzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5o
CkBAIC00Myw3ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1v
ZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIFJldHJpZXZlQ29t
cGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNv
bnN0IFJldHJpZXZlSW5mbyYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkm
KT4mJiA9IG51bGxwdHIpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVj
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVl
c3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBF
bnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25z
ZSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRyaWV2ZURhdGEo
Y29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+KTsK
ICAgICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlUmVkaXJl
Y3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVj
dFJlcXVlc3QpOwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKaW5kZXggYmEzOWQ5ZTJjMjZhLi43NjEwNzhkZWEwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBA
IC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQogICAgICwgbV90
aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAg
LTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VS
ZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rl
ci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAg
ICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBp
ZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Kj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAK
ICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9
CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9y
YWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3VyY2VTdG9yYWdl
UmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBFbnRyeTo6
YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIEVudHJ5Ojpi
dWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIGluaXRpYWxpemVC
dWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1YzM4MDFjMy4u
OWMwNDIwZDQ0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNz
IEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbnRy
eShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0IEtleSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3Jh
Z2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
IGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVl
c3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWlu
Z1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJD
RSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFyZWFibGVSZXNv
dXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmlu
ZGV4IGFkMDlkZjQ0ZDlhZi4uNDFkODIzNTAyNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRp
dmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAg
ICAgOiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAg
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCisgICAgLCBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQog
ICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKQogewog
ICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9u
KCkpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9y
ZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRp
cGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9u
U3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5v
dCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkK
QEAgLTEyMCwxNyArMTIwLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdy
b3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5k
KGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUo
KSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEz
OSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3Jp
Z2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYo
KSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9j
YWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENy
ZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAg
aWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2Nh
Y2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9i
dWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNC4uMWI4NDNkYjdlYzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
IApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6
RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMC4uMzE5OWJmZjMxMWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVByZWZldGNoQ2FjaGU6OkVu
dHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVu
dHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogcmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSkpLCBidWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtNzIsNyArNzIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+IFByZWZldGNoQ2FjaGU6
OnRha2UoY29uc3QgVVJMJiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGlyYXRpb25U
aW1lb3V0IHsgNV9zIH07CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiBy
ZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVmZXRjaENhY2hlOjpzdG9y
ZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAgbV9zZXNzaW9uUHJlZmV0
Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMjUxNTIw
YjMxZWEuLjUyYzBiMTBmY2M2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0NywxOCBAQCBwdWJsaWM6CiAK
ICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
ICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWxl
YXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KKyAgICAgICAg
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0UmVx
dWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlKGNvbnN0IFVS
TCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHN0b3JlKGNv
bnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVSZWRpcmVjdChjb25zdCBV
UkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBiOWFiMGRlZWJiOWYuLjQx
NjY4YTViMWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJMJik7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0
cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2QuLjMwNTFmMTY5Y2IwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAg
ICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJp
Y3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJy
ZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5k
ZXggOGZjN2I2NjNlNmY3Li4zN2YyOTQxNjY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTE3
Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVz
cG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNl
aXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0
ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8
IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2Fk
KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2Li40NWJlNWNlMTg0MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRh
VGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpD
dXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1
cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywg
dW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVz
dCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxl
dGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihXZWJDb3JlOjpDdXJsUmVx
dWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGY1ZGI3MDZjNDQ1OC4uMzNkNDNi
NzIyMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgUGFja2V0
T3B0aW9uczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaAppbmRleCA3ZTBkOGRiZTE5MDIuLjE3ZjA4YzI4ZWExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjMsNyArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29k
ZXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29k
ZWQgZGF0YSBpbiBhIG5ldyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRh
IGluIGEgbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBhdm9pZCBjb3B5aW5nIGZy
b20gdGhlIERlY29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUg
YSBEYXRhUmVmZXJlbmNlIGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpAQCAtNDMsMTEgKzQzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAg
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJD
b3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVm
ZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1
ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1f
YnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCisgICAgICAgIDogbV9idWZm
ZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1Li42N2VjOGU1ZTkyYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2Ug
dGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4K
Ky8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhh
dCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KIAog
I3ByYWdtYSBvbmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRl
eCBkMjQwNmVlMjkwNTMuLmMwMjZmNTQ5NTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxTaGFyZWRN
ZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmMuLjFiNGZk
ZmFmNjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NSw2ICs0
NSw3IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKICNpZiBPUyhEQVJX
SU4pCkBAIC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IENoYW5nZSB0
aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJlZE1lbW9yeT4gYW5kIGNy
YXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRl
KHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVj
dGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBj
YTBjMjRiMjc3MzUuLjExMGUwYWRkZTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxl
YXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0
YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNy
ZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2
ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAg
ICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURh
dGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdm
NGViMWViYTI4Li4zYzFiNTdkNWFhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjQsMTMgKzU2
NCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBmb250
RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAo
IWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNl
bmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAg
ICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
Zm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUo
KSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRl
bUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQw
Mi4uNmZhMDJhN2JjM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAKIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50
OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBz
ZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVy
biBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMi4uODQzZmQ0NzMxM2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0Uo
RGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAjdW5kZWYgREVGSU5FX1NJTVBM
RV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1
ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0YXRp
YyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOwog
ICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0g
ICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFyZWRCdWZmZXIgZW5jb2Rpbmcg
aW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCisgICAgLy8gRG8gbm90IHVz
ZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVu
aXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAgIC8vIG1heGltdW0gbnVtYmVy
IG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVuIHNlbmRpbmcgbGFyZ2Ug
ZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25Vbml4
LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2FnZSB0
aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3Rv
cjxTdHJpbgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
IGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTUw
LDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3RyaW5n
KQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsKIAot
ICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVm
ZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwogICAg
IGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZv
cm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwog
fQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0YSkK
QEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAg
ICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDEwLDYgKzMw
MTAsMzQgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisK
K3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8
ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwpAQCAtMzEwNyw3ICszMTM1LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlS
ZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBt
ZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKIH0K
IApAQCAtMzExNyw3ICszMTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUkKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwLi42ZmFjMmFh
MWVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFz
cyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC0xMzgsNyArMTM5LDcgQEAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEJ1ZmZlcjsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3Rl
cHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50
czsKQEAgLTc1MSw2ICs3NTIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAjZW5kaWYKIAor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVj
b2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYp
OwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJl
c3VsdERhdGEuY3BwCmluZGV4IGNmMmU0ZDVmOTNmZC4uYjYwN2FjZTgzOGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04NSw3ICs4NSw3
IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChi
dWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNpemUgPSBidWZm
ZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZS4uNjcxNzU4YTI4MGE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEgPSBzZWxlY3Rp
b24uaGFzQ3VzdG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0YTsKICAgICBp
ZiAoaGFzQ3VzdG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hhcmVkQnVmZmVy
PihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAKICAgICBib29s
IGNhblNtYXJ0UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsKICAgICBlbmNv
ZGVyIDw8IGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2MuLjE0OTBjNTExYmRjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtOTgsNyAr
OTgsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRp
c3BsYXkoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0
CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5j
bG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkz
ZC4uZmU1MGU1MzhiOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0Owog
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7
IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAppbmRl
eCA3ZmMwNTQ1N2U2NGMuLjRlMjY2ZjM2N2FjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGEuLjExMWYwOTI2M2Y4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Owogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHB1
YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+
JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwg
T2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YS4uZGZlZjNlMDcwZjk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBbZmls
ZVdyYXBwZXIgcmVndWxhckZpbGVDb250ZW50c10ubGVuZ3RoOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAor
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xv
c2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc0VuY2xvc2luZ0ltYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0Mi4uMDFjODEwMjc4ZWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1
OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3Jl
OjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAg
ICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0
ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGln
aGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5p
bF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFs
bG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBp
ZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVB
cHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAg
ICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5n
ZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQu
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0MzcwMTUuLmM4MDI5YzE0MGE2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEzMyw3
ICsxMzMsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQg
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwotICAgICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CmluZGV4IDM4NTU4ODJjODdkYy4uOGQzYTg1NjQ2MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjIwLDcgKzEyMjAsNyBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0aV07CiB9CiAKLXZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmln
YXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAg
ICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0K
aW5kZXggODAyZmZhYTZkNmVkLi42ODMzNzNlYWUwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIg
KzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0
cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVy
UmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRp
b25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0
cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAgICAg
IHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25l
bnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CisgICAgICAgICAgICB3
ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50
UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAg
ICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlNy4uZjU4OTEyNDE3MDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSk7CiAgICAgdm9pZCBzZXRGaWxlQW5kVVJM
VHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAq
dGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBOU1Bhc3RlYm9hcmQg
Kik7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSosIE5T
U3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBO
U1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpwYXN0
ZWJvYXJkT3JpZ2luKTsKKyAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6
OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmlu
ZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2Fy
ZE5hbWUsIE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKICAgICB2b2lkIHBhc3RlYm9hcmRD
aGFuZ2VkT3duZXIoTlNQYXN0ZWJvYXJkICopOwogICAgIHZvaWQgcHJvdmlkZURhdGFGb3JQYXN0
ZWJvYXJkKE5TUGFzdGVib2FyZCAqLCBOU1N0cmluZyAqdHlwZSk7CiAgICAgTlNBcnJheSAqbmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbmF0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggM2Q5ZTg3N2IwY2I3Li42MjM2N2RjNWFkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00NDQ5LDcgKzQ0NDksNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAq
ZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlzZWRVUkwgPSB1cmw7CiB9CiAKLXZvaWQgV2ViVmll
d0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNT
dHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5T
U3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
IGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdp
bklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShX
ZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVu
c2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVS
TCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJp
bmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBO
U1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFt
ZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldlYkNvcmU6
OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0pOwpAQCAtNDQ3MCw3ICs0
NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29y
ZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMo
ZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7
CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hp
dmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVC
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEu
Z2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBh
c3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBp
c0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgp
KSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9w
cm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQog
ICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZv
cm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBA
QCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0
aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAK
ICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1h
Z2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1h
Z2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRl
IGVycm9yOm5pbF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVj
N2ZjMzEzZS4uYjQ2MmQ4ZGI1Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC0zMjgsNyArMzI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YTgzMmU1NWFjYmEuLmU1
ZWFmNDFmMzhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1
OSw3ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xh
c3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXgg
ZGY1OWQ1NmZkNjk3Li4xOTk3ZWFlMjBhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6
OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVBy
b3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAg
ICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMu
ZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAgIHJl
dHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBl
CithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0
aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAg
ICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RG
TW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcs
MTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRy
dWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3lu
Y0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNp
emUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0g
eyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9Owog
ICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdU
Rk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21w
bGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklE
LCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjkuLjc5OTQyZjliMjBhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcgKzQ0LDggQEAgY2xhc3MgRnJhbWVJbmZv
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENv
bXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgp
OwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25I
YW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFu
ZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2Li43Mjc5Zjg0NGNjMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IGNo
YXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
PiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmKTsKICAgICB2
b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAgdm9pZCBjbGVhcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKaW5kZXgg
YzJiZjUxODNiMzBmLi41OTY2ZDU1NzRjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBAIHZvaWQgQ2xpcGJv
YXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYm
IGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5k
bGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAgICAg
ewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFu
ZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1h
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNo
YXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZ3RrX2NsaXBi
b2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9pbnRlcm4oZm9ybWF0
LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uLCBn
cG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZEJ1ZmZlckFz
eW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRhKj4odXNlckRhdGEp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRl
eCAwN2FiYjcxMzE5ODguLjViODFmYThmMjlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBDbGlw
Ym9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+
JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhh
bmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAg
ICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25I
YW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9y
bWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3Qg
Y2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb25zdCBj
aGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2RrX2NsaXBib2Fy
ZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlfREVGQVVMVCwg
bnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3Bv
aW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Li5hYjg3YzJhN2U4YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xMDAs
OCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRv
KSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdl
YkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBT
dHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2
aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUs
CisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVT
ZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3Rh
dGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVk
Q29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhNDExMjEzNWYyZWYuLmMzNjNlOTU1ZTg3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25z
dCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAgICAgbV9pbXBs
LT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwog
ICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGUwM2UwODBh
ZWUwOC4uMDFkODQwYTJhNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9y
eUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFu
ZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJl
ZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IGZh
OTQwMjVlZDc0Ny4uYzI4ZmU2NWYwY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgUmVtb3Rl
Q0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lv
blR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW90ZUNETTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAog
ewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAgIHJldHVybiB0cnVl
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgp
CiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2ls
bCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1
cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDBhZGRmODMzNTNi
Ni4uOGM0NTRlYjgzZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3Vw
cG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0
cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZp
bmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5h
bDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVu
dChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBsb2FkQW5k
SW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFs
OwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJp
bmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0
RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRl
ZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVkZWEyMWU5OTVhLi5hMTNl
NTE0NjBmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVu
dGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAg
ICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZiYTNiMTE2MWMuLjJj
Nzg1MWU0NDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAg
ICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBpbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQog
ICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBiYWQ0YzkwZDguLmM3
NDBjMDQ1MDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNDksNyArNDks
NyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFj
ayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lkZW50
aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
bV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5
cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNo
YW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdl
LCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkK
ICAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVh
c2VOb25OdWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZN
b3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZC4uNGU0Y2QyYzAwNWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAgIHZv
aWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExp
Y2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VU
eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NS4uNjI5MjY3OThjNWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6
OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUKIAog
Ly8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNvZGVk
RGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlCiAv
LyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4KLXZv
aWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2QzYS4uNDBkMzczNGY3YTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGIGZp
bmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAgLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
SWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUp
KTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2Ft
cGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdl
YkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29y
ZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwCmluZGV4IDQxZDUzODgwMjNkMy4uMDgyYjMzNjZjOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVy
QVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRp
ZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7
IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAgIEltYWdlRGVj
b2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnN1
cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNhbkRlY29k
ZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhpc10oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRh
dGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwog
ICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4
IGMyMzc4MmI2NTA0ZS4uMzYxOGFmZDEyMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRp
b24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVt
b3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxw
aGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8v
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVj
dGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyLi5iNDA4OWZkMzU0OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGU6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwgY29uc3QgV2ViQ29yZTo6
CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpB
dWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RG
TW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQgfSwgbV9pZGVudGlm
aWVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpGZXRjaERhdGEg
eyB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWlt
ZVR5cGUgPSBtaW1lVHlwZSgpXShhdXRvJiYgZGF0YSwgZG91YmxlIHRpbWVDb2RlKSBtdXRhYmxl
IHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoZGF0YS5zaXplKCkp
CiAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciks
IG1pbWVUeXBlLCB0aW1lQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAzMDNhNTRmNzZm
MTguLjU3NmZkMWM2ZTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUK
ICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2Vi
Q29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsK
ICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNC4uMDM1M2FhYmY3
ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50
RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQ
cm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUyMDQzMzVi
Li4xODBiMTExMWVjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBET01XaW5kb3dF
eHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Niw3ICs1Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2Jq
ZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6
OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6
OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4
ZDUyNGI1MjVjNmUuLjk0ZmVkMmU3ZTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDE4ICs2MiwxOSBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2Us
IGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFy
KiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVm
KCk7CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7
CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFS
ZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hh
cmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExv
YWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFi
bGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LndpbGxM
b2FkRGF0YVJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+
IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJl
ZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29u
c3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVh
dGVXaXRob3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7
CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSks
IHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgp
KSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0
cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCAz
NmJkOTgwYjJmYWEuLjg2M2JkYWI2Mjg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRl
ckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwot
ICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0
Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9t
YWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3
Li5hNzg0ZWMzODhiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlmIChm
aWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNp
emUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgp
KTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9IGZp
bGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQyY2MzZWIyLi4w
MjI3MGE1M2FmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDkgKzI4MSw5
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5k
bGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwg
JXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1Li4zMTBmY2E3ODc1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJv
bwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UpKSB7CiAgICAgICAgIGF1
dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciA9IG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuYmVnaW5JbnRlcmNlcHRpbmdSZXNw
b25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1l
KCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBv
bGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29t
cGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25z
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVM
b2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElk
ZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGlj
eURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNw
ZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0
YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9h
ZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBpbnRlcmNlcHQg
bG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKICAgICAgICAgICAgICAgICBt
X2ludGVyY2VwdENvbnRyb2xsZXIuY29udGludWVSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJ
ZGVudGlmaWVyKTsKQEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5k
CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVj
ZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFu
ZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBp
ZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVy
IGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7
Ci0gICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3Vy
Y2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAgICAgIFdFQlJFU09VUkNF
TE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2Nv
cmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgp
LmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50
ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNo
YXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA0
MmRlNDYxNDE5NzcuLmE3ZjQ1Yzg0MDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgZmluYWwgeyB9CiAg
ICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5hbDsKICAgICBib29sIHBs
dWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRlc3QoKSBjb25zdCBm
aW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUxMS4uZDQ3ZjMyYjdkNDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1
NTIsNyArMjU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQo
aW50KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIE5T
RGF0YSAqcGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzLi41OGQ3MGEzOWExNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNs
YXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3Jv
bGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBw
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTEuLjdmYjIwYzU5MmRiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODks
NyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVt
ZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9w
bHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAg
ICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVn
aW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJl
YW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dl
YlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQ
bHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NF
UlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRS
ZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBt
X21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxp
emVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
LT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjYsMTEgKzkyNCwxMSBA
QCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiAgICAgbV9wbHVnaW4tPndp
bGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3
OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0
YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkK
LSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAg
ICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3Ojpy
ZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2Uo
bV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAg
IGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+
aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRh
a2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQog
ICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0
YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NS4uZDE1M2EyOWNhMTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBG
SVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTExNSw3
ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNv
dXJjZURhdGEoKSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlv
bkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBi
b29sIGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JikgY29uc3Q7CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNu
YXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1
biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFu
c2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcAppbmRleCBmZWU4ZmVhN2JjYzguLmIwNGNjY2YxMTNlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcxLDE2ICs3MSwxNSBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAg
aWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNl
RGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNw
b25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAg
ICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAg
ICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUs
OCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6
bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRG
aW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAg
ICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25z
dCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEo
KmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRp
ZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1Zi4uNmIwYTQx
N2NmMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw3ICs1MCw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rp
b24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPFdlYkNvcmU6
OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CkBAIC04Miw3
ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JM
b2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVl
UmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxX
ZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9y
ZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYS4uN2NmYzAzYTg1ZDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50
OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0
ZDo6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21E
YXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQo
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZC4uYjA1ODYxODkxZWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYs
IGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7CiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZl
cnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2Qz
ZmJjLi4xNGEwODNjYTIwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
MTE4OCw4ICsxMTg4LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAg
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1h
aW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5S
ZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkg
OiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDog
MCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9u
c2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjYuLjRhOGJl
ZTU3ZmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTIwOSw3ICsy
MDksNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3Vu
dDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZl
ciAmJiBidWZmZXItPnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4
IGUyODA5OTYzZjRmNS4uMWZmODNlMTFiYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2
N2UwZWVlZS4uZDQxNTkwNGM3MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgog
ICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAs
IG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSB9CiB7CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY5LDEzICs2OSwxMiBA
QCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlm
ICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1f
YnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigp
OworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApp
bmRleCAwNDkyY2VlYzJmOWIuLmNjM2IyNGI3MjliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDggKzI5LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJC
dWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC00
NSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CkBAIC01NCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1f
ZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1
ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OS4uZTFlMGU2MTEyYTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxl
bWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNV
UkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVy
ID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2Ut
PmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNp
emUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5
QnVmZmVyKCppbWFnZUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxLi5kODhmNDRjZmNkZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCwxMCAr
MzQwLDEwIEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3Vt
ZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VE
YXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29k
ZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1l
Ojpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGIzYjBmYmNjNzZlNi4uYWNlMjMxNTY2MmUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3
ICsxNzM4LDcgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9y
UHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vi
c3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vi
c3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSkKIHsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9t
YWluRnJhbWUuZ2V0KCkpOwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2Fk
RGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQgc2gKIAogICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQg
dG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nl
c3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4K
LSAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwg
Y29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJz
dGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vi
c3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2Fk
ZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0
aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJz
dGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIElu
aXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURh
dGEpOwpAQCAtMzg2MSw3ICszODYxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9p
ZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcg
PSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1
ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4NzcsNyArMzg3Nyw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODky
LDcgKzM4OTIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6Omdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VV
UkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VE
YXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC02OTc3LDcg
KzY5NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBk
ZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2Fk
ZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1l
bnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlm
aWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAg
IGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2Fk
SWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0
YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggMzVjMjNmZTYwMmViLi5mNmRkZDc4ZWExOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNs
YXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNr
aW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTEzOTYsNyArMTM5Niw3IEBA
IHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKIApAQCAtMTU5OSw3
ICsxNTk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJGcmFt
ZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQg
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdV
UkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHks
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICAvLyBBY3Rpb25z
CiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggYzk1YzM4NDYzOTIyLi44NWU2NTE4NjkyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjE3LDcgKzMyMTcs
NyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9u
KQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFn
ZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgaWYgKCFjYWNo
ZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VC
dWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpi
dWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYu
LmYzZWRjMjkxZmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwg
Q29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJv
YXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVm
ZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxLi4z
N2YyN2U5NTJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZDc3NmU4MmRmMTMyLi4zNzc3
ZjJhNTZiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTIt
MDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
U2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZm
ZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIg
YWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hh
bmRsZS5oOgorCiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggMWY1NTg0
ZmEzODdkLi5hMjU1NjBhMTBjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHBpbmdMb2FkQ29tcGxldGUoeyB9LCByZXNw
b25zZSk7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5n
TG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1
cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IDc2YWE2YWFmODRkZS4uNWY2MTAyMTk2YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBT
aGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVz
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3Vy
Y2UubW06CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1j
b250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84
NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVu
dCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJI
VE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICog
V2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0
aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dl
YlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTAyICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gSG9vayB1cCBuYXZp
Z2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZi4uNjM1NWI2Zjkw
MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRp
b246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNh
Y2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3Ni4uOTU5ZDc0OGI1NmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAog
ICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVk
TG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExv
YWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOS4uYWEyY2M5ODE0NzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgUmVmUHRy
PFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRo
OwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAg
ICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwog
ICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgpKQpAQCAtMjA5
NCw3ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9u
Rm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAgICAgICAgfQogCiAgICAg
ICAgIG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAg
ICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNv
bi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5pc2hlZExvYWRp
bmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIxMzEsNyBAQCBzdGF0aWMgTlNJbWFnZSAqd2Vi
R2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlm
IC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
aW5kZXggMjRiNjk5NzA2ZGYwLi41MjdmYTU1MjE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJD
b3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJM
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjYuLjM5
ODY4NTlmNzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTU0LDcgKzE1
NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50
NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0
ZWJvYXJkVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxLi44M2U4NTkxNDM0NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2
MCwxMCArNDYwLDEwIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJp
dmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWlu
UmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3Vy
Y2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2Li4zOGQ3ZTUzMmQ2ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZl
CiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3Bs
YXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBh
cnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0t
PnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA4MzhlNDEzMzgxYTguLjI4ZDg3NTkyOWNjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDggKzM1NDAsOCBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3Qg
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9
IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBh
ZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgp
XTsKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9w
dE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSku
Z2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5p
c0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOC4uYWFkY2ZiZmVhMzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIx
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAo
dm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVz
b3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAq
ZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVy
bCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBu
aWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7
Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5k
YXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNv
dXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAg
ICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAg
ZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJl
c291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIg
ZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29k
ZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwog
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1F
VHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6
V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChO
U0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4ICszNjcsOCBAQCAtIChOU1N0cmlu
ZyAqKV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICBl
bmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAotICAgIFNoYXJlZEJ1ZmZl
ciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBu
dWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2
YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGVuY29kaW5n
LmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0
YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRl
eCAwMmU5NDZiYzFmYjAuLjg5ZDM0ODg2NDYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVm
ZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAg
ICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAg
ICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViRnJhbWUuaDoKKyAgICAgICAg
KiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKiBX
ZWJSZXNvdXJjZS5oOgorCisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICBy
ZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisK
KzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3Vz
IG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWVtb3J5U3Ry
ZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAg
KE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5o
OgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAg
KiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIgTG9jayBBUEkgd29yayBhY3Jvc3MgbXVs
dGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCmluZGV4IGI0MDczZTEwOGJkNS4uMDg5N2M3YzA1NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2Vi
RGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAg
aWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVy
biBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNv
cHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0
aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlLi41NThlMTNj
N2YxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU1OSw3ICs1NTks
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVz
dCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RS
IHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBX
ZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkws
IEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUs
IFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01ODUsMjEg
KzU4NSwyMSBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjps
b2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8g
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRh
dGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CiAgICAgICAgIGlmICghc3RhdC5j
YlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewogICAgICAgICAgICAgVmVj
dG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7CiAgICAgICAgICAgICBV
TE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNv
cHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgor
ICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJl
IGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAg
ICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAg
ICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2Fz
dDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRh
dGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChk
YXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBt
aW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShz
aGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxs
cHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgK
aW5kZXggNDM2MDU0ZmQ5ZGRiLi5mYTljMzgxY2M1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBj
bGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5NSw3ICsx
OTUsNyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2FkSFRNTFN0
cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVh
Y2hhYmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBC
U1RSIGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwg
QlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQ
cmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXpl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGlt
dW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBo
ZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NC4uMjc0YjdkMmQ2Y2YyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIHNo
dXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0
aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lU
X0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVy
KGNvbnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25z
dCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBs
b2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGlkcjsK
ICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OTQ4YWYxOTg3YmYuLjFjZTdk
MGE0MzczYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVm
ZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1
YnMuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8v
ODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wNSAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFk
ZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlh
ZDk5MC4uYjg0N2QzYTgyNmIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXN0Rmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5k
bGUpOwogfTsKIAotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRC
dWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0
ZW1UZXN0IGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4K
IGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgog
ICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IGQyM2Y3ZTFlNzI5ZS4u
ZWEyYWUyYzdlOGIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgVEVTVChEaXNw
bGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICAgICAgcmV0dXJuIHsgZ2xv
YmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNh
cGFjaXR5IH07CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNv
ZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBj
b25zdCBmaW5hbAorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2Rl
SXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29u
c3QgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6
ZSgpOwogICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoc3RkOjpnZXQ8U3Ryb2tlUGF0aD4oZGlz
cGxheUxpc3RJdGVtKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4Mi4uMTdjZTg3OTQxYmE4IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24g
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDEsODAgKzQxLDc1IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdG
aWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShT
dHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwor
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIEVYUEVD
VF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBFWFBFQ1RfVFJV
RShidWZmZXItPmlzQ29udGlndW91cygpKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1w
dHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NF
UlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVm
ZmVyLT5jb3B5KCk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7Cisg
ICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6
ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgp
KTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEo
KSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRz
T2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVu
ZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFy
KCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSgh
YnVmZmVyLT5kYXRhKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVp
bGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBw
ZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVt
Y21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZm
ZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKLX0KLQot
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBj
aGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxk
IjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3Ry
bGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3Ry
bGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3Ry
bGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBz
aGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAg
IGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAg
IEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRp
b24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdl
U2VnbWVudHMpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFy
cmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgw
eDQwMDAsICdhJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
dmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkp
OworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9F
USgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7
ICsraSkgewpAQCAtMTMxLDcgKzEyNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29w
eSkKIHsKICAgICBjaGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5j
aWR1bnQgYSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAg
ICJldCBtb250ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBp
YnVzIGludGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsx
NDYsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWdu
aXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQg
cGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9p
biEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVz
LiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0
YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAg
YnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBt
dXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVj
ayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgp
OwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+
c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NF
UlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAq
IDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9u
ZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNs
b25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAg
YnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAg
IGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1
LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQ
RUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNU
X0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0
RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0
RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNO
dWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8g
Y29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2Uo
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0
cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVY
UEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBp
cyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlz
RW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRh
MCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNF
bXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVy
Mi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAog
c3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjA0LDgwIEBAIHN0
YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZl
ckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0
ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNU
X0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rv
cjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsn
aScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMp
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJj
ZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1
dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0g
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAg
IGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2Qu
ZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCks
IGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUo
KSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAg
IGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVj
a0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJj
ZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVm
ZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWpr
bC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNp
emUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUo
KSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6
ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVT
VF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBt
YWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNv
bnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0g
ICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAg
YXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBh
dXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAg
ICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIx
LT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQ
RUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdh
JywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3sn
YSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7
J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9
fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAn
Yyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChW
ZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgq
YnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdi
JywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsg
J2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9
IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0
b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJp
bmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtl
KCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBF
Q1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxk
ZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEo
YnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAg
IGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7
CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAg
ICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7
CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEo
U3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyOTAsMTcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWls
ZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxk
ZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTI2Niw3ICszMDgsNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBj
b25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9
CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtz
LCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIs
IGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5r
cyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFy
YXRvciA9IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVy
KCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBj
aHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVk
ZVNlcGFyYXRvcik7CkBAIC0yOTksNyArMzQxLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5S
YW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwK
IAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikK
IHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAg
ICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7
CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZm
ZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAg
ICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAtMzEzLDIyICsz
NTUsMjQgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFy
YXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVy
LnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAg
ICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2lt
cGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBb
XShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CiAKICAgICAgICAg
U3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGlu
MUZhbGxiYWNrKCk7CkBAIC0zNTgsMjIgKzQwMiwyMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9
IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAg
ICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0g
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRl
eHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBj
b25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91
cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsK
ICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRv
cltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3Rv
cnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJl
ZEJ1ZmZlciwgImkiKTsKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVU
ZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
MSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4
dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihz
aW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRl
ci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJh
dG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1Mi4uZDAzNDFhODFkZWRhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAot
dm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0OjpTZXRVcCgpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCkBA
IC00NSw3ICs0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRl
YXJEb3duKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsK
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKaW5kZXggNjQwMTE5
YmRlNmZjLi5hMzkyYTA1MTk0NzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCA3
YTMyMDdmOTVjNjIuLjg1ODI4ZjAzOTIyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTEw
NCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVu
dGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29u
c3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1My4uYzNiNWQzZThkN2MwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00NSwxOSArNDUsMjAgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4K
ICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVy
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJo
ZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVs
bG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBo
ZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAg
ICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxl
bmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQo
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjYsMzUgKzY3LDM1
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICB9CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNl
Z21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
OiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciop
aGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAg
ICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBs
ZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29y
bGREYXRhKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpOwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwg
d29ybGREYXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRh
Lmxlbmd0aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50
Q291bnQgPSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisg
ICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAg
RVhQRUNUX1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0
YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBl
Y3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3Np
dGlvbiA9IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZm
ZXItPnNpemUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0
YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRl
ci5zaXplKCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhw
ZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5j
cmVtZW50YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBi
dWZmZXItPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RC
eXRlID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltA
ImQiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAg
RVhQRUNUX0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCmluZGV4IDQ2Yzc2MjAzZTFiMi4uNWJlNjY1
OTQ2MTM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0
dWJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNw
cApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihj
b25zdCBjaGFyKikKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2Fk
UmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKQogewogICAgIHJldHVybiBudWxscHRyOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446537</attachid>
            <date>2021-12-09 06:36:38 -0800</date>
            <delta_ts>2021-12-14 03:29:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233923-20211210013636.patch</filename>
            <type>text/plain</type>
            <size>5609</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM5ZDFmYWE5ODNiMDdj
OTMzNDIzZjViODZlNjg3YzNkZTI3MWMyMi4uZTM3MzM0Y2E1OTZkNTc3NzUwOTE1MzMyYzRiNTU1
ZWFhODQ3NGNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEyLTA3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBQcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIgbm90IG1vZGlmeSB0aGUgU2hhcmVkQnVmZmVyIG9uY2UgcmV0dXJuZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzkyMwor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84NjE0OTg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgQVBJIHRlc3RzLgor
CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNl
Rm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgor
CiAyMDIxLTEyLTA1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgU291cmNlQnVmZmVyUGFyc2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAppbmRleCBlOGJlMWIyMTM3NmEwNTg2OWQwZTYyNWNkODRiYmVhMmM4ZWEyOGEyLi45NmQ4OTgy
ZTkzNTAzNDc2OTZmYzk2OWQ1ODVhYjcwNzVkZTAyMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgotICAg
IHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZl
cnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29u
dmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dv
cmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29u
dmVydGVyPiBtX2NvbnZlcnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbQppbmRleCAzNWY2YzE0OTlhNTRiNDAwMDkzYmMyZTg5MmQ3OTgz
NzYwM2Q2YzA2Li40ODc1NmEzM2I1ODcyYjQ0YjJmMGJhMDg0MjQxZjg2Y2ZhZWJjYWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFs
RGF0YS5lbXB0eSgpOworICAgIG1fb3JpZ2luYWxEYXRhLnJlc2V0KCk7CiAgICAgcmVzb3VyY2VM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2Nv
bnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNl
KCkgfTsKIApAQCAtMjI0LDEwICsyMjQsMTAgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKICAg
ICBtX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9y
UHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9y
UHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1f
Y29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQoKS5n
ZXQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEuY29weSgpKTsKIH0K
IAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7
CkBAIC0yMzUsNyArMjM1LDYgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdM
b2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9h
ZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9u
c2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZl
cnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAg
ICAsIG1fb3JpZ2luYWxEYXRhIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0K
ICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IGE0ZTA4NzUwOWU1OTRk
MTg3MTEyNWQxM2M5OTUzYzRlNDM5NDkzN2YuLjJhYmFjZjNlZjQ5OTMyNGVkMDViMTcyNDU0MDBl
NzMxN2Q3MTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuY3BwCkBAIC04MSwxMSArODEsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm92aWRlci0+cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoKnRoaXMsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byBidWZmZXIpIHsKLSAgICAgICAgaWYgKGJ1ZmZl
cikKLSAgICAgICAgICAgIGFwcGVuZEZyb21CdWZmZXIoKmJ1ZmZlcik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGRpZEZhaWxVcGRhdGluZygpOworICAgIHByb3ZpZGVyLT5wcm92aWRlTWFp
blJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcigqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgIGFwcGVuZEZyb21CdWZm
ZXIoV1RGTW92ZShidWZmZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAppbmRleCBiOTg2ZWU0MGQxOTc1
MTc0ZjU0YWQyOWExNjhjYWRmMTg5NDU2YzNhLi5hYjcwMDRiZTkzMWYwMDNhNjk2Zjg4OTc2YjZi
NTQwZjgyMjRmNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIDogQ2FuTWFrZVdlYWtQdHI8UHJldmll
d0NvbnZlcnRlclByb3ZpZGVyPiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VG
b3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0Nv
bnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJikgPSAwOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446538</attachid>
            <date>2021-12-09 06:37:42 -0800</date>
            <delta_ts>2021-12-14 03:30:01 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>754393</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZjAxYWI5MGI0NzdkLi41YTFmNDBhZDJlMWEgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFy
dCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
Y29kZXJUZXN0L0RlY29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0x
Mi0wOCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxheW91
dCBwZXJmb3JtYW5jZSB0ZXN0IGZvciBzaW1wbGUgYmlkaSBjb250ZW50IHdpdGggaW5saW5lIGJv
eGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwNTM5OGMzNmJmOTcuLmZhYjBlZDE4OTg2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDMg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hh
cmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIg
YXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0
dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgor
CiAyMDIxLTEyLTA5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gSW50cm9kdWNlIEJhc2VsaW5lQ2FsbExpbmtJbmZvIGFuZCBPcHRpbWl6aW5nQ2Fs
bExpbmtJbmZvIHRvIHNocmluayBzaXplb2YoQmFzZWxpbmVDYWxsTGlua0luZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBlYWNjYTJjMjMzYTgu
LmI0NjkzZjkxYzYwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShj
b25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9y
IHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hh
cmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkg
VWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjRmMDIyNzUwMTQ3Li5lMzczMzRjYTU5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDczIEBA
CisyMDIxLTEyLTA3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgbm90IG1vZGlmeSB0aGUgU2hhcmVkQnVm
ZmVyIG9uY2UgcmV0dXJuZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzkyMworICAgICAgICByZGFyOi8vcHJvYmxlbS84NjE0OTg1MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgQVBJIHRlc3RzLgorCisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0
YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjp1cGRhdGVNYWluUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlci5oOgorCisyMDIxLTEyLTA1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgU291cmNlQnVmZmVyUGFyc2VyIHNob3VsZCBiZSB1c2luZyBj
b250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzODY1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2MDg1MjUzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBkaWZmZXJlbmNlcy4KKworICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6
dGFrZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6
OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisKKzIwMjEtMTItMDMgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVk
QnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJl
IHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1No
YXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFs
CisgICAgICAgIHR5cGVzLgorCisgICAgICAgIFJlbmFtZSBvbmx5LCBubyBjaGFuZ2UgaW4gYmVo
YXZpb3VyLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEltYWdlUmVhZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAg
ICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW06CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
aDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoK
KyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1Nl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVudFJl
YWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tOgorICAgICAgICAqIGVkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJH
dGsuY3BwOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKiBm
aWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwOgor
ICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oOgorICAgICAgICAqIGh0bWwvRlRQ
RGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVSZXNv
dXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmg6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EubW06CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAqIHBh
Z2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6
CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3ku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRh
Y2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFk
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
MjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2Nr
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIK
KyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVyLCBhIFNoYXJlZEJ1ZmZl
ciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAgICBhIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4K
KworICAgICAgICBBIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgaXMgYSByZXBsYWNlbWVudCB0byBSZWZQ
dHI8U2hhcmVkQnVmZmVyPi4KKyAgICAgICAgVGhlcmUgZXhpc3RzIGEgZGlmZmVyZW5jZSBiZXR3
ZWVuIGEgbnVsbCBhbmQgZW1wdHkgc3RhdGUuCisgICAgICAgIEZvbGxvd2luZyBhIGNhbGwgdG8g
cmVzZXQoKSwgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsKCkKKyAgICAgICAgd2lsbCByZXR1
cm4gdHJ1ZSBhcyBvcHBvc2VkIHRvIGVtcHR5KCkgd2hpY2ggd2lsbCBjcmVhdGUgdGhlIHVuZGVy
bHlpbmcKKyAgICAgICAgU2hhcmVkQnVmZmVyIGJ1dCB3aXRoIGEgc2l6ZSBvZiAwLgorICAgICAg
ICBBIG51bGwgU2hhcmVkQnVmZmVyQnVpbGRlciBpbmRpY2F0ZXMgdGhhdCBhcHBlbmQgd2FzIG5l
dmVyIGNhbGxlZCBvbiBpdAorICAgICAgICAoZXZlbiB3aXRoIGFuIGVtcHR5IFNoYXJlZEJ1ZmZl
cikuCisgICAgICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgaXMgbnVsbCBiZWZvcmUKKyAgICAgICAgY2FsbGluZyBjb3B5KCkgb3IgdGFr
ZSgpIGFzIGFuIGVtcHR5IFNoYXJlZEJ1ZmZlciB3aWxsIGJlIGNyZWF0ZWQgaWYKKyAgICAgICAg
bm9uZSBleGlzdHMuCisgICAgICAgIFRoZXNlIGRlc2lnbiBkZWNpc2lvbnMgd2VyZSBtYWRlIGR1
ZSB0byBob3cgU2hhcmVkQnVmZmVyIGFyZSBjdXJyZW50bHkgdXNlZAorICAgICAgICBhbmQgdG8g
bWluaW1pc2UgdGhlIGxvZ2ljIGNoYW5nZSBhcyBzb21lIHBsYWNlcyB3b3VsZCBkaXN0aW5ndWlz
aCBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gc3RhdGVzIG9yIHdvdWxkIGFsd2F5cyBjcmVhdGUg
YW4gZW1wdHkgU2hhcmVkQnVmZmVyIGFuZCBvbmx5IGNoZWNrCisgICAgICAgIGl0cyBzaXplLgor
ICAgICAgICBJbiB0aGUgZnV0dXJlLCByZW1vdmluZyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBu
dWxsIGFuZCBwdHkgd291bGQgYmUKKyAgICAgICAgcHJlZmVyYWJsZS4KKworICAgICAgICBXaGls
ZSB0aGUgYWltIHdhcyB0byBndWFyYW50ZWUgdGhhdCBhIFNoYXJlZEJ1ZmZlciBvbmNlIGJ1aWx0
IHdhcyBpbW11dGFibGUuCisgICAgICAgIFRoaXMgZ29hbCB3YXNuJ3QgZW50aXJlbHkgYWNoaWV2
ZWQgYXMgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmV0cmlldmUgYSBSZWZQdHIKKyAgICAgICAg
dG8gYSBTaGFyZWRCdWZmZXIgYW5kIGNvbnRpbnVlIHRvIGFwcGVuZCB0byBpdCB0aHJvdWdoIGl0
cyBTaGFyZWRCdWZmZXJCdWlsZGVyCisgICAgICAgIG93bmVyLiBGdWxsIGltbXV0YWJpbGl0eSBj
b3VsZCBiZSBmdWxseSBhY2hpZXZlZCB3aXRoIGhhdmluZyBnZXQoKSByZXR1cm4gYQorICAgICAg
ICBzaGFsbG93IGNvcHkgd2hpY2ggaXMgYSByZWxhdGl2ZWx5IGNoZWFwIG9wZXJhdGlvbi4KKwor
ICAgICAgICBGbHktQnkgZml4ZXM6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBjb25zdCByZWZlcmVu
Y2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBkbyBzby4KKyAgICAg
ICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29u
c3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJh
eUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
Yik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVs
RWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1l
bnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJl
c291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNj
cmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJj
ZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGll
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRh
a2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGE6OkRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9U
YXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6CisgICAgICAgICog
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xl
RmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
OjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6
V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3Vz
IFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0
YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRCdWZmZXI6OmRhdGEoKSB0
aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAgIGFuZCBzbyBjb3VsZCBi
ZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4gdW5kZXNpcmFibGUKKyAg
ICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBtYWRlCisgICAgICAgIG9m
IGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhhdCB3b3VsZCBoYXZlIG11
dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQgYXJlCisgICAgICAgIG1v
dmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgQXJlYSB3aGVyZSBTaGFy
ZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmdsZSBzZWdtZW50IHdoZXJl
CisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAg
IFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVlbiBmbGF0dGVuZWQgb25s
eSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hlbiB0aGUgZGF0YSB3YXMg
Z29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5nZQorICAgICAgICB0aGUg
Y29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBhIGNhbGwgdG8gbWFrZUNv
bnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5vLW9wIGlmIHRoZSBTaGFy
ZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAgICAgIGEgQ29udGlndW91
c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9mIGEgU2hhcmVkQnVmZmVy
IGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAgICAgICB1c2VycyBpdCB3
YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVyc2lvbnMgYmVpbmcgcGVy
Zm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRhbmN5LgorICAgICAgICBX
aGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhlIFNoYXJlZEJ1ZmZlciBj
cmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBhbmQgaWRlbnRpZmllZCB0
byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAgICBJbiB0aGUgZW5kLCB0
aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3BlcmF0aW9ucyB0aGFuIHRo
ZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAg
IFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5IG1lbW9yeSB1c2FnZSB3
aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciBjbGFzczsgYnVnIDIz
MzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUgY2hhbmdlIGlzIGV4dGVu
c2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMgaXMgdGhvcm91Z2gKKyAg
ICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1bmxpa2VseS4KKworICAg
ICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJlIG1hZGUgY29tcGxldGVs
eSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdl
LgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4gTmV3IEFQSSB0ZXN0cyBj
cmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0
YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJl
YWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5o
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RL
ZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0
dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFs
aXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5P
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNv
cmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
cjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tOgorICAgICAgICAoV2Vi
Q29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVJlc3BvbnNlT25TdHJl
YW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVBy
b3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgorICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JF
bGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAgICAgICAgKGZpbGVXcmFw
cGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNo
bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBS
ZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6
CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09y
aWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJl
Q3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cGFyc2Vk
QXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1h
eWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVx
dWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1
ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250Ojpl
bnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05v
dGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
Ojpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3Jp
cHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpE
aXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2Fj
aGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVT
aGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAq
IHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAg
ICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
RGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlRGF0
YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdt
ZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
RGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06Cisg
ICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9z
aXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGls
aXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRG
cm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRl
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJM
UmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0TWFwcGVkT3du
ZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFs
aXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5l
ZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZv
OjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246
OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlw
aEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0
aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENv
dmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUZvbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJsZTo6Y292ZXJhZ2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRhYmxlOjpnZXRTdWJzdGl0
dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBMaXN0Ojps
b29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVUYWJsZTo6
Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpzY3JpcHRMaXN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmVMaXN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6Omxvb2t1cExpc3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZGVmYXVsdExh
bmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVh
dHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpnZXRW
ZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2Fk
TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZl
cnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6
OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9m
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Q
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRhOl0pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c2FuaXRpemVS
ZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnNldFNl
cnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6
OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRy
aWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAy
MS0xMi0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENv
ZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2IuLmRhMzM2ZTZm
NWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgQ2xpcGJv
YXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRl
ci5oCmluZGV4IDJiNjI2Mjg0MTliMC4uNmUyMjA0OGNmNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdl
UmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRl
ciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVh
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
IAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
LSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMC4uZWZmMTBiNWI2NWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAt
MjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6aW52
b2tlQ29tcGxldGlvbkhhbmRsZXIoKQogICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVMb2Fk
ZXItPmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihk
YXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0b21EYXRh
LndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpOwotICAgICAgICBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKLSAg
ICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgICAg
ICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTI2NSw5ICsyNjUsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNs
aXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogewogICAgIGlmIChtX3R5
cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsK
LSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6
ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEp
KSB7CisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KG1fZGF0YSk7CisgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKIApAQCAtMjc4LDkgKzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVl
CiAgICAgfQogCiAgICAgaWYgKG1fdHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQotICAgICAgICAgICAg
YnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0
cigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5p
dGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PihtX2RhdGEpKQorICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0
ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAg
ICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAg
ICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1f
ZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgK
aW5kZXggMmNjMmM4ZTFhNTRlLi4zN2M4MjVlMjM1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRE9NUHJv
bWlzZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlIDogcHVibGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5n
ID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEJ1
ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PjsKICAgICBjbGFzcyBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlciA6IHB1YmxpYyBGaWxl
UmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJdGVtVHlwZUxv
YWRlcj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVh
ZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMi4uMjc0ZTAzOGQ0MTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
aW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
UEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0
YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBt
X3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21p
bWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0K
aW5kZXggYjRjMzFjYTUwNjM5Li4zODIxYjAzNzE4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMzLDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9t
aW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0
Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2Vu
dGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFn
ZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlv
biByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVy
dGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5k
ZXggZTZjYzFhYWU3ODNhLi45NWFhMDg2NTk0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRk
QWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemVfdCByZWNvcmRQb3NpdGlvbiA9
IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9uUmVjb3JkKHJlcXVlc3QuZ2V0KCks
IHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5
UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNv
cmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHJlc3BvbnNlID0gUmVm
IHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcmVz
cG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0
YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigp
LCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlzRG9uZSgpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lkIERPTUNhY2hlOjphZGRB
bGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVu
ayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBl
bmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShy
ZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAg
ICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25z
ZSwgZGF0YS50YWtlQXNDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0s
IGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQpAQCAtMzE4
LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNoZUVuZ2lu
ZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0
Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9k
eSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAg
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShy
ZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShy
ZXN1bHQpKTsKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdElu
Zm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAg
ICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRv
JiByZXNwb25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJlZi5jb25z
dW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdB
Y3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBy
ZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUo
cmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkg
PSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
ICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1v
dmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
Lmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4Myw5ICszODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQo
UmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJv
bWlzZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1
bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRh
dGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmst
PmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3Zl
KGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RG
TW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjMuLmMwZjgwMzJiMDQ1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
QEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29u
c3QgUmVzcG9uc2VCb2R5JiBib2R5KQogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtd
KGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwogICAgIH0sIFtdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBi
dWZmZXItPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIFNoYXJl
ZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwg
W10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1MGRiYTFlM2Jm
Li45ZDFiYzY3NGZjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5jcHAKQEAgLTEzNSwxNyArMTM1LDE3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXRE
YXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlu
cyhpbml0RGF0YVR5cGUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXpl
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYXRhKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5
OjpzaGFyZWQoKS5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQog
Ci1ib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitib29sIENETTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRl
LT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgaWYg
KCFtX3ByaXZhdGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggZDhhNGIzYWYxMmYxLi5kN2IxZDUzZDA0
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAt
NTIsNyArNTIsNyBAQCBjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNzIENETVByaXZhdGU7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE0gOiBwdWJs
aWMgUmVmQ291bnRlZDxDRE0+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNPiwgcHJpdmF0ZSBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC03MywxMCArNzMsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0OwogICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwor
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKaW5kZXggMjFlNTJmNGI3MTRmLi40MTBl
ZDJmYjY0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRy
PENETUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVs
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lm
TmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKaW5kZXggMGJmNWVhYTc0ZWRiLi42Zjg4OGUxNzg1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cApAQCAtNTQsMTMgKzU0LDEzIEBAIG5hbWVzcGFjZSB7CiAgICAgY29uc3QgdWludDMyX3Qga0tl
eUlkc01heEtleUlkU2l6ZUluQnl0ZXMgPSA1MTI7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEv
a2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVm
ZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAg
YXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1
ZSkKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICBpZiAoIWtp
ZHNBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKmtpZHNBcnJheSkgewogICAg
ICAgICBhdXRvIGtleUlEID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICgha2V5SUQp
CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgcmV0dXJuIGtl
eUlEczsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0
CkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6
OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkK
LSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hT
dHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdU
Rk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25E
YXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+
IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5
L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0xNTEsOSArMTUxLDkgQEAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBJbmkKICAgICByZXR1cm4gcHNzaEJveGVzOwogfQogCi1zdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJh
Y3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewot
ICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0
cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCkBAIC0x
ODUsNyArMTg1LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJ
bml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb24KICAgICByZXR1cm4ga2V5SURz
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNl
bmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBTU0gg
Qm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEv
Zm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0xOTUs
NyArMTk1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29w
eSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIC8vIENoZWNrIGlmIHRoZSBidWZmZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgog
ICAgIC8vIFRoZSBXZWJNIGluaXREYXRhIGlzIHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3Vs
ZCBiZSBsZXNzIHRoYW4ga1dlYk1NYXhDb250ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsy
MDUsMTAgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c1dlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4ga2V5SURzOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1
ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CiAgICAgaWYgKCFzYW5pdGl6
ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIzMyw3ICsyMzMs
NyBAQCBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIAogSW5pdERhdGFSZWdp
c3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwog
ICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5p
dERhdGEpCkBAIC0yNDEsNyArMjQxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFS
ZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGEKICAgICBy
ZXR1cm4gaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YShidWZmZXIpOwogfQogCi1zdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJh
Y3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIg
PT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmgKaW5kZXggY2QxMzg3YTZiZDAzLi43N2Q2MDRiMDhiYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5oCkBAIC0zOCwxOSArMzgsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW5pdERhdGFSZWdpc3RyeSB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluaXREYXRhUmVnaXN0cnkmIHNo
YXJlZCgpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxJbml0RGF0YVJlZ2lzdHJ5
PjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RydWN0IElu
aXREYXRhVHlwZUNhbGxiYWNrcyB7Ci0gICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxs
YmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxTaGFyZWRCdWZmZXI+KGNvbnN0IFNoYXJlZEJ1ZmZlciYp
PjsKLSAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBTaGFyZWRCdWZmZXImKT47
CisgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+
OworICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik+OwogCiAgICAgICAgIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayBz
YW5pdGl6ZUluaXREYXRhOwogICAgICAgICBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgZXh0cmFjdEtl
eUlEczsKQEAgLTYxLDkgKzYxLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBrZXlpZHNOYW1lKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHdlYm1OYW1l
KCk7CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJv
bUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVm
ZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBleHRyYWN0
UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBl
eHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIEluaXREYXRhUmVnaXN0cnko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA4YmZiMWNlNzAxYTIuLjE0Nzc2YzIwMTUxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBC
dWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpO
ZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgp
KSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9
IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0
aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlz
ZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBz
YW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBv
ZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXRE
YXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGlu
aXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
ZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5
cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAg
ZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAg
ICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7
CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2Uo
bV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9u
TnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGlu
aXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdl
YWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUo
aWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0
MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYg
cmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgp
LCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4g
TGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZl
cnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJl
c3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAK
ICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5p
dGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVh
dGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6
ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAg
IC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNl
IHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3Rh
bmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUs
IFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIg
PSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAg
ICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9z
ZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
aWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpy
ZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVybiBw
cm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFL
ZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQor
dm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUg
bWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAg
ICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFL
ZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBtZXNzYWdlKQogewogICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgwMmU3NC4uMzY1YWNlNWMwOTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgQ0RNOwogY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOwogY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXA7CiBjbGFzcyBNZWRpYUtleXM7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlUHJveHk7CiAKQEAgLTg3LDIwICs4Nywy
MCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VkUHJvbWlzZSA9IERPTVByb21pc2VQcm94eTxJ
RExVbmRlZmluZWQ+OwogICAgIENsb3NlZFByb21pc2UmIGNsb3NlZCgpIHsgcmV0dXJuIG1fY2xv
c2VkUHJvbWlzZS5nZXQoKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hh
cmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBt
X3N0YXR1c2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0dXNlczsgfQogCiAgICAgdW5zaWduZWQgaW50ZXJuYWxJbnN0YW5jZVNlc3Npb25PYmpl
Y3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VTZXNzaW9uLT5yZWZDb3VudCgp
OyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uKERvY3VtZW50JiwgV2Vha1B0cjxN
ZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVu
dGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKLSAgICB2b2lk
IGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdXBkYXRlRXhwaXJhdGlvbihkb3VibGUp
OwogICAgIHZvaWQgc2Vzc2lvbkNsb3NlZCgpOwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAg
ICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3Rh
dHVzVmVjdG9yJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsOwogCkBAIC0xNDAsMTAg
KzE0MCwxMCBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlw
ZTsKICAgICBSZWY8Q0RNPiBtX2ltcGxlbWVudGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZVNl
c3Npb24+IG1faW5zdGFuY2VTZXNzaW9uOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4g
bV9yZWNvcmRPZktleVVzYWdlOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKICAgICBkb3VibGUgbV9maXJzdERlY3J5cHRUaW1lIHsg
MCB9OwogICAgIGRvdWJsZSBtX2xhdGVzdERlY3J5cHRUaW1lIHsgMCB9OwotICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFL
ZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwogCiAgICAgdXNpbmcgRGlzcGxheUNoYW5nZWRPYnNlcnZl
ciA9IE9ic2VydmVyPHZvaWQoUGxhdGZvcm1EaXNwbGF5SUQpPjsKICAgICBEaXNwbGF5Q2hhbmdl
ZE9ic2VydmVyIG1fZGlzcGxheUNoYW5nZWRPYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAK
aW5kZXggNzNmNzRlNGY3MGZjLi4zOThlOGFiMWI2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3Bw
CkBAIC01NiwxMiArNTYsMTIgQEAgdW5zaWduZWQgbG9uZyBNZWRpYUtleVN0YXR1c01hcDo6c2l6
ZSgpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi0+c3RhdHVzZXMoKS5zaXplKCk7CiB9CiAKLXN0YXRp
YyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291
cmNlJiBiKQorc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogewogICAgIGF1dG8gbGVuZ3RoID0gYS5z
aXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEo
KSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogYm9vbCBNZWRpYUtleVN0YXR1c01hcDo6
aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RkOjpv
cHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwotICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKICAgICByZXR1cm4gS2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0
cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwgcGFpci5zZWNvbmQgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5oCmluZGV4IGMyMTExMTNhMmM2ZC4uNjBkNjJhYWZmODA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50
ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIu
LjM2N2YzMWQxODZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlz
OjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAogICAgICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtl
eXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIE1lZGlhS2V5
czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAg
ICAgZm9yIChhdXRvJiBjZG1DbGllbnQgOiBtX2NkbUNsaWVudHMpCiAgICAgICAgIGNkbUNsaWVu
dC5jZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGluaXREYXRh
VHlwZSwgaW5pdERhdGEuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDdiNTlhM2JjNmQyMi4uOTFhMWEwNzEx
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhEb2N1
bWVudCYsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+JiYs
IFJlZjxDRE1JbnN0YW5jZT4mJik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZv
aWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGMwNDczMTI4NGY2Ny4uYjhmMmVjMzcz
ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0y
MzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVy
JiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5
KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRh
dGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVX
aXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJ
ZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhl
ciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6
Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJl
dHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0
byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNy
ZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0
YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0
LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIzOS4u
MTkxOWMxY2I5MTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29s
dmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJv
ZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZl
ciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9t
aXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2so
KTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAg
aWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9
IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlw
ZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3Npbmsg
PSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlw
ZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1
cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZl
V2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZUFzQ29udGlndW91cygpOworICAgICAgICAg
ICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29u
dGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAg
ICByZXR1cm47CkBAIC0zMDYsNyArMzA4LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVz
b2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRh
OiB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8g
Zm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/
IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkK
KyAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29u
dGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVs
bHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2Ut
PnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjQsMjYg
KzMyNiwyNSBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWYgKCFtX2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBl
bmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5yZXNl
dCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fYnVmZmVyLnRha2UoKTsKK30KIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0
dXJuIGFycmF5QnVmZmVyOworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0Fy
cmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1Miw3IEBAIFJl
ZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpj
cmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFr
ZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjEsOCBAQCBTdHJpbmcgRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRl
eHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlQXNDb250aWd1
b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAK
QEAgLTM4MywxMCArMzgyLDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1l
UHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9k
eVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0g
ICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAg
IH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVy
LnRha2VBc0FycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2Fk
aW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYi4u
ODcxZDJjMDg2MzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCkBAIC01MCwxMCArNTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgp
IGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9Cisg
ICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CiAgICAgU3RyaW5nIHRha2VB
c1RleHQoKTsKIApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7
CiAgICAgU3RyaW5nIG1fY29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVm
ZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVh
bVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+
IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNw
cAppbmRleCBmYzU1Y2M3ZDgzZDguLjAzZjg5YjYxY2E1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZl
dGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAg
ICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXIt
PnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgK
aW5kZXggMmY5MGYwZWMzZmY5Li40NjEyZDBlMGUzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAgLTM5LDE0ICszOSwxNCBAQCBjbGFzcyBGZXRjaEJv
ZHlDb25zdW1lcjsKIGNsYXNzIEZldGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgRmV0Y2hSZXF1ZXN0
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDog
cHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIEZldGNoTG9hZGVy
KEZldGNoTG9hZGVyQ2xpZW50JiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+RmV0Y2hMb2FkZXIoKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3Ry
ZWFtaW5nKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFt
aW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBG
ZXRjaFJlcXVlc3QmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBCbG9iJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA0ZGY4NDI2YzcxOGIuLmUzOGE4M2FkZTdkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBA
IC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1l
RGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNTAz
LDcgKzUwNCw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VT
dHJlYW0oKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQo
bV9sb2FkZXIpOwogICAgIHJldHVybiBtX2xvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggMzQyMGM2YTM4
ZDNjLi5jZjc4NjMyMzlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lk
IGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90
aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlmaWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RG
TW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0Nh
bGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1
bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkLi4xYTY2YmY4MTgzMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC0z
OCw3ICszOCw3IEBAIGVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29s
IHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBw
IDogYm9vbCB7IE5vLCBZZXMgfTsKIAogc3RydWN0IEFwcEhpZ2hsaWdodCB7Ci0gICAgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OworICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBoaWdobGlnaHQ7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRl
eHQ7CiAgICAgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKICAgICBIaWdo
bGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7CkBAIC01
Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3Ni4uNWU4MGYwYzA3MmQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ0LDE1ICs0NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0MTQx
NTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyZSAgKEEpcHBsZShBUClwbGljYXRpb24oSClp
Z2hsaWdodHMoMjAyMSkKIAotc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
c3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBh
dXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3Vv
dXNCdWZmZXItPmRlY29kZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdl
RGF0YT4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6dG9TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29k
ZXIgZW5jb2RlcjsKICAgICBlbmNvZGVyIDw8ICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAppbmRleCBj
ZjYzODFhY2ZiMGEuLmI1ZGFmNjAyNTM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICsz
MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29t
cG9uZW50IHsKICAgICAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2Rl
TmFtZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAK
aW5kZXggZGMzOWEwZjBkMThmLi5lNWRlODQ5NGYzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0y
MzcsNyArMjM3LDcgQEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdo
dChSZWY8U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJv
bWUoKS5zdG9yZUFwcEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFw
cEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBI
aWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7
CiAgICAgYXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6
OmNyZWF0ZShidWZmZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5oCmluZGV4IGIxNTJmNzZlZDQyNC4uZTI3NjYzM2I0ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1JhbmdlOwogY2xhc3MgSGlnaGxpZ2h0Owog
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB+QXBwSGlnaGxpZ2h0U3RvcmFnZSgpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFu
Z2U+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGln
aGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOwogICAgIHZvaWQgcmVzdG9y
ZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCk7CiAgICAgTW9ub3RvbmljVGltZSBsYXN0UmFuZ2VT
ZWFyY2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2g7IH0KICAg
ICB2b2lkIHJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpIHsgbV90aW1lQXRMYXN0UmFuZ2VTZWFy
Y2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcAppbmRleCAwYWZiN2VlNWNjODcuLjI3Y2Q4ZWVjNTNlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3Jl
SW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAg
ICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtl
eVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYg
KCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVj
dCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5
UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlE
QktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBk
YXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBp
biBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAg
IGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsK
ICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChj
b25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRh
dGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJh
c2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQ
dXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
aW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0
aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9z
IH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlm
ICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlz
dHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBz
dG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9y
ZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAg
IEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25s
eSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0
byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5
QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlE
YXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRv
IGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGlu
IGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBh
dXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFr
ZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0
b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAg
ICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURC
S2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5
LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7
CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBp
ZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGlu
ZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhl
ZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1p
bik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAg
ICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9v
ayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktl
eSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFu
Z2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJh
dGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5p
c051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBl
cktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJL
ZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJ
REJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5Li40ODYxMDM0ZDNhMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJp
bmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dl
cktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExv
d2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1l
bnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRB
bmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRB
cmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCAwYTQ2OWJkMGJkMWYuLmM5ZDZkYTZi
ZGQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRp
bWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50
PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0
YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0
ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRh
dGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsgeyBmYWxzZSwgZmFsc2UsIGZhbHNl
IH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JFdmVudDo6SXNUcnVzdGVkOjpZZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2Li4xZTliNzRhYjE3ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAt
MTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEVycm9yKEV4Y2VwdGlv
biYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVSZWNvcmRlciB7IE5vLCBZZXMgfTsK
LSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAgdXNpbmcg
RmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAgICB2b2lkIGZl
dGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJpdmF0ZVJlY29yZGVyKTsKIAogICAg
IC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRleCAzZjRjOWJjZDEzM2EuLjg3
NGFhN2YwYjE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBBcnR3b3JrSW1h
Z2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
TmV0d29ya0wKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTYW5pdGl6ZSB0aGUgaW1h
Z2UgYnkgZGVjb2RpbmcgaXQgaW50byBhIEJpdG1hcEltYWdlLgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBt
X2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJp
dG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGJ1
ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2Iu
LmNjNWE4NjU3MzA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1Nl
bmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3Nh
Z2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YSht
X3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCks
IG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRh
KG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5k
aW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggZjU4MjdkZjkzNzk0Li43Mzk0MmE4MzU5MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApAQCAtMzksNyArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CiBjbGFz
cyBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uOwogY2xhc3MgUlRDRXJyb3I7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03Myw3ICs3Myw3IEBA
IHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgTWVzc2FnZSB7CiAgICAgICAgIGJvb2wgaXNSYXcgeyBm
YWxzZSB9OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBWZWN0b3I8TWVzc2Fn
ZT4gbV9wZW5kaW5nTWVzc2FnZXM7CiAgICAgYm9vbCBtX2lzUGVuZGluZ0Nsb3NlIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
CmluZGV4IDNlMTEwNTQwMDM1My4uM2NlZWQwYTAxMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQmIGNsaWVudCwKICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElk
ZW50aWZpZXI7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMp
IHsKLSAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRh
KSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJh
d0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAg
ICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2
ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5n
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApp
bmRleCA0MWY5NTI4MjFlNjIuLjExYmQ0NWRlOTE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZTsKICAgICAgICAgc3RkOjpvcHRpb25h
bDx3ZWJydGM6OlJUQ0Vycm9yPiBlcnJvcjsKICAgICB9OwotICAgIHVzaW5nIE1lc3NhZ2UgPSBz
dGQ6OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAg
IHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmluZywgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBQZW5kaW5nTWVzc2FnZXMgPSBWZWN0
b3I8TWVzc2FnZT47CiAgICAgdm9pZCBzdG9yZU1lc3NhZ2UoUGVuZGluZ01lc3NhZ2VzJiwgY29u
c3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZShjb25zdCB3
ZWJydGM6OkRhdGFCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWEu
LjI3YTZkNzAzMzRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAg
bV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxscHRyOworICAgIG1fZGF0YS5y
ZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAobV9yZXNvdXJj
ZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNl
VVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEuZW1wdHkoKTsKIAogICAgIG1f
cmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCgq
dGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxN
b2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIHZvaWQg
SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwotICAgIEFTU0VSVChtX2RhdGEp
OwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfTsK
IAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgpOwogCiAgICAgICAgIGludmFs
aWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKQEAgLTIwNCw3ICsyMDMs
NyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAogICAgIG1fZGF0YUNvbXBsZXRl
ID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEucmVsZWFzZU5vbk51
bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOworICAgIG1f
bW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCkuZ2V0KCksIHJl
c291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKIAogICAgIGludmFsaWRhdGVSZXNv
dXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCmluZGV4IDA1YTFj
ZGFhM2UxNC4uY2UwMDlkNGU1ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8
TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21p
c2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OS4uMTMwM2VjNGQy
NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2Nl
bmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAt
MTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlG
aWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNk
eiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsK
IAotICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFu
ZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOworICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxl
SGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBi
eXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4IDBiODk4ZjZhZGI1Ny4uZDUxNzNm
YmY4YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1TaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQnVmZmVyU291cmNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSZWFkYWJsZVN0
cmVhbVNpbmsgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVNpbms+IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1Yy4uYjhiNzc4NWY5MWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVBy
b3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3Njcmlw
dEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAor
ICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkg
fHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVy
ID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlm
ICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJ
SSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgp
LCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFp
bnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5k
YXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYg
KCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0
cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJ
KQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07
CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAg
ICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRT
Y3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIg
PSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAg
ICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAg
IFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0
SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5k
ZXggN2U0OWE5ZTczMjI2Li5lZjM3ZjFkMGNhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNs
YXNzIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOwogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNz
YWdlUG9ydDsKIGNsYXNzIEltYWdlQml0bWFwQmFja2luZzsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOwogCiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJv
d2luZywgVGhyb3dpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5k
ZXggODI2MTMzMzIyYThlLi4xMDhlNmM4NzY3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRpb25Db250
ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRp
bmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBG
b250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAppbmRleCAxZGVhYzRmNDFjZjQuLmM0MmVjMDUxZmUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFz
dGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAg
ICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAg
fQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAg
ICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhLi5jNWU5ZTI2YjM3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKQEAgLTQxMzMsNyArNDEzMyw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8g
RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0
dXJuIHsgYXR0YWNobWVudC0+dW5pcXVlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGFkZGl0aW9uYWxU
eXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERhdGEpIH07CiB9CiAKLXZvaWQgRWRpdG9yOjpyZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQo
KSkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlkZW50aWZp
ZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0NGUuLjFkMDcxNmM1YjkzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3Vy
Y2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5z
ZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwog
Y2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTc0LDcgKzc1LDcgQEAgY2xhc3MgS2ls
bFJpbmc7CiBjbGFzcyBQYXN0ZWJvYXJkOwogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGE7CiBj
bGFzcyBSZW5kZXJMYXllcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogY2xhc3MgU3BlbGxDaGVja1JlcXVlc3Q7CiBjbGFz
cyBTcGVsbENoZWNrZXI7CkBAIC01NjMsNyArNTY0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYm
IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxl
TmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGZpbGVEYXRhKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9y
PFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVh
ZGVyLmgKaW5kZXggMDhhYTEyNDI2NjIwLi45NTdiNGZkNGE1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToK
ICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUg
PSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFBsYWluVGV4dChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29s
IHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wg
cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJv
b2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wg
cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFk
RGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlv
blNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYo
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMC4uMTE3ZGJhNjhlZGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpy
ZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZpbGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6
OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxl
bmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmgKaW5kZXggNWM1MjlkZDdjOGVjLi45ZDgxNjA1ZjE5OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
IGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0PiBjb250ZXh0OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0OGUxMWM5NmI3
OC4uMDc4MjQ4MzYyYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9h
ZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09M
CiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJs
KSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsK
ICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRt
bCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpy
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1
bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAg
ICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1
YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2Ut
PmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9u
c2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAh
W2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRG
aWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgp
KTsKQEAgLTIzMjIsOCArMjMyMiw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4g
ZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiBzdGF0aWMg
UmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBl
bGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5k
ZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiLi43
NmIxYTAwOWRlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wg
c3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoY29uc3QgRnJhbWUmIGZyYW1lKQogCiAj
ZW5kaWYKIAotc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvcklt
YWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBA
IC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7
Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVu
aXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkg
fSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50
LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVw
bGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFn
bWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9
ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBX
VEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1
ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBw
ZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50
PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmlj
aENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBm
cgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gImZpbGUi
X3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShu
YW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEo
KSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBX
VEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3
IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsKICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsK
IH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJr
dXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJv
b2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0
cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkK
QEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZl
PiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2Fu
U2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNv
dXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OworICAg
IHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNp
emUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25O
dWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hp
dmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwp
CkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYg
KCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7
IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1
YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJj
aGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0
byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3Rp
bmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQs
IGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3Ry
aW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVz
dGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9j
dW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3Ms
IG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1l
LmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MTIsMTIgKzYxMiwxMiBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHkoKTsKIH0KIAot
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2Vz
KCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsMTEgKzYyNiwxMSBA
QCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpy
ZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFt
ZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50
QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSwxMiArNjM5LDEyIEBAIGJvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZm
ZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1
bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFn
bWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdt
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTMsMTEgKzY1MywxMSBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVs
bHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNl
cyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC02NzYsNyArNjc2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1l
bnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKQEAgLTc0Niw3
ICs3NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4g
YXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRh
dGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNp
emUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJh
bWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUp
CiB7CiAgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAgICAgYXV0byBhdHRh
Y2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2ht
ZW50VGFnLCBkb2N1bWVudCk7CkBAIC04MzMsNyArODMzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXggNjA0ODZlNzFhZDU5Li5kM2U5ODE5
YmQ1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRS
ZWFkZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRS
ZWFkZXJHdGsuY3BwCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3Vt
ZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oCmluZGV4IDQ1ZDkzM2UxM2NhNC4uYmNhNjY5NmViZTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwogY2xhc3MgRGVmZXJy
ZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTllYmNjNDhjNWYuLjQy
ZjQxODBkZmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2Vu
ZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3Nh
Z2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJvY2Vzc2luZyA9IGZhbHNlOwogICAgICAg
ICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlzXShjb25zdCBDU3RyaW5nJiB1dGY4KSB7
CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0ZjgpOwotICAgICAgICB9LCBbdGhpc10oUmVm
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgfSwgW3RoaXNdKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAgICAgZGF0YS0+Zm9yRWFjaFNlZ21lbnQo
bV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhpcywgJnNob3VsZFN0b3BQcm9jZXNzaW5n
XShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikgewogICAgICAgICAgICAgYXV0byBlcnJv
ckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2IuLmQyM2NmZWJiNDUwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwogY2xhc3MgQmxvYkxvYWRlcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIE5ldHdvcmtTZW5kUXVldWUgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHZvaWQgcHJvY2Vzc01lc3NhZ2VzKCk7CiAKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2
YXJpYW50PENTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+LCBVbmlxdWVSZWY8QmxvYkxvYWRlcj4+
OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+LCBVbmlxdWVSZWY8QmxvYkxvYWRlcj4+OwogICAgIERlcXVlPE1lc3Nh
Z2U+IG1fcXVldWU7CiAKICAgICBXcml0ZVN0cmluZyBtX3dyaXRlU3RyaW5nOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDU2YTA2ZmNhZjI3
My4uZDJiODc0MWEwNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1
aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAg
ICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1l
VHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAK
LXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRh
KGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93SG9zdCgpOwogICAgIGlm
ICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDU3M2Vj
MmVhZTFjZC4uNjYxZGVjOTM3NmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRmlsZTsKIGNsYXNzIEhUTUxJ
bWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50OwogY2xhc3MgU2hhcmVhYmxlQml0
bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7CkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0
aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3Rmls
ZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3Rmls
ZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRo
RGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQ
dHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQg
aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZWM4MzUxYzA5
Nzc0Li41NjRjMzE1MjllNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcApAQCAtMjkzOSw3ICsyOTM5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGll
bnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkKICAgICBhdHRlbXB0VG9SZXN1
bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2Rt
Q2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZl
ZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEpCiB7CiAgICAgbWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50
ZXJlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNmI0MDRhYTg3MzUyLi45
MTI4YmNkYmVlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03
MjEsNyArNzIxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2Rt
Q2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwotICAgIHZv
aWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNkbUNsaWVudFVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDc3Y2Q0ZjM4MGUyOC4uNDM3MGQ2ODE4NzJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBA
QCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9p
bWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBp
ZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURh
dGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxv
YWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAgICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNo
ZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsK
QEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygp
CiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsK
ICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNo
ZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCkt
Pm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogCiAgICAgICAgIC8vIElm
IHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBh
cnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAgICAgICAgIC8vIHdpbGwgYmUgb3ZlcndyaXR0
ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTdjYTcxNjJkNzkxLi4xODc5M2Zm
MDY2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW0KICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RG
TW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQt
PmludGVyY2VwdFJlc3BvbnNlKHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAppbmRleCA4ZTY1YzRlYjEwMjMuLmQyOTU3ODEwZDgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTMs
NyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1l
ckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwpA
QCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNl
cHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJj
ZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsK
KyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdl
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTQ0MSw3ICs0
NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNv
bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBsb2FkZXIsIFdU
Rk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9u
c2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhmcmFtZSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOS4uZjA2NDAzYTYyMzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9h
ZGVyJiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFt
ZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJh
bWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQuaAppbmRleCBmNzYxMTRjZTk4ZjQuLjA3YjQyMWI1OWMxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuaApAQCAtMzYsMjAgKzM2LDIwIEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
Y2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9h
ZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogfTsKIAogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzYsNyArNzYsNyBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXImIGxvYQogICAgIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZy
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNl
cHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAgICBpbnRlcmNlcHRSZXNwb25zZUludGVy
bmFsKCpmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5k
ZXggNjc3YzViODEyZDRmLi4zOWIwMTFjZjA2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTmV0d29ya0FnZW50
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICB1bnNpZ25lZCByZXN1bHQg
PSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkp
OwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRh
QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLnNpemUoKTsK
KyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRl
bnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQo
KTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7Cit9CisKIHNpemVfdCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAgIHJl
dHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlmICghbV9kYXRh
QnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRl
Y29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAg
IHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZm
ZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIHNpemVfdCBkYXRhTGVu
Z3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1f
YmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0
YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsK
LSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5k
YXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0
cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVm
ZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRh
dGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVz
bwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwog
fQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0
YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEw
MDA1M2FlMTEuLmRhYWU1ZmU0YTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTQwLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTmV0
d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODgs
OCArODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBk
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2
b2lkIHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBt
X2RlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAg
ICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAg
ICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJl
dHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5m
byhjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykg
eyBtX2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTAzLDEwICsxMDMs
MTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25z
ZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9
CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFC
dWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBo
YXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsK
ICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5z
aWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDggKzExOSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWlt
ZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9k
YXRhQnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRl
SW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRy
IH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1
YmxpYzoKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCk7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVy
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29u
c3QqIGRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25z
dCogZGF0YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVt
b3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRl
eCA0ZTNkYWYxYWRlNDcuLjIyM2E2NzY3YmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTE0
MCw3ICsxMTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRnVuY3Rpb248dm8KICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYg
aGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBB
U1NFUlQobV9lbmFibGVkKTsKICAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKQEAg
LTEyNDMsNyArMTI0Myw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKGNvbnN0CiAgICAgICAgIG92ZXJy
aWRlUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlw
ZSwgb3ZlcnJpZGVSZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IG92ZXJyaWRlRGF0YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICBhdXRv
IGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYgKCFidWZmZXIpCkBA
IC0xMjcxLDcgKzEyNzEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9ucwogICAgIGlmIChsb2Fk
ZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNz
ZWQiX3MpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAg
ICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYgKCFi
dWZmZXIpCkBAIC0xNDA3LDEyICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAg
ICAgICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291
cmNlLm1pbWVUeXBlKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291
cmNlLnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1
bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBi
YXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
ICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmgKaW5kZXggOGY2ZmJjYzI5M2FlLi42YmNkODdkZGNkOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxJbnRl
cmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgaW50ZXJjZXB0UmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPik+JiYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1
bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFy
Y2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWY8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYp
OwpAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXNwb25z
ZShvcmlnaW5hbFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAgLTIwMiw3ICsyMDIsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFsUmVzcG9uc2UsIG51bGxw
dHIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQorICAgICAgICB2b2lk
IHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1f
cmVzcG9uZGVkKTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3ICsyMTUs
NyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X29yaWdpbmFsUmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFu
ZGxlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKICAgICAgICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IDliNWNhZDk1OWE4ZS4uYTRmZmQxMzYxY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0x
MDAsMTUgKzEwMCwxNSBAQCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJh
c2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURh
dGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUt
PmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAg
cmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rp
bmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBT
dHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250
ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KQogewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51
bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0
aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgp
KSkgewogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRk
YjFiZDhmLi4zZDVlNTY2ZGJlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJ
bnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgUGFnZTsKIGNs
YXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7
CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgT3RoZXJSZXNvdXJjZSwKICAgICB9
OwogCi0gICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVu
Y29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRl
bnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAg
c3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKEZy
YW1lKik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nJiwgRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9v
bCogYmFzZTY0RW5jb2RlZCk7CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCmluZGV4IGI0ZTZhM2E1M2I0Yy4uNmFlNTI2NTk3Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50Rmls
dGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsK
ICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigp
KQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNv
dXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9j
bGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0
YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2lu
Z0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURh
dGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxp
bmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7
IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IGNmNmNjZjJiZDA4OS4uMGFiNGUxNGY5Y2UzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBE
b2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURh
dGEoKSBjb25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjA1LDEx
ICsxNjA1LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAg
ICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNo
aXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2
ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3Vy
Y2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNl
Lm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNv
bW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCku
c2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFp
blJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBA
IC0xNjY4LDcgKzE2NjgsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNo
aXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBh
dXRvJiByZXNwb25zZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjUyLDggKzIyNTIsOCBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkK
IAogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVk
ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJl
c291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291
cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0K
IAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yMjg5LDcgKzIy
ODksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNp
b25zKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0
X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1faWNv
bnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEwLDcg
KzIzMTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXItPnN0
YXJ0TG9hZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJ
Y29uKEljb25Mb2FkZXImIGxvYWRlciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERvY3Vt
ZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRl
ciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBoYXZl
IGFscmVhZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmN2YzZjM4NDRmMTguLjRkNGQzMDg1Y2Fl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcg
QEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291
cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZv
cm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpAQCAtODMsNyArODQsNyBAQCBjbGFzcyBJY29uTG9hZGVy
OwogY2xhc3MgUGFnZTsKIGNsYXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rpb247CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFN1YnN0aXR1dGVSZXNvdXJjZTsKQEAgLTE3MSw3ICsxNzIsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBTdWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgCiAgICAgRG9jdW1lbnRXcml0
ZXImIHdyaXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKQEAgLTM5Miw4ICszOTMs
OCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lz
aW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFy
ZWRCdWZmZXIqKT4mJik7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXIm
LCBTaGFyZWRCdWZmZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKTsKKyAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KTsKIAogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNvbj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0
dXJuIG1fbGlua0ljb25zOyB9CiAKQEAgLTYyMSw3ICs2MjIsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBMaW5rSWNvbj4gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb247Ci0gICAgSGFz
aE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOworICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVf
cHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29u
czsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggZWRlY2UxMmNkN2E5Li43NWFlMjg0YzJjMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1l
QmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENo
cm9tZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50
OF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmQ2
MzdhOTAxNGEuLmVlOWYzZDBjOTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXggYWVmNjY4YmQ2M2VkLi4yOWQyZTNmNDYxNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw3IEBA
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVy
OwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjMzNzU1OTYzMjAwLi42MDQz
YWM5YmUyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0
ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAg
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lk
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggNDhiYjIxNTNjOTNmLi5iNTE3NGVkYzk0
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNh
bGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
CiAKICAgICB2b2lkIG5vdGlmeURvbmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmQu
LmQ5NGI3MDAwNzQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiB7IGFsZ29yaXRobSwgY3J5cHRvRGlnZXN0LT5jb21w
dXRlSGFzaCgpIH07CiB9CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFw
aGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxn
b3JpdGhtIGFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGht
KSk7CiAgICAgaWYgKGJ1ZmZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGFlYTNkYzU3Yzg3OC4uODNiODYxM2Nm
ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdC5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENhY2hlZFJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAg
ICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewpAQCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlvbmFs
PEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dy
YXBoaWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4g
ZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
ckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lk
KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhOC4uNmRlYmIyNTg4YTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtMTE4LDcgKzExNyw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9Owog
Ci0gICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0
KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAt
MTg5LDcgKzE4OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0
JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQpAQCAtMzE4LDcgKzMxNyw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1Bv
bGljeSBkYXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJl
ZCBkYXRhCiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6RG9Ob3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7Cisg
ICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMjksMjkgKzMyOCwyOSBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQogICAg
ICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQ
YXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAg
bV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVz
b3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXls
b2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKKwogICAg
IGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7Cisg
ICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6
Y2xlYXJSZXNvdXJjZURhdGEoKQogewogICAgIGlmIChtX3Jlc291cmNlRGF0YSkKLSAgICAgICAg
bV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmVtcHR5KCk7
CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApA
QCAtNTUxLDE0ICs1NTAsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGwKICAgICBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3Zl
KGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
K3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0
YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQg
b25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAg
QVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAogICAgIC8vIFByb3RlY3Qg
dGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNz
aW5nIGNhbiBkbwpAQCAtNTcxLDcgKzU3MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAg
ICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVl
ZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlz
c3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRD
YWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUp
Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywg
YnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBm
cmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTczNSw3ICs3MzQsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbgogICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2Iu
LjcwZWEyMjBkYzE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNjYsNyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgaW5pdChSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAKLSAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRMb2FkaW5nKCkKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZm
ZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9
CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7
CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBp
c1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0xMDcsNyArMTA4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTE2Niw3ICsxNjcsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBib29sIHdhc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3Rh
dHVzID49IENhbmNlbGxlZDsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGlj
eTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CkBAIC0xOTEsNyArMTkyLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAot
ICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVk
QnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9h
ZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtM
b2FkKCk7CiAKQEAgLTIwMiw3ICsyMDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3Bv
bnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWlu
dDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpAQCAt
MjI3LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0
OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGly
ZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMS4uMzdkMGJiODIxYWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2
aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCkBAIC01NjEsNyArNTYxLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0g
dGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZm
ZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAzNzIzYjZiOWFiOWYuLjgzMmM5ZjBlNzNk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcg
Kzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVk
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIs
NyBAQCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhw
ZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25U
eXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJl
MzFjYmUuLmE4YTQ5YjQ3ZjkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRh
LmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICBTdWJzdGl0dXRlRGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGNv
bnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0
b3J5KQorICAgICAgICBTdWJzdGl0dXRlRGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSkKICAgICAgICAgICAgIDogbV9jb250ZW50KFdURk1vdmUoY29udGVudCkpCiAg
ICAgICAgICAgICAsIG1fZmFpbGluZ1VSTChmYWlsaW5nVVJMKQogICAgICAgICAgICAgLCBtX3Jl
c3BvbnNlKHJlc3BvbnNlKQpAQCAtNTQsMTQgKzU0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50ICE9IG51bGxw
dHI7IH0KICAgICAgICAgYm9vbCBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5ID09IFNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eTo6VmlzaWJsZTsgfQogCi0gICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogY29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQorICAgICAgICBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
LmdldCgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQog
ICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdV
Ukw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGVudDsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fY29udGVudDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICAg
ICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgICAgICBTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5OjpIaWRkZW4gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaAppbmRleCA1OTY2NGI1ODU0ZjguLmNmMmRlMGM2MmQ5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsMTIgKzM3LDE0IEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRl
UmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwp
KQogICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9k
YXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNi
MGYxZGMzOS4uMDM2ZWZkMjBlNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3Qo
KQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBw
YXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVz
b3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhp
cyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5
IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBw
YXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAKaW5kZXggNjAzMjgxODg4Mzc1Li41MTk3OGY0MTIzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAt
MjU1LDEwICsyNTUsOCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwo
Y29uc3QgU3RyaW5nJiBwYXRoKQogCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQog
ewotICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2JhYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0
aGUgU2hhcmVkQnVmZmVyLgotICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3
ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgogICAgIGlmIChyZXNv
dXJjZS5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLmNv
cHkoKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwog
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJj
ZS5wYXRoKCkpOwogfQogCkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICAgICAg
aWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3QsIHJlc291cmNl
KSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKTsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgp
IG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KLSAgICAg
ICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgICAgIGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNy4uYjk2MzU2ZTc4NTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBs
aWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5
LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMS4uMmJiM2Zl
NzViOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNT
RVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAt
NDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgYwogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNv
dXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0K
IAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJM
JiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJj
ZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwg
bV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVs
aXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9u
c2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9h
ZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/
IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjph
ZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCmluZGV4IDg4Yzk0ZGUxYTc3
NC4uYzI4OGU3MDM2YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgRmFsbGJhY2sgPSAxIDw8IDQKICAgICB9OwogCi0gICAgc3RhdGljIFJl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKTsKKyAg
ICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYg
cGF0aCA9IFN0cmluZygpKTsKIAogICAgIHVuc2lnbmVkIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KICAgICB2b2lkIGFkZFR5cGUodW5zaWduZWQgdHlwZSk7CkBAIC01OCw3ICs1OCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIAogcHJpdmF0ZToKLSAgICBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQgdHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICB2b2lk
IGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODkuLjdiMmZiNmM5YzI1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEs
IGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBs
ZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJl
Y3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1
YmNkZS4uOGNmMDVjY2UxODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMs
NiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1f
ZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEg
KGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRlbWVudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAg
IGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwg
cGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgp
KQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEo
KSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFT
dGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5
U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAv
LyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8g
SWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEg
cG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVs
bFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAg
ICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNv
dXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNzMsNyArMTI3Miw3IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UodHlwZSwgInZpZGVvLyIpOwogfQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24pCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1
ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
CiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA5YTk1
MzAwODc2NmEuLjQxMDJhMTgwOGI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcg
QEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhv
c3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3RvcmFnZUlESm91cm5hbDsKIAogY2xhc3MgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZT4gewpAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVPcmln
aW5SZWNvcmQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRT
dG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqKTsKICAgICB2
b2lkIGRlbGV0ZVRhYmxlcygpOwotICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgb3V0
RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbik7CisgICAgYm9vbCB3cml0ZURh
dGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmls
ZUV4dGVuc2lvbik7CiAKICAgICB2b2lkIGxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApp
bmRleCA2ZGU4MGMxMGFjN2QuLjRlZjljZDY2YmQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNy
ZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0
cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsK
IAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4g
UmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRv
ciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgotdGVtcGxh
dGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVG
YWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBs
YXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZl
RmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9
CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkg
JiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFy
Y2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZl
RmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDkuLjU1NjQ1MTVjOWUwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zNCwxMiArMzQs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0g
ICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hp
dmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2
ZU1JTUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5jcHAKaW5kZXggZmMyMGRhM2RhMDMyLi4wNzM4Mzk0YTgyODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcApAQCAtMzMsNyArMzMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFy
Y2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5s
aW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFVS
TCB7IHVybCB9LCBSZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgV1RGTW92ZShkYXRhKSkK
ICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNvZGluZyh0ZXh0RW5j
b2RpbmcpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVS
ZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsCiB7CiB9CiAK
LVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNTQsNyArNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbgogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFyY2hpdmVSZXNvdXJjZShkYXRhLnJlbGVhc2VOb25OdWxsKCks
IHVybCwgbWltZVR5cGUsIHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQog
Ci1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6
Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3Jl
YXRlKFdURk1vdmUoZGF0YSksIHVybCwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4
dEVuY29kaW5nTmFtZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAppbmRleCAyMDllOTcxN2FlYjAu
LjA1NDhlZjcyMWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
VVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAg
ICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAKIHBy
aXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFy
Y2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJp
bmcgbV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4
IGRlN2RhZGRkYWMyMi4uNzExNTBjYmRkODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVt
cHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBh
dXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVS
TCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBm
b3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZE
YXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVBy
b3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uKTsKICAgICB9CiAKQEAgLTI0OCwyMyArMjQ4LDIzIEBAIFJlZjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVz
b3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJMKCksIGRhdGEpOwogfQogCi1SZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSBy
YXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBj
cmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0
YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3Ig
PSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3Qg
PSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVh
dGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwg
JmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIg
KzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNl
KGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYg
KENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewog
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0
eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAg
IENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
TWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFy
Y2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBA
IGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3Vi
cmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBX
ZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3Jl
YXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNv
dXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcg
KzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRp
bmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVB
cmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRy
YWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdU
Rk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1l
IGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgog
ewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAK
KwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwg
aGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVS
TC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAg
ICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwot
ICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFt
ZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGlj
aCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcg
aWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwi
MFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3Jj
PVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgp
LnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggZDA5ZWM5Zjc1YWJhLi41YTA3
YjEwYjRiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFNpbXBsZVJhbmdlOwog
Y2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZSgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVh
dGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJjaGl2
ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2ZT4+
JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4mJiBm
cmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAyMi4u
ZDAxMzlmODdhMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNo
aXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhU
TUxBcmNoaXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hp
dmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9h
ZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5n
KCkpKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJu
IG1haW5BcmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVy
YXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhU
TUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQ
YWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBw
YWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAv
LyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxh
Y2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVy
cyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJ
KCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAg
ICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEu
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAg
Zm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVy
LmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFy
Y2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29k
aW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxy
XG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCks
IGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTog
aWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBo
YXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0
YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNp
emUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFi
bGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5j
b2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxE
YXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNT
RVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdl
IGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1
dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3
ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1M
RGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0g
ZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNp
emVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4
aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29k
ZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAg
ICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCAr
PSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtl
U3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+
YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1o
dG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7
CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5oCmluZGV4IDNkMmRiN2M5NjAwMi4uMmRmZTg3ZTgyZTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtMzgs
MTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTUhUTUxQYXJzZXI7CiBj
bGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMg
UmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGdlbmVy
YXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1MQXJjaGl2
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzLi5lNTE4NmVmYjBiNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgc3RhdGljIGJvb2wgc2tpcExpbmVzVW50aWxCb3VuZGFyeUZvdW5kKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBsaW5lUmVhZGVyLCBjb24KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU1IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqIGRhdGEpCitNSFRN
TFBhcnNlcjo6TUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICA6
IG1fbGluZVJlYWRlcihkYXRhLCAiXHJcbiIpCiB7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNF
bXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBj
b250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5k
YXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBp
ZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJp
bmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVu
dC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3Zl
KHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVy
LnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUu
YXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBs
aW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUu
dXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVu
ZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1p
bWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQ
cmludGFibGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0
aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFz
IHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGlu
ZXMuCi0gICAgICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAg
ICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTE5Myw5ICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwK
ICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXND
b250ZW50ID0gY29udGVudC50YWtlQXNDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVh
ZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJh
c2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJh
c2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+
c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90
ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRh
YmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5z
aXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVuQml0Ogog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChjb250ZW50
LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2Rpbmcg
Zm9yIE1IVE1MIHBhcnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuaAppbmRleCAxZTliZDRkNzc2N2UuLjBkNjA0MzQzZjNkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5o
CkBAIC00MiwxMSArNDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJl
c291cmNlOwogY2xhc3MgTUhUTUxBcmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1M
UGFyc2VyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIq
KTsKKyAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAK
ICAgICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
Y3BwCmluZGV4IDRmMjI4ZThkMDM4OS4uZGRkMGIxYjg5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CkBAIC00MCwxMiArNDAsMTYgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9p
ZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2Rh
dGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsK
LSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NC4uMzc5OGE5YjRkOTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxp
Y2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJM
JiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxLi4zOGEyZTE3ZjBkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1F
VHlwZUNoZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2Rl
ZFNoZWV0VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2Vu
ZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAg
ICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2Fj
aGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKQEAgLTk3LDEzICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNl
dEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNh
dmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAK
LXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0
YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8g
RGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hl
ZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAg
ICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKKyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGlu
ZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAg
ICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9h
ZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhl
IGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkg
YWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUuLmU2
NTVjNjllM2VkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hl
ZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4Li5kMmJjMjgyMTQ3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAg
ICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0
aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAg
LTEwNSw3ICsxMTAsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSkKIAogc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMs
IGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAg
UmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9
OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsK
ICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVy
LCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9p
ZCBDYWNoZWRGb250OjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewog
ICAgIGlmIChpc0xvYWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVk
UmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7
CiAgICAgd2hpbGUgKENhY2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAg
ICAgICAgIGNsaWVudC0+Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaAppbmRleCBjZWJkYzU1N2YxM2YuLjEzNDY2Y2M5OWQwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20o
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAK
ICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGYuLjk0NjI3OTUy
MGQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBA
IC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQog
ICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdl
Ojp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
KQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1h
Z2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVm
ZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93
KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURh
dGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYg
KCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsK
KyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0
U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RT
Y3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsK
ICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxl
ZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRv
IFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwog
ICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTkzLDcgKzU5NSw3IEBAIHZvaWQgQ2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1lCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIC8vIExldCB0aGUgSW1h
Z2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNh
biBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNl
IGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55
IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KICAgICAg
ICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3b3VsZCBiZSBiZXR0ZXIg
aWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29kZXIgdG8gc3dhcCBpbiB0
aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGluZy4KICAgICAgICAgbV9p
bWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmLi4wODNmOTJmODg4Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2
OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9v
bCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2lt
YWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAg
VXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdl
RGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5l
ZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
KSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRh
U3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7
CkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29u
c3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFy
ZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRl
bnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4OC4uODk1ZGIxMTU4YjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
QEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNN
YWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QK
IHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBp
ZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKQEAgLTU2LDcg
KzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVz
b3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29t
ZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3Bz
LiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBp
ZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5t
YWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNp
emUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05
Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVE
YXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
IHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBt
YXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxs
YmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1Bv
bGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwog
ICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNy
ZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAg
ICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlm
eUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVu
dGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChh
dXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEp
KSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+
ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxLi5hNzg2NWY4YWQxNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVt
b3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dp
dGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5
VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0Vu
Y29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZl
ciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1
bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKSBj
b25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAg
LTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFz
aE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmlu
aXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9Owog
ICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExv
YWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKaW5kZXggM2U0NDZmYjkxNzRmLi45ZGUwYTA0Y2Q1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmlj
cyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiAgICAg
QVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkyOSw4ICs5MjksNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdC
dWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAg
ICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVy
Q29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzEuLmM5ODJkZDY5MzdhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xh
c3MgQ29va2llSmFyOwogY2xhc3MgTWVtb3J5Q2FjaGU7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJp
Y3M7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRl
eHRSZXNvdXJjZURlY29kZXI7CiAKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6
OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDcuLmRiNDMx
NjA3YWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50
OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1l
KCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0
YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNh
dXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAg
ICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGlu
Z3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAg
ICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAg
IENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMx
NWYzNjBmYzkuLjQ0NWU0ZjlmNDJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0
KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4
dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5My4uZDJjMWRlNDdlZmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04
MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29u
c3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAg
ICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4
dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAg
ICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA1NGU2NzZjZTUw
YjAuLjYyYTE2ZTg2YjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNj
cmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2Ny
aXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5n
KGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3Li44NjUxZTYzOWFkOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmlu
ZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIq
IHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0
KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAog
ICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4Li4w
Yzg0MjhiYjk5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRU
ZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQK
IHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VD
bGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNs
aWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZv
aWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMuLjA5YjQzMzlhMzdiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUs
MTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VF
bmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVw
ZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCmluZGV4IGUzZTJmNWU5NjQ4Ny4uZDJlZmYyZDJkNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiAr
NjEsMTYgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRY
U0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAg
ICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNv
ZGVkU2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAg
ICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2Up
OwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjLi5iZDIz
MTIxNGYyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
ZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7
CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZj
ODE2Li45NmQ4OTgyZTkzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJQcmV2aWV3
Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBA
IC0zNyw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmlu
YWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRp
ZEZhaWwoKTsKIApAQCAtNjAsMTcgKzYwLDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmV2aWV3
Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsK
ICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRl
ciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQ
cmV2aWV3Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVj
ZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwor
ICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXIm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3
Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAg
ICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRl
ciYpIGZpbmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRlclByb3ZpZGVyCi0gICAgdm9pZCBw
cm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7Cisg
ICAgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29u
dmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZl
cnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJp
bmcmKT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0
ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxv
YWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4
YjI1MmU5NzU2Li40ODc1NmEzM2I1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTYzLDEzICs2MywxMyBAQCBzdGF0aWMgUmVm
PExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGlu
Z0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBMT0coTmV0
d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5kaW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxk
LiIsIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5hcHBlbmQoYnVmZmVyKTsK
KyAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBk
YXRlTWFpblJlc291cmNlKCk7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVy
KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZl
cnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVz
cG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRh
LnJlc2V0KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZp
ZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBj
b252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQ
cmV2aWV3Q29udmVydGVyJiBjCiAgICAgfSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRl
cjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdD
b252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNv
dXJjZUxvYWRlci5nZXQoKTsKICAgICBpZiAoIXJlc291cmNlTG9hZGVyKQpAQCAtMjI0LDEwICsy
MjQsMTAgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2
aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICBtX2NsaWVudC0+ZGlkUmVxdWVz
dFBhc3N3b3JkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2
aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hh
cmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0
ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChj
b252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdp
bmFsRGF0YS5jb3B5KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmll
d0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNiBAQCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252
ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNs
aWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXIt
PnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91
bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCku
c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcuLmVhNjE1ZGZmNGRk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOCwxMiArMzgsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1
aW50OF90OwogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50Owog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNz
IE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFz
cyBWaXNpYmxlU2VsZWN0aW9uOwpAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29u
c3QgU2ltcGxlUmFuZ2UmKSA9IDA7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29u
c3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICov
LCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8q
IGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAxNjVhYTgwNThhMDMuLjAyMDAxYWIzNDMwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2
b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFn
ZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEg
PSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdl
U2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRl
ckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2Vz
LmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRh
KSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1p
bWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMu
YWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRl
eCA5NmFkMDgyNTQzZGQuLjc1ODM2Yjg3OTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFy
ZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2Vw
dGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewot
ICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwx
NSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxv
YWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5k
aW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAg
ICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwogICAgIGZpbGUu
ZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2Zp
bGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0
aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVu
ZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2ZTg3ZGY3OS4uZmM2
NmMzNjVhMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5n
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2Vy
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlp
bmdJbmZvPiBtX25vd1BsYXlpbmdJbmZvOwogICAgIHN0cnVjdCBBcnR3b3JrQ2FjaGUgewogICAg
ICAgICBTdHJpbmcgc3JjOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAgICAg
fTsKICAgICBzdGQ6Om9wdGlvbmFsPEFydHdvcmtDYWNoZT4gbV9ub3dQbGF5aW5nSW5mb0FydHdv
cms7CiAgICAgYm9vbCBtX3NldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggMTU3MzFlYjIzZmE3Li4wN2Vk
NDhlNTg4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC04OSw3
ICs4OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsK
ICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2Li4zNTc2M2VlMTJhMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwxMyBAQCB0eXBlZGVmIHN0
cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNp
bXBsZVJhbmdlOwogCkBAIC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0p
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7
IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJl
YWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7
IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBy
ZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogI2Vu
ZGlmCiB9OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVhZGVy
IHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8pIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9Owog
CiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3Qg
aW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYg
dGl0bGUpOwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMuLjdiNGIzZDM2YWE2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmNwcApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiBjb3B5UGxhdGZvcm1EYXRh
KGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCitz
dGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBj
b3B5UGxhdGZvcm1EYXRhKGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4mIG90aGVyKQogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFN0cmluZz4ob3RoZXIpKQogICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxTdHJpbmc+KG90aGVy
KSB9OwogCi0gICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KG90aGVyKSkKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG90
aGVyKS5jb3B5UmVmKCkgfTsKKyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKSkKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CiAKICAgICBy
ZXR1cm4geyB9OwogfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGFzdGVib2FyZEN1c3RvbURh
dGE6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUgfTsK
IH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKIHsKICAgICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0
YSA9IHsgV1RGTW92ZShkYXRhKSB9OwogfQpAQCAtMjAyLDE0ICsyMDIsMTQgQEAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnNhbWVPcmlnaW5DdXN0b21TdHJp
bmdEYXRhKCkgY29uc3QKICAgICByZXR1cm4gY3VzdG9tRGF0YTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbV9kYXRhKSB7CiAgICAgICAgIGlmIChlbnRyeS50eXBlICE9IHR5cGUp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5j
b3B5UmVmKCk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0
YSkuY29weVJlZigpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTI2NSwx
MSArMjY1LDExIEBAIHZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hDdXN0b21TdHJp
bmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgfQogfQogCi12b2lkIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVm
PFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJiBmdW5jdGlvbikgY29uc3QKK3ZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbV9kYXRhKSB7CiAgICAgICAgIGF1dG8mIGRhdGEgPSBlbnRyeS5wbGF0
Zm9ybURhdGE7Ci0gICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRh
dGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgaWYgKChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSku
aXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihkYXRhKSkKICAgICAgICAgICAgIGZ1bmN0aW9uKGVudHJ5LnR5cGUsIGRhdGEpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oCmluZGV4IDJiZTgxZDI5MzhhMy4uOTdmZjk4NWUyNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewogcHVibGljOgpA
QCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7CiAgICAgICAg
IFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hh
cmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTY1LDExICs2NiwxMSBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAog
ICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04Myw3ICs4NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0
OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRC
dWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5n
T3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFy
aWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25z
dDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNE
YXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCmluZGV4IDFjMDcyNmZlYjNlMC4uYzQxZTA4NTI0NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAgKzMxLDExIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNz
IFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBp
bnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRl
bnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRl
ci5oCmluZGV4IDNmNDgzMmE1YTY1OC4uOWU3MmU0NGEyZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaApAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZv
cm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hl
ZEFkZGluZ0RhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNl
bWVudERhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICB2aXJ0dWFsIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2Nr
SGFuZGxlcigpIGNvbnN0ID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA3YTJhMzEwMDc0MjUuLjcxZGZiOTNlNTc1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEz
ICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3Rv
bURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0
IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFz
dGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBA
IC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1
cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAg
IFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJk
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
aW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVS
TChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRD
b2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMw
MWU3ZGY3Li4yYWJhY2YzZWY0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJQcmV2aWV3Q29u
dmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNs
dWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjMsOSArNjIsOSBAQCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogICAgIHJldHVy
biBtX3ByZXZpZXdFcnJvcjsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVy
dGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJl
dmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLmdldCgpOwogfQogCiB2
b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC04MiwxNSArODEs
MTIgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvdmlkZXItPnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQ
cmV2aWV3Q29udmVydGVyKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKGF1dG8gYnVmZmVyKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBhcHBl
bmRGcm9tQnVmZmVyKCpidWZmZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkaWRGYWls
VXBkYXRpbmcoKTsKKyAgICBwcm92aWRlci0+cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0
byYmIGJ1ZmZlcikgeworICAgICAgICBhcHBlbmRGcm9tQnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgfSk7CiB9CiAKLXZvaWQgUHJldmlld0NvbnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6YXBwZW5k
RnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
d2hpbGUgKGJ1ZmZlci5zaXplKCkgPiBtX2xlbmd0aEFwcGVuZGVkKSB7CiAgICAgICAgIGF1dG8g
bmV3RGF0YSA9IGJ1ZmZlci5nZXRTb21lRGF0YShtX2xlbmd0aEFwcGVuZGVkKTsKQEAgLTIyMSw4
ICsyMTcsOCBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBBU1NFUlQobV9zdGF0ZSA+PSBTdGF0ZTo6Q29u
dmVydGluZyk7CiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmco
KnRoaXMpOwogCi0gICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50
KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEo
KnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgIGlmICghbV9wcmV2aWV3RGF0YS5pc0Vt
cHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLmdldCgpKTsKIAogICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjM0LDEyICsyMzAsMTIgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgfQog
CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkZpbmlzaGVkQ29udmVydGluZyk7Ci0gICAg
QVNTRVJUKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9wcmV2aWV3
RGF0YS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3ByZXZpZXdFcnJvci5pc051bGwoKSk7CiAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0K
IAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNl
aXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8g
cHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIApAQCAtMjU2LDcgKzI1Miw3IEBAIHZv
aWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiAgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3ByZXZpZXdEYXRhLT5hcHBlbmQoZGF0YSk7CisgICAgbV9wcmV2aWV3RGF0YS5hcHBl
bmQoZGF0YSk7CiAKICAgICBpdGVyYXRlQ2xpZW50cyhbJl0oYXV0byYgY2xpZW50KSB7CiAgICAg
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIGRhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIy
Nzk5Yy4uNWFlZGEzYjcyZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MSwxNSArNDIsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBzdHJ1
Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXI7CiAKIHN0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSA6IENhbk1ha2VXZWFrUHRyPFBy
ZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CiAgICAgdmlydHVhbCB+UHJldmlld1BsYXRmb3JtRGVs
ZWdhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRl
RGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsK
IH07CkBAIC03Miw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
cHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZp
ZXdVVEkoKSBjb25zdDsKICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBwcmV2aWV3RXJyb3IoKSBj
b25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CisgICAg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25zdDsKIAogICAg
IHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKICAgICB2b2lkIGZpbmlzaFVwZGF0aW5nKCk7CkBAIC05
NCw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYXRmb3JtUGFzc3dvcmRFcnJvcihj
b25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7Ci0gICAgdm9pZCBhcHBlbmRGcm9tQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoUHJldmll
d0NvbnZlcnRlckNsaWVudCYpOwogICAgIHZvaWQgZGlkRmFpbENvbnZlcnRpbmdXaXRoRXJyb3Io
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFVwZGF0aW5nKCk7CkBAIC0x
MDYsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtVW5sb2NrV2l0aFBhc3N3
b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUHJldmlld1BsYXRmb3JtRGVsZWdhdGUKLSAg
ICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7
CisgICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpIGZpbmFs
OwogICAgIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVk
Q29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0
YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VF
cnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNw
b25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2
ODA2OTJiLi45Y2VlOTMzMjBiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRl
ckNsaWVudD4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1
bHQ7CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2Fu
TWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3
Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3Rh
cnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hh
cmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgbmV3RGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYp
ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXJQcm92aWRlci5oCmluZGV4IDgyNzg2MzkzZmNlZC4uYWI3MDA0YmU5MzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlclByb3ZpZGVyPiB7CiAg
ICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlclByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAg
dmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciop
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3
Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm92
aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSA9IDA7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODEuLmEzMzkyNWQz
YWMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNyw2
MyArMzcsNjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewotICAgIGFw
cGVuZChkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
ewotICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6
ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRh
LCBzaXplKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCi0gICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQogewotICAgIG1f
c2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEp
KX0pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RG
TW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgOiBtX3NpemUocHJvdmlkZXIu
c2l6ZSgpKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4m
JiBkYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCiB7Ci0gICAgYXBwZW5kKFdURk1v
dmUoZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CiB9CiAKLSNpZiBVU0UoR1NUUkVBTUVSKQotUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBl
ZEJ1ZmZlcikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKG1hcHBlZEJ1ZmZlcikpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikp
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKLSAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQorRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKwor
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQorICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUo
KSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFw
cGVkQnVmZmVyKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9Ci0jZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1h
eVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRl
cikKKyAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgaWYgKG1heVVzZUZpbGVN
YXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5n
U3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURh
dGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlm
IChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsK
IH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYgdmVjdG9yKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CisgICAgYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0
YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90
IHNpemUpCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBl
ZEJ1ZmZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKG1hcHBlZEJ1ZmZlcikpOworfQorCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCisgICAg
OiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKK3sKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7Cit9CisjZW5kaWYKKwor
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUp
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBjb21iaW5lZERhdGEu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKQEAgLTEwMywzMyArMTA5LDE5IEBAIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8U2hhcmVkQnVm
ZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBz
ZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1v
dmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNl
IHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRp
Z3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
Y29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFt
X3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRv
IGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsK
LSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7
CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7
CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBj
b21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQo
KSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwotfQotCi1WZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CitWZWN0b3I8dWludDhf
dD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogewogICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkp
OwpAQCAtMTM5LDcgKzEzMSw3IEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlE
YXRhKCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB7IH07CkBAIC0xNTQsMTMgKzE0NiwxMyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVk
QnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotU2hhcmVk
QnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24p
IGNvbnN0CitTaGFyZWRCdWZmZXJEYXRhVmlldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRW
ZWN0b3JFbnRyeSogZWxlbWVudCA9IGdldFNlZ21lbnRGb3JQb3NpdGlvbihwb3NpdGlvbik7CiAg
ICAgcmV0dXJuIHsgZWxlbWVudC0+c2VnbWVudC5jb3B5UmVmKCksIHBvc2l0aW9uIC0gZWxlbWVu
dC0+YmVnaW5Qb3NpdGlvbiB9OwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBw
b3NpdGlvbikgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
VmVjdG9yRW50cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlv
bihzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocG9zaXRpb24g
PCBtX3NpemUpOwogICAgIGF1dG8gY29tcGFyYXRvciA9IFtdKGNvbnN0IHNpemVfdCYgcG9zaXRp
b24sIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkmIGVudHJ5KSB7CkBAIC0xNzEsNyArMTYz
LDcgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFyZWRC
dWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAot
U3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAorU3RyaW5nIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVy
IHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
QEAgLTE4MSw3ICsxNzMsNyBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNv
bnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotUmVmUHRyPEFy
cmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKK1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAg
ICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAtMjAwLDY4ICsxOTIsNjMgQEAgUmVmUHRyPEFycmF5
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKICAgICBy
ZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFz
QmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEu
bV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEu
bV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXpl
LCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAg
ICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAg
ICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCgh
bV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5h
cHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpIH0pOwogICAg
IG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwog
fQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6
OmNsZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1f
c2l6ZSA9IDA7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5
KCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Y2xvbmUgPSBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogICAgIGNsb25l
LT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5k
KHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAg
ICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVudC5iZWdpblBv
c2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VSVChjbG9uZS0+
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7Ci19Ci0K
LXZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMg
PSBtX3NlZ21lbnRzOwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRzKQogICAgICAg
ICBhcHBseShTcGFuIHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+
c2l6ZSgpIH0pOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAog
ewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yODMs
NyArMjcwLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnJlYWQoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBpZiAob2Zmc2V0ID49IHNpemUoKSkKQEAgLTMxMCwxMiArMjk3LDEyIEBAIFZl
Y3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK3ZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3Ro
KSBjb25zdAogewogICAgIHJldHVybiBjb3B5VG8oZGVzdGluYXRpb24sIDAsIGxlbmd0aCk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3QKIHsKICAgICBBU1NFUlQobGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7CiAgICAgaWYg
KG9mZnNldCA+PSBzaXplKCkpCkBAIC0zNTMsMTQgKzM0MCw4IEBAIHZvaWQgU2hhcmVkQnVmZmVy
Ojpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNv
bnN0Ci17Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYm
ICsraXQgPT0gZW5kKCk7Ci19Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlv
biA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAt
MzcyLDQyICszNTMsMTMgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50
KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKLXsKLSAgICBhdXRvIHZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAotI2lmIFVT
RShDRikKLSAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCi0j
ZW5kaWYKLSNpZiBVU0UoR0xJQikKLSAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBk
YXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCi0jZW5kaWYKLSNp
ZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0s
Ci0jZW5kaWYKLSAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEoKSk7IH0sCi0gICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9Ci0gICAgKTsKLSAg
ICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwotfQotCi1ib29s
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25z
dAotewotICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwotfQotCiAjaWYgIVVTRShDRikKLXZvaWQgU2hh
cmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNl
bmRpZgogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2Rlcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEoKSksIHNpemUoKSB9fTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0o
Y29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29u
c3QKIHsKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
NDU2LDcgKzQwOCwxMTggQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hh
cmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6
ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUo
c2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1
ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8
IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1
ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkp
CisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdt
ZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwor
fQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpCisgICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVN
YXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9
PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7
CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGlu
Z1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsK
K30KKworV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBj
b25zdAoreworICAgIHJldHVybiB7IHsgZGF0YSgpLCBzaXplKCkgfSB9OworfQorCitSZWY8RGF0
YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3sK
KyAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCisjaWYgVVNFKENGKQorUmVmPERhdGFTZWdtZW50
PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9Cisj
ZW5kaWYKKworI2lmIFVTRShHTElCKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3Jl
YXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1NUUkVB
TUVSKQorUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCitSZWY8RGF0YVNlZ21lbnQ+IERh
dGFTZWdtZW50OjpjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30K
KworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlk
ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92
aWRlcikpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAor
eworICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCisgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5k
YXRhKCk7IH0sCisjaWYgVVNFKENGKQorICAgICAgICBbXShjb25zdCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRhR2V0Qnl0ZVB0cihk
YXRhLmdldCgpKTsgfSwKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgICAgICBbXShjb25zdCBH
UmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIp
KTsgfSwKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgICAgIFtdKGNvbnN0IFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IGRhdGEtPmRhdGEoKTsgfSwKKyNlbmRpZgorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKKyAgICAgICAgW10oY29uc3QgUHJv
dmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBwcm92aWRlci5kYXRh
KCk7IH0KKyAgICApOworICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxl
RGF0YSk7Cit9CisKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBj
b25zdAoreworICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOworfQorCitzaXplX3QgRGF0YVNlZ21lbnQ6
OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAg
ICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJu
IGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUzOCwzNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRv
ciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1
ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQor
dm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSgpCit7CisgICAgcmVzZXQoKTsKKyAgICBl
bnN1cmVCdWZmZXIoKTsKK30KKworUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnRha2UoKQoreworICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIHJldHVybiBt
X2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXJCdWlsZGVyOjp0YWtlQXNDb250aWd1b3VzKCkKK3sKKyAgICByZXR1cm4gdGFrZSgpLT5t
YWtlQ29udGlndW91cygpOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAg
ICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICByZXR1cm4g
dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgbV9i
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCitTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDog
bV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00ODksMjIgKzU4
MiwxMiBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3Qg
U2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemU7Ci19Ci0KLWNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKLX0KLQog
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNl
Z21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21l
bnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgp
XSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgp
IHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6
ZTsgfQogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmlu
ZGV4IGYyM2Y1ZDY5YWQzMi4uYTA4ZWVkM2E5Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTI1IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3Jh
cHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4g
YmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUg
dGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVE
YXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNs
YXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6
WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4g
Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNp
ZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZv
aWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYpOwogI2VuZGlmCi0KICNpZiBV
U0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwot
ICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwog
I2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYm
KTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2Vn
bWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVh
ZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkg
aW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5j
dGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRy
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsg
fQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50
OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8g
U2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRo
ZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBz
aGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3Jl
YXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVu
dHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQg
YnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVu
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAg
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAg
ICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBk
YXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYpOwogCi0g
ICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBi
ZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8g
bW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50Lgot
ICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFT
ZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkg
Y29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAg
ewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENG
KQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEp
CisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAg
c3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+
IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsK
LQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92
aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVy
KSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lm
IFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRh
KQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAg
IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAog
I2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7
CisgICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorfTsKKworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKLSAgICAgICAgc3RkOjp2
YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0
ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAg
ICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURh
dGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlp
bmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3Bp
ZXMgdGhpcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8v
IEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxh
dCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9
CisgICAgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0K
IAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgo
Y29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVzaW5nIERh
dGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29t
cGF0aWJpbGl0eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBi
ZWdpblBvc2l0aW9uOwpAQCAtMjEwLDc1ICsxODksMTgzIEBAIHB1YmxpYzoKICAgICB1c2luZyBE
YXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAg
ICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAogICAgIC8vIGJlZ2luIGFuZCBlbmQg
dGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRp
b24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1v
cnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJh
dG9yPT0ob3RoZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwor
CisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91
cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KCk7CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFw
cGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7
CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVm
KTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0
ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5k
aWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNl
Z21lbnQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBs
ZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+
JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNl
Z21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJp
bmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFi
bGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0g
ICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9
OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAot
aW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKKy8vIEEg
U2hhcmVkQnVmZmVyIGlzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBk
aXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0
aG9kcy4KK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
aWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6
ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBS
ZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsK
KyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGlu
ZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7
CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNl
bmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgeworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVm
ZmVyIGFzIGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBv
bmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXIt
PmlzQ29udGlndW91cygpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZl
cik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShidWZmZXIpIH0pCisgICAg
eworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9
CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW1wdHkoKTsKKworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+Y29weSgpIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VBc0NvbnRpZ3VvdXMoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVy
KCk7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCitpbmxp
bmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkK
IHsKICAgICBpZiAoaGFzT25lUmVmKCkpCiAgICAgICAgIHJldHVybiB0YWtlRGF0YSgpOwogICAg
IHJldHVybiBjb3B5RGF0YSgpOwogfQogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXpl
ID0gc3RkOjpudWxsb3B0KTsKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRC
dWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
OwotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRC
dWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CiAgICAg
Y29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQotICAg
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2
YXRlOgotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7
CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90
IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
Y3BwCmluZGV4IGNkYjZlNzAzNDA0ZC4uOWQwNTVjZTI3ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAotU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1
cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgp
KQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBt
X2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0LDcgKzQ0
LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25z
dCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBz
ZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAg
LCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRv
ckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5k
YXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjLi4xYzY0MDhkNGM3MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApA
QCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7
Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciog
c2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpOwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAg
dm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKIAogcHJpdmF0ZToK
LSAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0
ZXJhdG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsK
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29u
c3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQg
eyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIFZlY3Rv
cjxjaGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIyZDdhNTUwZDQ2MC4uYTRiNGJiMTA0YjRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJp
bmcodHlwZSwgdmFsdWUpOwogfQogCi12b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU3RhdGlj
UGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX25vbkRlZmF1bHREYXRhVHlwZXMuYWRkKHR5
cGUpOwogICAgIG1fY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGTW92ZShkYXRhKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKaW5kZXggYzA5YjZkZTMx
ZjJlLi5lZGQ3MTM2MjNmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBT
dGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2
b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsK
ICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1YWQu
LjFkNjViYzQwM2FkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVj
dCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmluZyBzcmM7CiAgICAgU3RyaW5nIG1p
bWVUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNjcs
NyArNjcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxO
b3dQbGF5aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQogICAgICAgICByZXR1
cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkx
Li43ZjA0OTYwYzU5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3
ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0lu
Zm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRp
bWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8u
YXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAg
YXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdv
cmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtN
SU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIo
bm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5k
ZXggNmI2NjIxN2ZmMTYxLi40Y2JlZjEyNzkwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTMzLDggKzMzLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkK
K0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVm
IGRhdGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGFwcGVuZChkYXRhKTsK
IH0KIApAQCAtNDMsMjQgKzQ0LDIwIEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0
YVJlZiBkYXRhKQogI2lmICFVU0UoRk9VTkRBVElPTikKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5z
aXplKCkgPT0gMSkgeworICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNb
MF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsK
ICAgICB9Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVs
bHB0ciwgc2l6ZSgpKSk7Ci0gICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
LSAgICAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwg
c2VnbWVudC5zaXplKCkpOwotICAgIH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5k
aWYKIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRh
dGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKENGRGF0YVJlZiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihkYXRhKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9z
ZWdtZW50cykgewogICAgICAgICBpZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKQEAg
LTcwLDkgKzY3LDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVm
IGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0
YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAg
IGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdt
ZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChk
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDA3OTdkZmJlOGQwMS4uY2JlODc3
MWE0NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1
aXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0MjkwZGIxMjhkMDAuLjJl
ZjI3MDFmZTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUs
NyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0Rh
dGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBs
YWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2IzODNmNC4uNjc5YWU5MzI5NTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbQppbmRleCBiNDYxZjk3NTM2ZGUuLjFjOTYwNDcxNmI0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZp
bHRlclN0YXRlKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBj
b25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGMu
LmI4MTcwODE3Y2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
c3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZp
bGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAK
LS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRv
ZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9u
LWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1
ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3Rl
Ym9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0
ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDkgKzIxMSw5IEBAIFZlY3Rv
cjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQog
CiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZG
VG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsK
LSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRX
aXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZm
QnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNE
YXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0Zp
bGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocG5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OS4uMjVmMzExZjI1ODliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNp
emU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUlu
dGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNv
bnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBf
cG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAo
dm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNV
SW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtODgsMTMgKzg4LDE0IEBAIEBlbmQKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShOU0RhdGEgKmRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRhdGEpKSk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9j
b250aWd1b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIApA
QCAtMTA1LDEwICsxMDYsOCBAQCBSZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZU5TRGF0YSgpIGNvbnN0CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBp
ZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVh
dGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9
PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVh
dGVOU0RhdGEoKSk7CiB9CiAKQEAgLTExOSwxNCArMTE4LDE0IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxOU0FycmF5PiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdtZW50cywgW10gKGF1dG8mIHNlZ21lbnQpIHsKICAg
ICAgICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgfSk7CiB9
CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRh
KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRh
IGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCld
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZS5oCmluZGV4IGZiYzI4M2ZiYzMzNi4uMmRlNDE5MzRkYTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBDRE1JbnN0YW5jZVNlc3Npb247CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsK
IApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDRE1JbnN0YW5jZUNsaWVudCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNE
TUluc3RhbmNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVxdWVz
dGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9u
RGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSA9IDA7CiB9OwogCiAvLyBKYXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11
c3QgYmUgdXNlZCBmcm9tIHRoZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQ
ZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVm
UHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VT
ZXNzaW9uLmgKaW5kZXggMzdjZDA3YzdiZjJkLi5kMjU5MjI1YmE5ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
U2Vzc2lvbi5oCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DRE1JbnN0YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlT
dGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9y
PHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5
U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlT
dGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNz
YWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29u
c3QgU3RyaW5nJikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7
CiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwx
MyArNzgsMTMgQEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVz
aW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7
CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9y
ID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcg
TWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAg
IHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3Rh
dHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2Vk
RXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsK
IAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAg
IE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lv
bkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFj
ayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hh
cmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0
ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUp
PjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2QuLjUyYTYxNDhjODNjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUu
aApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRBbmRJbml0
aWFsaXplKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRl
cygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuY3BwCmluZGV4IGYyMThmOTc5MDRmYi4uNGJhNzViZjAwZDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3Bw
CkBAIC0yMjcsNyArMjI3LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Ig
S2V5U3RvcmU6OmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCkgY29uc3QKICAgICBDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3I7CiAgICAga2V5U3Rh
dHVzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtS2V5cygpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGtleSA6IG1fa2V5cykKLSAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tl
ZEFwcGVuZChzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOwor
ICAgICAgICBrZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtl
eS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOwogICAgIHJldHVybiBrZXlT
dGF0dXNWZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IGE1ODRiNmNkMjY2Yi4uZTFlMDk4YTFkNWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgK
QEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxl
VmFsdWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5z
aXplKCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9p
ZC5zaXplKCkpOyB9CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZh
bHVlVmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlLi5mY2E2ZjIz
ODhhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBw
YXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8SlNPTjo6
T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3Qg
Zml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1
ZmZlci5zaXplKCk7CkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNl
SlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVy
bmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7
CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKaW5kZXggNzRmNTE1YjBiZDJhLi5mY2Y1YmRkYTdj
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VK
U09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworUmVmUHRyPEpTT046Ok9iamVjdD4gcGFy
c2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4Yy4uMzFhOWZkZmEwMmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3Rh
dGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBK
U09OOjpPYmplY3QmIHJvb3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRo
ZSBLZXlJZHMgY291bnQgYW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5p
dERhdGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRz
TG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgw
LCAwKTsKIApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAg
aWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAg
ICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXRE
YXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGln
dW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERh
dGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6
ZSA9IDA7CkBAIC0xODgsMTUgKzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQog
CiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlz
IGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2Vu
Y0luaXREYXRhKGluaXREYXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChr
ZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0
RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIw
NCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlm
IGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQg
fHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRz
LnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBj
b250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8q
IGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJy
YXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7
CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwot
ICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwot
ICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpz
b25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8g
Q2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0
RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4g
a2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1
LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21X
ZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0
IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAg
Ly8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRo
ZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBj
b250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmco
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkp
KTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhp
bml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAg
ICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBD
U3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5
SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0
dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xl
YXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBA
QCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1
ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0
aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wg
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENE
TVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2Ug
YnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpT
T05PYmplY3QocmVzcG9uc2UpKQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VD
bGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyCiAgICAgY2FsbGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNs
ZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlm
aWNhdGUuCiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlz
KSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50
MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00
NzUsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAK
LXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ug
b25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJl
cHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAK
ICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3Is
IHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVl
IHN1Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxs
YmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2Vz
cykgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9
IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2UKICAgICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJl
c2VudGluZyByZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xp
Y2Vuc2UgcmVsZWFzZScgZm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0
b3IgPSBtX2tleVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6
UmVsZWFzZWQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25z
dHJ1Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwg
Y3JlYXRpbmcgYSAna2lkcycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQg
a2V5IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Np
b24uCkBAIC01OTMsMTQgKzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAg
ICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAg
ICAgIH0KIAotICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZl
ciBvYmplY3QuCisgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9v
dE9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcg
PSBtZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwog
ICAgIH0KIAogICAgIG1fa2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxs
YmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdl
KSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92
ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2Up
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4Li45ZTI3ZmU5MTJjNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
b2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBm
aW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25z
dCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9u
VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7
IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNp
c3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0o
KSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGlj
OgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBh
cmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
aAppbmRleCBlOTY4ZTk4NWM3ZWUuLmVjZjRlMDhjOWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZEVuY29kZXJHZW5lcmlj
IGZpbmFsIDogcHVibGljIEtleWVkRW5jb2RlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4YThjMTBiNzAy
NGMuLjkzN2QxZmI2ZjBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVz
KQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShi
eXRlcyk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdS
ZWZQdHI8R0J5dGVzPihieXRlcykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxH
Qnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA3NDQyMDA0ZjAwYjUuLjgyZWJhNzNiYWM0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtNTksNyArNTksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250RGVzY3Jp
cHRpb247CiBjbGFzcyBHbHlwaFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggMzBk
ZmFhMmQyZjg1Li5mYmJjY2M0MzY4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJm
YWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERl
c2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNl
cHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVy
IGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNl
YjY0OTUzLi5lMzJhMzZjNjA3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1F
bmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERh
dGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5Li42
NTVkZmU3M2NmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApA
QCAtNzAsNyArNzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFBvaW50
OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBMZW5ndGg7CiAK
IC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVz
dHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1l
cy4KQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAg
dmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gSW1h
Z2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVk
RGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERh
dGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoYm9vbCAv
KmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsg
fQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0g
Ly8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1
ZSkgPSAwOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1h
Z2VEYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29k
ZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7
IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURh
dGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0
YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggNGRkYjZk
ZjgzZWNiLi5kZTMzZjFhZjQxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVy
U2l6ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBt
X3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4
X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAg
IG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIw
Niw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkg
JiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIg
eyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAg
ICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVs
cy0+ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIFBhY2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWlu
dDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAg
IEludFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50
aXJlIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEw
MDg4Li43YzU0OTQ3ZjRkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rl
cjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IElt
YWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTSht
aW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVkLi42YThmZmNiNjBmYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0zNywxMiArMzcs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0
ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVy
PiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+
SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgewpA
QCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHVz
aW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVkaWFUeXBlKT47CiAg
ICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYp
PjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPElt
YWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVy
RnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAgICAgU3VwcG9y
dHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZDgxYzQ4MDE5Mjg0
Li4zMDc3NDMzMTVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNv
dXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9
CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVy
KiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFp
bGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1h
Z2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+
c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6
cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51bGxw
dHI7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0
YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0
YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCmluZGV4IDhhZjUwODBhMDBhOS4uODE0ZjBlMTJlYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNv
dXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3Zl
KG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9p
ZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERh
dGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVu
c2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAt
MTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBU
IGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRh
VHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hp
bmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAg
IGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJv
b2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsK
ICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlcjsg
fQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3Qg
ZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVj
b2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmlu
ZGV4IDNlNTllYTlkMDhkZC4uNTc3YmQ1MDhhNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5
cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShX
VEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAs
IG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2Rl
bC5oCmluZGV4IDA2NTgxMzM3OWYxMS4uZTZiZGUxNjZmOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0
cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1f
bWltZVR5cGU7CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAg
ICAgZW5jb2RlciA8PCBtX3VybDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXgg
NzQ1OWM1ODU4ZDI0Li44ODY5MWRjMjU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5o
CkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhv
ZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hh
cmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9u
Y2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgog
ICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0
Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxh
dGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5NGM3Li44YjA0
ZjliZTk2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApA
QCAtODYsMTIgKzg2LDEyIEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RT
aW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
SlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0g
fSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0
YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzaW5mQXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUg
OiAqc2luZkFycmF5KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
fQogCiB1c2luZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywg
VmVjdG9yPHVpbnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hl
bWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNj
aGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFj
dFNpbmZEYXRhKGJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsx
NzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZy
b21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlE
czsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZm
ZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgz
LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXpl
U2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94
IEZvcm1hdAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVy
KTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQog
Ci1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwg
dGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlE
czsKICAgICBrZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7
CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citi
b29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKSBjb25zdAogewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMo
aW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBA
IGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmgKaW5kZXggYmM5M2Y2ZjZhN2JkLi4zMTdiYjhkNTdlODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC03MSwxNyArNzEsMTcgQEAgcHVibGljOgog
ICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRz
U2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nl
c3Npb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2lu
Zihjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2lu
Zihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBs
YXlTdHJlYW1pbmdTY2hlbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IDE1OWI5
MGNkYjQ4Zi4uNTZiNThjMjVhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg0LDcg
Kzg0LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3Ry
ZWFtaW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBB
bGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdl
YWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1
YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdl
VVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBzZXJ2
ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7
IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlT
ZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtl
eVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwor
ICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVl
c3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVu
dEtleVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdl
ZChib29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5n
ZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAg
IHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEtleXMg
PSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5
cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJp
dmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZXRh
aW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJD
b3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50
U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJM
OwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Np
b24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vz
c2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXgg
ZTlmMmFhMzM1ZGI5Li5iYTUwNjFlYmI1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBA
IC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICBy
ZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVx
dWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25E
YXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICgh
cmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUs
NyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdl
dCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxp
emF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxp
emF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5l
eHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtl
eVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3Qg
PSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25z
ZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNl
SlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09O
OjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3Qg
Zml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1
ZmZlci5zaXplKCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09O
LCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5n
IGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24p
OwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2Fs
bGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2
ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIp
OwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsK
QEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2Ut
PmtleUlEcygpOwotICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5m
aW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAg
ICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNo
aW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAg
ICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAg
S2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygp
CiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAg
IERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlw
ZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDks
MTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0
aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0g
aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBp
bml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAo
aW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQot
ICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERh
dGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZ
U1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IElu
aXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0g
YmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7
CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBp
bml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmpl
Y3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0
aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzcz
Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBp
c0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0
YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcg
QEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkg
PT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJl
c3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNh
dGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0g
Y3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAg
ICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBl
bmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJ
ZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3Jh
Z2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8g
Zm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hp
bmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBr
ZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBr
ZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7
CiAgICAgICAgICAgICB9KTsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAg
ICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRl
bnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwor
ICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNw
b25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0
KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21f
Y3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5
UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAg
Ly8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5k
IGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2Fs
bGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsK
ICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNv
bnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFw
cElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3Rv
cmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tT
ZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3Ig
Y2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4g
W1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9u
UmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVj
dG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAg
ICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVl
c3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7
CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9y
ICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7
CkBAIC0xMTUzLDkgKzExNTMsOSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUg
PSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNp
bmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
UmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3Rk
OjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+
PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFj
a0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0
aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9y
PFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAg
ICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnkt
PnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBr
ZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlE
LT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNl
NjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0
aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkp
OwogICAgICAgICB9CkBAIC0xMjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRh
aQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVl
c3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNG
b3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgp
KTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFt
aW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVu
dElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlv
bkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVn
YXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVz
dERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1Jl
cXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAg
aWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkK
LSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50
UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0Rh
dGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFt
aW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVu
dElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlv
bkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
ZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5Q
dHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNy4uNjJiODNmYmZkNTc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1
Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VE
ZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFn
ZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAgLTg2LDcgKzg2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRh
UmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5h
bDsKIApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPiBmcmFtZUluZm9zKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIElt
YWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAg
ICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7CiAgICAgdm9pZCByZWFkU2FtcGxl
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5k
ZXggMDY5NTE2YTA4M2Q1Li4zNWM2Y2U2N2U4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIEltYWdlRGVjb2Rl
ckFWRk9iakNTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFnbWEgbWFyayAt
IEltYWdlRGVjb2RlckFWRk9iakMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdl
RGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZP
YmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewog
ICAgIC8vIEFWRm91bmRhdGlvbiBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAg
IGlmICghQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBA
IC0zMDEsNyArMzAxLDcgQEAgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2Rl
ckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURlY29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdl
RGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUo
bWltZVR5cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUp
KQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFW
Rk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgLCBtX2xv
YWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVyRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVzc2lvblNlc3Np
b24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsKLSAgICBbbV9s
b2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsK
KyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgpLnJlc291cmNl
TG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9nbG9i
YWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwogICAgIFttX2Fz
c2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJdIGNvbXBsZXRp
b25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0YWJsZSB7CkBA
IC02NDEsOSArNjQxLDkgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENv
bnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdl
dCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lk
IEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSAgICBbbV9s
b2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERh
dGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCiAg
ICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAyMDBlMWE4ZjlhZmIuLmM5ZDliMmE5Njg1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Owog
Y2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxs
Q2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xT
dGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVx
dWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJ
RDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQ
bGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkN2NmOWQ0YmYxZmUuLmRhMWFjMGQ3MTAxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2Uo
Q0RNSW5zdGFuYwogICAgIGlmICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5jZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNz
aW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsK
KyAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJ
RHMoVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsK
ICAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCAx
YTQzYzdkZWQyNzYuLmFiZDgxZTVmM2MxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZs
YWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVk
QnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgp
OworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFw
cGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFt
RGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFE
aXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjQuLjc1NGIxZTJl
ZWMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwog
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVi
bGljOgpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNi4uMGVmZWVhZWY1YjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVu
dDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1
ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCmluZGV4IGEyMmE5OTdiMTEwNy4uZjkyMWYzZGEwZTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNTYsMTQg
KzE1NiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcs
IHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7
IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQo
ZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAg
ICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRy
PFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
OjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjEx
LDEzICsyMTEsMTAgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5p
c2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBt
X2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFy
ZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdl
dCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTM4OCw3ICszODUs
NyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBz
dG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0
YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBp
ZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3
YTgxZDNlZS4uOTQxOWJjZWEzOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBA
IC0zMSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRD
cmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZv
cm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZv
bnRWYXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBm
b250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBp
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWYu
LmI2ZDNlYjM2MzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc2l6ZV90
IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIs
IG9mZl90IHBvc2l0aW9uLAogCiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykK
IHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1
ZmZlcio+KGluZm8pOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9
IHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaGFyZWRC
dWZmZXItPmRlcmVmKCk7CiB9CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2Rl
ckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgp
ID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdp
dGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAg
ICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRh
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRy
KSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0g
a0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NjIsMjMgKzU2MiwyNCBAQCBQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZElt
YWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVk
QnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZm
ZXIncyBrbm93bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8g
d3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRo
YXQgSW1hZ2VJTyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIC8vIE9uIE1hYyB0
aGUgTlNEYXRhIGluc2lkZSB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0
bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGtub3ds
ZWRnZS4KKyAgICAvLyBXZSB1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8g
d3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRo
YXQgSW1hZ2VJTyBpcworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyLgorICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5n
ZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0
YVJlY2VpdmVkKTsKICNlbHNlCi0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3Jh
cCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7Ci0gICAgLy8gV2UgdXNlIHRoZSBH
ZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVy
IG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVy
IHRvIHdyYXAgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgYXV0byBjb250aWd1b3Vz
RGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5y
ZWYoKTsKKyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRo
ZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRl
IHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8g
aXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgog
ICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAw
LCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVh
c2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJv
dmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0Rh
dGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdl
U291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3Zp
ZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA5NzQw
NzM2YTIxYWMuLmEwYWMxYzJmYmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdl
RGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1h
Z2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAg
ICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9v
bCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVj
ZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYi4uZmY3N2I1M2U5ZDY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9j
dW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3Zp
ZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXgg
MzU5ZWRiNDE1ZmQzLi5kZTZkZWJlMmJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCkBAIC0zNjUsOSArMzY1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a1dvdWxkQmxvY2spOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRh
U2VnbWVudCh2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCisgICAgc3RhdGljIHZvaWQgRnJl
ZVNoYXJlZEJ1ZmZlcih2b2lkKiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAg
ICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQqPihyZWZjb24pOworICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNo
YXJlZEJ1ZmZlcio+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAK
QEAgLTQwOCwxMSArNDA4LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGxhc3RSZWFkID0g
cmVhZFJlc3VsdC52YWx1ZSgpOwogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0g
MDsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1
ZmZlci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBj
b250YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBT
aGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNo
IHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAg
ICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2Nr
QnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBv
bmU/Ci0gICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJl
Z2luKCktPnNlZ21lbnQ7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1p
bjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudCk7CisgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxz
aXplX3Q+KG51bVRvUmVhZCwgc2hhcmVkQnVmZmVyLT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudCk7CiAgICAgICAgICAgICAgICAgLy8gRnJvbSBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxv
Y2tTb3VyY2UgZG9jdW1lbnRhdGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgZm9y
IDY0LWJpdCBhcmNoaXRlY3R1cmVzLCB0aGlzIHN0cnVjdCBjb250YWlucyBtaXNhbGlnbmVkIGZ1
bmN0aW9uIHBvaW50ZXJzLgogICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIGxpbmstdGltZSBp
c3N1ZXMsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgY2xpZW50cyBmaWxsIENNQmxvY2tCdWZmZXJD
dXN0b21CbG9ja1NvdXJjZSdzIGZ1bmN0aW9uIHBvaW50ZXIgZmllbGRzCkBAIC00MjAsMTAgKzQx
NywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2Nr
U291cmNlIGFsbG9jYXRvcjsKICAgICAgICAgICAgICAgICBhbGxvY2F0b3IudmVyc2lvbiA9IDA7
CiAgICAgICAgICAgICAgICAgYWxsb2NhdG9yLkFsbG9jYXRlQmxvY2sgPSBudWxscHRyOwotICAg
ICAgICAgICAgICAgIGFsbG9jYXRvci5GcmVlQmxvY2sgPSBGcmVlRGF0YVNlZ21lbnQ7Ci0gICAg
ICAgICAgICAgICAgYWxsb2NhdG9yLnJlZkNvbiA9IGZpcnN0U2VnbWVudC5wdHIoKTsKLSAgICAg
ICAgICAgICAgICBmaXJzdFNlZ21lbnQtPnJlZigpOwotICAgICAgICAgICAgICAgIGF1dG8gZXJy
ID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRp
Y19jYXN0PHZvaWQqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihmaXJzdFNlZ21lbnQtPmRhdGEoKSkp
LCBmaXJzdFNlZ21lbnQtPnNpemUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQsIGNhblJlYWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICAg
ICAgYWxsb2NhdG9yLkZyZWVCbG9jayA9IEZyZWVTaGFyZWRCdWZmZXI7CisgICAgICAgICAgICAg
ICAgYWxsb2NhdG9yLnJlZkNvbiA9IHNoYXJlZEJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgICAg
ICBzaGFyZWRCdWZmZXItPnJlZigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpD
TUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZv
aWQqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRCdWZmZXItPmRhdGEoKSkpLCBzaGFyZWRC
dWZmZXItPnNpemUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQsIGNhblJlYWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGVy
ciAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CiAgICAgICAgICAgICAgICAgbGFzdFJlYWQg
PSBjYW5SZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApp
bmRleCA0MDI1ZTA2OTJkYzUuLmJhNjA1ZGNiMzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTczNyw3ICs3MzcsNyBAQCBEaWRDaGFuZ2VJdGVt
QnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1i
ZXJPZkJ5dGVzKQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVt
JiB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3Jp
dGluZ0NsaWVudC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkg
ewogICAgICAgICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0
T2ZMaW5lKHRlbXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzLi5i
MzFiYzVmZDRlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0
T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBl
YWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMu
CiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVp
cmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAv
LyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVm
ZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3
aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBj
b250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVk
IGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0
byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUg
YWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQK
ICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVu
dCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJk
NTUuLjJiNDQzZmJiZWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgdm9pZCByZWxlYXNlQ3VzdG9tRm9udERhdGEodm9pZCogZGF0YSkKIHsKLSAg
ICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNf
Y2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHN0YXRp
YyBjYWlyb191c2VyX2RhdGFfa2V5X3QgZnJlZVR5cGVGYWNlS2V5OwogCi1Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICA6IG1fZm9udEZhY2UoYWRvcHRSZWYoY2Fpcm9fZnRfZm9udF9mYWNlX2Ny
ZWF0ZV9mb3JfZnRfZmFjZShmcmVlVHlwZUZhY2UsIEZUX0xPQURfREVGQVVMVCkpKQogewogICAg
IGJ1ZmZlci5yZWYoKTsgLy8gVGhpcyBpcyBiYWxhbmNlZCBieSB0aGUgYnVmZmVyLT5kZXJlZigp
IGluIHJlbGVhc2VDdXN0b21Gb250RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKaW5kZXggOWFkMTliODc2YjI3Li5kZmJjNTgwZmI4ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC04MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogICAgIHJldHVybiAo
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJl
ZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckdTdHJlYW1l
cjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKIHsKICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0xOTksNyArMTk5LDcgQEAgUGxh
dGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9p
ZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CkBAIC00MjYsMTAg
KzQyNiwxMSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVy
RGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0
YVN0YXR1czo6VW5rbm93bjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hF
bmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGln
dW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgp
LCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2Rl
ciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRh
dGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFk
VHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4
IDY2ZjMzNzI4NDZhNC4uZDNlZjZhNDVjZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBm
aW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwg
fkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlw
ZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNl
dEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAK
QEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNh
bXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2Ft
cGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggY2JiNDlkMTczNjJmLi4zYTIwMTU3
ODAxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC0zNjY5LDcgKzM2NjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAg
ICAgIEdTVF9ERUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAl
cyBldmVudCBvZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRm
OCgpLmRhdGEoKSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAg
ICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+
c2l6ZSgpKTsKKyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMt
Pm1fcGxheWVyLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2Fk
Q29udGFpbmVyVHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCA1ZDg2ZmIxYWY0ODcuLjkzMDE5MDk5NDViNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9s
aWN5Q2hlY2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEw
OTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlDbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyLi4zNDliZmRjYWFk
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEg
QEAgcHVibGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVh
bCB+Q0RNUHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9m
IGNvbnNpc3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUn
cyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywK
ICAgICAvLyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciBy
ZXByZXNlbnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBO
b3RlIFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXgg
dGhhdCBzb21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMg
c2luY2UKICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0
IG1haW50YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRv
IHdvcmssIGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAg
ICAgLy8gaXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAg
ICBzdHJ1Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmlu
ZGV4IDJlZmEwNDM2MGU4OC4uYzM4OTE2ZTdkMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c1Nl
c3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlVGh1
bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVUaHVuZGVy
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRh
dGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4K
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5
aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtMjM3
LDcgKzIzNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiBy
ZXNwb25zZS5jb3B5KCk7CiB9CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRo
dW5kZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmEKICAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1
bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0
ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6
OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRp
ZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgT3BlbkNETUVycm9y
IGVycm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJT
eXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAog
ICAgICAgICBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQog
Y2xhc3MgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3Bv
bnNlTWVzc2FnZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNl
ZFJlc3BvbnNlTWVzc2FnZShjb25zdCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKICAgICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTM1NCw4ICszNTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KICAgICBib29sIGhhc1BheWxv
YWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BheWxvYWQpOyB9Ci0gICAg
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXls
b2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4m
IHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUo
KTsgfQorICAgIGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNv
bnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5
bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQogICAgIGJvb2wgaGFzVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZS5oYXNfdmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5
TWVzc2FnZVR5cGUgdHlwZSgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSk7IHJldHVybiBtX3R5cGUu
dmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNv
cmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgYWx0ZXJuYXRlKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PyBtX3R5cGUudmFsdWUoKSA6IGFsdGVybmF0ZTsgfQpAQCAtMzY0LDExICszNjQsMTEgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6
Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25h
bDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+IG1fdHlwZTsKIH07CiAKLXZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VN
ZXNzYWdlKGJ1ZmZlcik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3NhZ2UpIHsKQEAgLTQ3
NSw3ICs0NzUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVE
b25lQ2FsbGJhY2soKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
ZXJyb3JDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQog
ewogICAgIEdTVF9FUlJPUigiQ0RNIGVycm9yIik7CiAgICAgR1NUX01FTURVTVAoImVycm9yIGR1
bXAiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CkBAIC00ODgsNyArNDg4LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNs
ZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCiAgICAgTGljZW5zZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+
ZGF0YSgpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVu
ZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikg
ewogICAgICAgICBHU1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwor
ICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXRE
YXRhLnBheWxvYWQoKTsKICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwo
KSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxNSw3
ICs1MTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAgICAgYXV0byBnZW5lcmF0ZUNo
YWxsZW5nZSA9IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsK
ICAgICAgICAgaWYgKG1fc2Vzc2lvbklELmlzRW1wdHkoKSkgewogICAgICAgICAgICAgR1NUX0VS
Uk9SKCJjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24gaWQiKTsKICAgICAgICAgICAgIGNhbGxiYWNr
KGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7CkBAIC01NDUs
MTMgKzU0NSwxMyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnNlc3Npb25GYWls
dXJlKCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9u
SUQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAgR1NUX1RSQUNFKCJVcGRhdGluZyBzZXNzaW9uICVz
Iiwgc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxi
YWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3Vj
Y2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewor
ICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3Bv
bnNlTWVzc2FnZSkKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQog
ICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UocmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9u
c2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhh
c1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNz
YWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3Zl
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBH
U1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCks
IG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JRAogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQg
PT0gbV9zZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQo
W3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lv
bkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkK
QEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAg
ICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VN
ZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsK
ICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92
ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdv
dCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNp
emUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlh
S2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbgogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nl
c3Npb25JRCA9PSBzZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5h
cHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2Vzcywg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNo
YW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChz
dWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTY0OSw3ICs2NDksNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbgogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVz
c2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVz
cG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9h
ZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1l
c3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAg
ICAgICAgICAgICAgICBHU1RfREVCVUcoInNlc3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5n
dGggJXp1IiwgbV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlT
dGF0dXM6OlJlbGVhc2VkKSwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVk
ZWQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4
IGNkZDhkYTIxMTIzYy4uMTAyMGUxNTMyMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAt
OTMsOCArOTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
IAogcHJpdmF0ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFu
Y2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBw
dWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXIm
KTsKIAotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNl
bnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNl
c3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFs
OwpAQCAtMTQxLDE0ICsxNDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5j
ZVRodW5kZXIqIGNkbUluc3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZp
Y2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChib29sLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lv
bkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2so
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRh
dGVkQ2FsbGJhY2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFj
aygpOwotICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUm
KSBjb25zdDsKICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBA
QCBwcml2YXRlOgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25D
YWxsYmFja3MgbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5D
RE1TZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdl
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9v
bCBtX25lZWRzSW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVu
Z2VHZW5lcmF0ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNl
c3Npb25DaGFuZ2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0
Li5lYTg5MGY2N2RhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1
cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNl
ciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1h
cmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJ
bml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFy
c2VkUGF5bG9hZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92
ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4
NDVmNDA5Li5hYjI2NGYzNzc3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9D
QVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVn
X2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3Rl
Y3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENl
bmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAg
ICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0
RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVu
ZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIEluaXREYXRh
KGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkK
KyAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0g
ICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkp
CiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFy
c2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMo
KSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERh
dGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0
J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVt
SWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCpp
bml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5w
YXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXls
b2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0K
ICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsg
fQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYs
MTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFz
cyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4
IDcxOGI5YmQzMTVlYy4uNjkyOGE2M2U5NzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRT
ZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0
aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Q
REZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5Li42OGJjYzg4NDZh
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZE
b2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7
Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGlu
aXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVu
dCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRh
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5My4uZmEwMDA4MTE2MDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1
Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhlYWRlciB7
CiAgICAgRU9USGVhZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5k
ZXggMmNmYTg1NGMwMjI2Li4wZmE4ZjMwNmFkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVC
YXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFi
bGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihi
dWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcg
KzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxE
YXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7
CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250
cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7Cisg
ICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6Vmhl
YVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2
YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVh
KQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRp
Y2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRh
KQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRh
YmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBn
c3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVy
KTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1
dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxp
dGllcy5oCmluZGV4IGE2MjcxOWIxNzE5YS4uMGRiNGFmYWRiM2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGls
aXRpZXMuaApAQCAtNDMsNyArNDMsNyBAQCBlbnVtIERXUklURV9GT05UX1NUUkVUQ0g7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGlyZWN0
V3JpdGUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDQuLjA4
ZmM5ZjE5ZWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMg
QEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNs
YXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwog
c3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlw
ZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0Li43NzM1NzM5YjkzMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3ViCiAgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJl
Y3QyRDo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
dm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWFsbERhdGFSZWNlaXZl
ZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAppbmRleCA0ZjQ3MjU4NmI0
MjQuLmMyMzY1ZmQ3NDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgSW1hZ2VEZWNvZGVyRGlyZWN0MkQgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVy
IHsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXJEaXJlY3QyRCgpOwogCi0gICAgc3RhdGljIFJl
ZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rl
ckRpcmVjdDJEPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlRGVjb2RlckRpcmVjdDJEKCkpOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFS
ZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAg
ICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAppbmRleCAw
ZDg4MjBlOWYzZDYuLjJkOTcyNzBhNzM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZy
b20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVk
Li4zM2M5NWVjMzMzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCi1zdGF0aWMgdW5z
aWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJM
ZW5ndGgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQorc3RhdGljIHVuc2lnbmVk
IGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3Ro
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpCiB7CiAgICAgdW5z
aWduZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IHNoYXJlZEJ1ZmZlcikgewpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgbWF0Y2hlc0NVUlNpZ25h
dHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1SZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCitSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdl
c3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAgICAgY2hhciBj
b250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
LmgKaW5kZXggMzJkNGU2ZjhiOGZhLi45YzQwNTU3ODI0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIG51bGxw
dHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBk
YXRhIChwb3NzaWJseQogICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRhdGEgeWV0
KS4KLSAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwor
ICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVt
dWx0aXBseUFscGhhOyB9CiAKQEAgLTcwLDE2ICs3MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsK
ICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3Rh
dHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9y
ZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5j
b3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisg
ICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5
UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3Rh
dHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXRE
YXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsK
QEAgLTE5NSw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4g
aG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAg
ICBWZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hl
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwog
ICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3Bw
CmluZGV4IDdjNjAzZmQ4MzU4Yy4uMjZmODg2NDk2ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVh
ZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRl
cjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6
OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVy
LmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAg
ICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZh
bHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIo
Y29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZy
YW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVG
cmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVy
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAg
ICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiLi40OTZmNjlmODEyYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9B
VklGSW1hZ2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgQVZJRkltYWdl
UmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmKTsKICAgICB+QVZJRkltYWdlUmVhZGVy
KCk7CiAKLSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3Qg
aW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Jik7CisgICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIGRl
Y29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CiAgICAgc2l6ZV90IGltYWdl
Q291bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzI3NjlhNjkyNmVjLi5mNzQ1NWMxNDZjN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEJNUEltYWdl
RGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJNUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaAppbmRleCBjN2M3Y2E4MWZlYTYuLjY0ZGVkNmFiYmUyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2Fs
YWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFs
OwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2Fy
ZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxs
eSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRl
eCA0ODQ0ZjM4MGRjMTcuLmJkNDMwZThhOGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgogICAgIC8vIFJl
YWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20gbGl0dGxlIHRv
IG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZfdCBy
ZWFkVWludDE2KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZz
ZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAg
ICAgICAgdWludDE2X3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0
YSgpW29mZnNldF0sIDIpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMy
KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisgICAg
c3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgdWlu
dDMyX3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNl
dF0sIDQpOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgQk1QSW1hZ2VSZWFkZXIoU2Nh
bGFibGVJbWFnZURlY29kZXIqIHBhcmVudCwgc2l6ZV90IGRlY29kZWRBbmRIZWFkZXJPZmZzZXQs
IHNpemVfdCBpbWdEYXRhT2Zmc2V0LCBib29sIHVzZXNBbmRNYXNrKTsKIAogICAgIHZvaWQgc2V0
QnVmZmVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IGJ1
ZmZlcjsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
KSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBE
b2VzIHRoZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcg
b25seQogICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGlt
YWdlIHNpemUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVj
b2RlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAKICAg
ICAvLyBBbiBpbmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2VudGluZyBob3cgbXVjaCB3ZSd2ZSBh
bHJlYWR5IGRlY29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2RlZE9mZnNldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggNjAxMjAzNzRmOWM0Li40YTIx
MjU1YThjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3Bw
CkBAIC0zNyw3ICszNyw5IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlKCkgY29uc3QKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29u
c3RfY2FzdDx1aW50MzJfdCo+KG1fcGl4ZWxzUHRyKSksCiAgICAgICAgIENBSVJPX0ZPUk1BVF9B
UkdCMzIsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCksIHNpemUoKS53aWR0aCgpICog
c2l6ZW9mKHVpbnQzMl90KSkpOwogICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19z
dXJmYWNlRGF0YUtleTsKLSAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5n
ZXQoKSwgJnNfc3VyZmFjZURhdGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsg
fSk7CisgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1
cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeworICAgICAgICBz
dGF0aWNfY2FzdDxEYXRhU2VnbWVudCo+KGRhdGEpLT5kZXJlZigpOworICAgIH0pOwogCiAgICAg
cmV0dXJuIHN1cmZhY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IGU2YWJl
MGQ5NTQ0Yi4uYjllYzAxYjhhZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6
On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJ
RkltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQuLmM3NDcxOTk5OWI5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBm
aW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIHNpemVf
dCBmcmFtZUNvdW50KCkgY29uc3QgZmluYWw7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRp
b25Db3VudCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCA0MjE0NmUw
MzI5MzIuLjEwODJmZGYwZGZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAgLTIzNyw3ICsy
MzcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9Cisg
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAgICAgLy8gRklYTUU6IGhhbHRBdEZyYW1l
IHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9vbCBkZWNvZGUoV2ViQ29yZTo6R0lGSW1hZ2VEZWNv
ZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpOwogCkBAIC0zMTYsNiArMzE2LDYg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEdJRkZyYW1lQ29udGV4dD4g
PiBtX2ZyYW1lczsKICAgICBzaXplX3QgbV9jdXJyZW50RGVjb2RpbmdGcmFtZTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7
CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKaW5kZXggYzcxN2M0NWQzMDU3Li5jMDcxMzQ1YjhiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNv
ZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElD
T0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09J
bWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNy4u
MTBlZTliNGQyZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVu
YW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAg
dm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkgZmluYWw7CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBm
cmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZi4uOGZiOTIyMGVlMzdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgYm9vbCBp
c0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5m
bykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIg
bWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0
KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5k
YXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUp
LCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7
CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7Cisg
ICAgcmV0dXJuIGJ1ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtMzIw
LDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ieXRlc1RvU2tpcCA9IHN0ZDo6bWF4KG51
bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxvbmc+KDApKTsKICAgICB9CiAKLSAg
ICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29s
IG9ubHlTaXplKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIG9ubHlTaXplKQogICAgIHsKICAgICAgICAgbV9kZWNv
ZGluZ1NpemVPbmx5ID0gb25seVNpemU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAw
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiZWNmNjQ1MDI3N2UuLjIwNDczZjBlZWViYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBF
RzIwMDBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgwLDcgKzM4
MCw3IEBAIHZvaWQgSlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICB9CiAKICAgICBzdHJ1Y3QgUmVhZGVyIHsKLSAgICAg
ICAgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKKyAgICAgICAgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAg
ICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBjMTJjNDU5YTVhM2UuLjRjYmQzMjNkOWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNl
dCA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAg
Ym9vbCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAgICAgICAg
bV9kZWNvZGluZ1NpemVPbmx5ID0gc2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVjb2Rlciog
ZGVjb2RlciA9IHN0YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3Np
dmVfcHRyKG1fcG5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYx
YjA5ZGJjNzYuLmIxYmVjNTVlNzhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIFdFQlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29kZXIoQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlCiAKIFdFQlBJbWFnZURl
Y29kZXI6On5XRUJQSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIFdFQlBJbWFnZURl
Y29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6OmRlY29k
ZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gVGhpcyBj
YW4gYmUgZXhlY3V0ZWQgYm90aCBpbiB0aGUgbWFpbiB0aHJlYWQgKHdoZW4gbm90IHVzaW5nIGFz
eW5jIGRlY29kaW5nKSBvciBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgogICAgIC8vIFdoZW4gZXhl
Y3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxsIHRvIHNldERhdGEoKSBmcm9tIHRo
ZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAgICAgLy8gdGhlIFdlYlBEZW11eGVy
IGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSwgc28gd2UgbmVl
ZCB0byBwcm90ZWN0IHRoZSBkYXRhLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAgICAgV2ViUERhdGEg
aW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNpemUo
KSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciog
ZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmluZGV4IGFmMzY1ZTljZjljNy4uZGQyOGJjODhkZjVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lk
IHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsKICAg
ICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
c2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lQ291bnQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXgg
OTA5ZThlNzY4YWRiLi5iMjM3N2ZlMzQxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yMzYsMTQgKzIzNiwxNCBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAg
IGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZs
YXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRl
bUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAg
ICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAg
ICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVz
dWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAg
ICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBl
UlRGXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5y
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwg
a1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1f
Y2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJS
ZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1
ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUg
OiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjUxLDcgKzI1MSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6
dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3ku
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50
ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0
ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVh
ZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVy
UmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZC4uMTZiM2Q1
ZDQ0MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFz
dGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQogICAgIHJldHVybiAwOwog
fQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgcmV0dXJuIDA7CiB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAgQVNT
RVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXpl
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKIAog
ICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0byB3
ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNE
YXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxw
dHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0KIApA
QCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAg
ICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNldE9y
aWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwor
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVnaXN0
ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1fcGFz
dGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAg
ICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VSVCh0
eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRh
dGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dHlw
ZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHV0
aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAg
aWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JNSU1F
VHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRvIGlt
YWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKXV0
aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9hcmRJ
bWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlkZXJS
ZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNl
bnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAogICAg
IGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCkuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAoYXV0
byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0YXNo
IHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVyZSBm
b3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBTaW5j
ZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlvciB0
byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBjb250
YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQgdGhl
bSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzIsOCArNjcyLDggQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlw
ZV07CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkLi5iZmUzNmFiZDk3NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmll
d0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmll
d0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9u
c2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9w
bGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5Li4wZDI1NDk4Yjg2YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0y
NTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3Ip
CiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1h
Z2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1l
OnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1
dG9yZWxlYXNlKCk7CiB9CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxs
b3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJv
YXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZl
cnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJh
dGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0p
KSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5n
XTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbQppbmRleCAzNTNkMDA2YjkwY2IuLjg4ZDA0MDI1ODQzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDEx
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlw
ZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5j
bGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERh
dGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xp
ZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0
b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50
T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVz
c0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdl
dCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
b2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJv
YXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2Fy
ZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMuLmMzYjRkMmQ5NjIxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0y
NjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1UeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZv
cm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAg
ICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAt
Mjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0
ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBk
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1
dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQg
c2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1
c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDEsMTIgKzM0MSwxMiBAQCBp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6
Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07CiB9CiAKLWlu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghY2FuV3JpdGVQYXN0
ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9P
TCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBC
T09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFz
dGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTUwNCw4ICs1MDQsOCBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3Rl
Ym9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3JtVHlwZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVO
U0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAg
ICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3Jt
VHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxT
dHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA2ODEz
ZDVkYTdkY2IuLjc5NjU1NGY0Yzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNDMs
NyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsK
IGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBz
dHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1ZpZGVvU2VsZWN0
ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCi0gICAgdXNpbmcg
RmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZl
dGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAg
dmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSA9IDA7CiAgICAgdmly
dHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2Li40OThkNGVlMTM0MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmdlbmVyYXRlTW9ja0NvdW50ZXJTdHJpbmcoKQog
CiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxi
YWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewog
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNoYXJhY3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCmluZGV4IDIxMWY3NWVlNzNhZi4uOWMyYzc5N2I4MTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtNzAsNyArNzAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYp
OwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRpbWUm
LCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwotICAgIHZvaWQgZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4m
Jik7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CiAKICAgICB2b2lkIHBhdXNlKCk7
CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBmaW5pc2hlZEZsdXNoaW5nU2FtcGxlcygpOwogICAgIHZvaWQgY29tcGxldGVGZXRjaERh
dGEoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogCiAgICAgYm9vbCBtX2hhc0F1ZGlv
IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwpAQCAtMTE3LDggKzEx
Nyw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwog
CiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fZGF0YUxvY2spOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRs
ZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1h
dERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxMy4uODQ4NDEwMGVh
YzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigp
OwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBi
ZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVs
bGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQog
ICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsK
IAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNv
bXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7
CkBAIC00OTUsNyArNDkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3Rv
cFJlY29yZGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cik7CiAKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBt
X2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBw
ZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0g
ICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1OWU5YWEuLmNkZWU2
MDM1MjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVz
cGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmYWZkZmU4N2M4MzcuLjRiZWJjYjUwOThkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiBjbGFzcyBUaW1lcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzYuLmJhOGZkNGZmNGYxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFu
ZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNl
SGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50Ojpk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAg
IGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Yy4uYzRmMDU0ODVmMjg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7CiAgICAgU3RvcmFnZUFsbG93ZWQsCkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVz
b3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQg
bG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVk
LCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmlu
ZGV4IDFmZjA2NTIxNmZhNi4uMDA4ZTIyNmZmOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZv
cm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAg
ICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291
cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxU
YXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9
OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhl
c2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRs
ZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsK
ICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwog
ICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUs
MjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVm
ZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklY
TUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0
ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAg
ICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwg
YXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1
ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBp
ZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAg
ICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0g
ZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIo
dGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRv
ciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0
YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vh
a1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9
IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VU
b1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFu
Z2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRh
LT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAg
ICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlm
IChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsK
ICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2Uu
ZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAg
ICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZm
ZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0
ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVu
dExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsK
QEAgLTI0NCw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBm
aW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYg
KCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRv
KiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlm
ICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhG
aW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4
IDQwNDg4NWFlNjM3Ni4uY2U0YzI1NDVjZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJv
b2w7CkBAIC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3Jl
TlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVk
IGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxv
bmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjoo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNr
KT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZToo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291
cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJl
Y2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRh
dGE7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJl
cXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQw
MTBhOTgxMWIuLjhjODlkOTM4NjU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4
LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsNyArNjUyLDcgQEAgYm9vbCBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ug
c2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBy
ZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBM
b2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQpAQCAtOTE1LDEx
ICs5MTUsMTEgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMKICAgICByZXR1cm4gcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsK
IH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBy
ZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZCly
ZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGEKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAg
ICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWlu
UHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0
YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgp
LmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxT
ZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURl
bGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChb
ZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRh
VGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYzM2ZTFmODg3NjQzLi4zNDk0
NDU5MjU0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxv
YWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNw
b25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybERvd25s
b2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmgKaW5kZXggYTNhYTBjZjVmY2QyLi5jZGU0NDQ1Nzc1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0Jiwg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAg
IHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0
cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1
ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTguLjA5MGQwMzliYTQ1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFy
dEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBj
bGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUg
aGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVm
ZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAK
ICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAg
dm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0
IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1h
aW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7
CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OkVuZDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDVjMDhiY2M1ZWIzZS4uOWEx
YTFiYmQxOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3Mg
Q3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0
SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+
Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBmZDEzZmQzODEzMTQuLmM4MTM4ODZh
OGQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCkBAIC0yOCwxMiArMjgsMTIg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUuLmQ4
MmRkM2MxMGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGgg
ZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxs
YmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JD
YW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBD
dXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBB
Y3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXRE
b3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAK
LXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3du
bG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRleCB9OwpAQCAt
NzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxl
SWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmICht
X2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRs
ZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3du
bG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuaAppbmRleCA2YmQ4YTZiZmJhMzcuLjNjN2NkZDg4M2ViNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAg
LTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3RDbGll
bnQ7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5
bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogCiBjbGFzcyBDdXJsUmVxdWVzdCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDdXJsUmVxdWVzdD4sIHB1YmxpYyBDdXJsUmVxdWVzdFNj
aGVkdWxlckNsaWVudCwgcHVibGljIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewpAQCAtMTIy
LDkgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgQ1VSTCogc2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRl
OwogICAgIHNpemVfdCB3aWxsU2VuZERhdGEoY2hhciosIHNpemVfdCwgc2l6ZV90KTsKICAgICBz
aXplX3QgZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgc2l6ZV90IGRpZFJlY2VpdmVE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJv
bU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNv
ZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsVHJhbnNmZXIoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGZpbmFsaXplVHJhbnNmZXIoKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgog
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIC8vIERv
d25sb2FkCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNsb3NlRG93bmxvYWRG
aWxlKCk7CiAgICAgdm9pZCBjbGVhbnVwRG93bmxvYWRGaWxlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgK
aW5kZXggMDhjODZjN2Q0Njg0Li4zNDc5ODMyZjU3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0z
NCw3ICszNCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xh
c3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1
ZXN0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1
cmxSZXNwb25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVx
dWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxE
aWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0
ZUluZm8mJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmlu
ZGV4IDgxOGQ1YTk1ZTNlMS4uMzA1ZDRlNWM5ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKQEAgLTE0MiwxNSArMTQyLDE2IEBAIHZvaWQgQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3Qs
IEN1CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxE
aWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24o
KS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZN
b3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5o
CmluZGV4IDZkNTU4NjQ0NTJmZC4uZGFmMGE1OWE0ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxE
aWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsK
LSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxE
aWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAg
ICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYm
LCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aAppbmRleCBiYzRkYWFmYmYyMWEuLjFmNGExOTMxMzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggMmIzMTI4NTg3MDMwLi44M2U2NmQwODY1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJp
bmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUp
CiAKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJl
YWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyArK2Nv
dW50OyB9Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsK
IH07CkBAIC05NjYsNyArOTY2LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VG
aWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVy
biBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRl
bnQoU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VG
aWxlQ29udGVudChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEhHTE9CQUwg
bWVtT2JqID0gR2xvYmFsQWxsb2MoR1BUUiwgZGF0YS0+c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9i
aikgCkBAIC05NzgsMTUgKzk3OCwxNSBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFn
ZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVu
dHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQor
ICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAg
ICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0
YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVy
bCwgU3RyaW5nJiBmaWxlTmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAg
ICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTEwMzAsOCArMTAzMCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVu
dChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdy
aXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwog
ICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0
YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRl
bXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwor
ICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVk
ID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1w
RmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
SW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwpCiAgICAg
aWYgKCFjYWNoZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVu
dC5yZW5kZXJlcigpKSB8fCAhY2FjaGVkSW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VG
b3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CisgICAgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihl
bGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1h
Z2VCdWZmZXItPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yi4uODRmYTI5Y2UxZjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNyArNjMs
NyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0s
ICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1Rv
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlz
KQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5
cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
LCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7
CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtl
eXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQo
aWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9
CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlz
Rm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Np
b25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAyLDcg
KzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9v
bCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghc3VwcG9ydGVk
SW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIxMSwxMiArMjExLDEzIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVy
c0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRv
IGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmlu
ZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25z
ZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMo
U3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTI2OSw5ICsyNzAsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogICAgIGNhbGxiYWNrKGlu
aXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlm
aWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQp
OwogfQpAQCAtMjk3LDcgKzI5OCw3IEBAIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246Ok1vY2tDRE1J
bnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYgaW5zdGFuCiB7CiB9CiAK
LXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
bGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2Nr
Q0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkg
OiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQg
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGlj
ZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNz
VmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1G
YWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51
bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5z
aXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBT
dHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUo
KSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmco
ImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBmNWNkYTUwNWNmMmEu
LmQ5NmMxNTZlZTRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApA
QCAtNzcsOSArNzcsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gbV9zZXNzaW9ucy5jb250YWlucyhpZCk7IH0KICAgICB2
b2lkIHJlbW92ZVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJl
bW92ZShpZCk7IH0KLSAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBj
b25zdDsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKTsKKyAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
Jik7CisgICAgY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIGtleXNG
b3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkKTsKIAogcHJpdmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYs
NyArOTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVl
IH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9zdXBwb3J0c1Nlc3Npb25zIHsgdHJ1ZSB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5n
LCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAK
IGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNh
bml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0
cjxNb2NrQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQogICAgIHZvaWQg
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmlu
YWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFs
OwpAQCAtMTU0LDggKzE1NCw4IEBAIHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
KFdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggZmMxMjdiN2I2N2JlLi4wNTlmM2Ez
ODZiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRp
bmdEYXRhKCkKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckZp
bmlzaGVkQWRkaW5nRGF0YSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1vY2tDb250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VS
VChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVw
bGFjZW1lbnREYXRhLmRhdGEoKSwgbV9yZXBsYWNlbWVudERhdGEuc2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAppbmRleCA0MTFhMzAwOTQ3YjUuLjYz
NWFjODRiZTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFk
ZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVw
bGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNv
bnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5j
cHAKaW5kZXggNmQ0OGJkMDJkMWM5Li41Zjg1NDVlYmE1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAg
ICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBl
bmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0
QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1
ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAog
ewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6
OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmls
ZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZl
ci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWlu
c01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgp
LT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNv
bnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0
ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXIm
IGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAu
LmZkMmMxYWUyZjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIFNjcmlwdEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0QnVm
ZmVyKCkgPSBkZWZhdWx0OwogCi0gICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgIHsK
ICAgICB9CkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVm
ZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/
IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAg
ICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVy
KG1fYnVmZmVyID8gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHko
KSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1f
YnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVu
ZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNj
cmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBT
Y3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcAppbmRleCA0MzNkOWUxYTQ1YzIuLjgxNTgxMjhhNjMxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMzQs
NyArMzQsNiBAQAogI2luY2x1ZGUgIkZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVM
b2FkZXIuaCIKQEAgLTc4LDkgKzc3LDEzIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojps
b2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9u
dExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsK
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYm
ICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1f
ZGF0YSk7Ci0gICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhKQorICAgICAgICAgICAg
Y29udGlndW91c0RhdGEgPSBtX2RhdGEudGFrZUFzQ29udGlndW91cygpOworICAgICAgICBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNv
bnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEuYXBwZW5kKCpjb250aWd1b3VzRGF0
YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSkKICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBA
IC0xMTcsMTAgKzEyMCw3IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJv
ck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAg
bV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQotICAgIG1fZGF0YS0+YXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9
CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYS4uZGFiNzNmYzdiMWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3Qg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBG
b250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9
OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9k
YXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGViMjY2
YjZjMDdlNi4uMDk3NTQzZTFiM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogbmFtZXNwYWNlIFNlcnZpY2VXb3JrZXJGZXRjaCB7CiBjbGFzcyBDbGllbnQgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2xpZW50LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpN
YWluPiB7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFJlZjxGb3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzAuLjlhOGZiMzVjYTUzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0
b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lz
CiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBp
bmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9y
cyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxk
VXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5n
OjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNs
ZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGUwY2RjNzIzNGM1NC4uOWIx
MTJiOWRiMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcg
KzQ4LDYgQEAKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpA
QCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9u
c2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5l
dHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVu
dC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXpl
ZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5
cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8g
dGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRl
bnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsyMTcsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9u
c2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVX
aXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDog
QXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJyYXlCdWZmZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQodW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3
ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAg
ICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQg
PSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5y
ZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2
NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBC
dWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIp
Ci0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVu
KTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAg
ICAgfQogCiAgICAgaWYgKCFtX2Vycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CmluZGV4IDA0ODQ2MjZiMmU1ZC4uMmQxM2JlYzM5NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpAQCAtNDUsNyArNDYsNiBAQCBjbGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
T01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFz
cyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1
aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZWZlNDhiNGJmMGM5Li5lMTY5NTg0Y2MwMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMyIEBACisyMDIxLTEyLTA1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgU291cmNlQnVmZmVyUGFyc2VyIHNob3VsZCBiZSB1c2luZyBj
b250aWd1b3VzIHNoYXJlZCBidWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzg2NQorICAgICAgICByZGFyOi8vcHJvYmxlbS84NjA4NTI1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorCisyMDIxLTEy
LTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1l
IFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVm
ZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWly
IGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVu
dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAg
ICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHA6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNX
aW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRH
dGszLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGszLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1dpbi5jcHA6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAg
IHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZl
cmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFz
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpQbHVn
aW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwp
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpj
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDoK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6Cisg
ICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAg
ICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFy
Y2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5
V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6ZW5jb2RlVHlw
ZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50
cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChB
UEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJ
OjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRD
b2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJl
c2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdobGlnaHQ6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ry
b3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlcXVl
c3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpk
aWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6Cisg
ICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbik6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50V2l0aEltYWdl
OnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50Ojpn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJl
bGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNv
dXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXREYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSBjb25zdCk6
CisKIDIwMjEtMTItMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIENvcHkgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIgZXJyb3Igd2hlbiBmYWls
aW5nIGl0cyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTcz
MDY3ZTNkZDA1Li4zMWMyZDc2ZjJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQog
ICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsK
ICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTcz
ZDNkOWE2NGIuLjAyYzVjZDM3YWU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBA
IHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVBy
b3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1J
bnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAK
ICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmLi5kZTgyNzNiOWNmNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Np
b24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCku
cmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwg
aW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxl
dGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxp
emF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFi
bGUgewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVl
ZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1v
dmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVz
ZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0
YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsK
KyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAgICAgICAg
aWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRhdGFS
ZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNlc3Npb25z
RGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1CiAgICAg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0
dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmgKaW5kZXggOGE2MWY5ZDVmYWJjLi5mZTczMDk3MTMxZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtl
eVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNE
TU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFs
OworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQg
c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5
YWIzNTc1ZjRjM2IuLmY3Y2I2YTYzZWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgUmVtb3Rl
Q0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYm
IGZhY3RvcnksIHN0ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgpID0g
ZGVmYXVsdDsKIAotYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJlbW90ZUNE
TVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3Vw
cG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVt
b3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggNjky
NGU3NGUzZjUwLi4zYjY2Yzc3NTc4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVu
dCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAK
ICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Zh
Y3RvcnkuZ2V0KCk7IH0KIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CiAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggZTJjZDA1ZDdjYzc0Li5kZThmNmRmNTVhNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzLi4xNTQ2YmRmZGZkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExl
Z2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmNwcAppbmRleCBjNDVlNTI1NWQ2N2IuLjYxN2Y0NzY4OTU2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAt
OTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90
IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+
ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKaW5kZXgg
ZDEzZDI1ZjY1ZjAyLi41YjdhN2UyYTc0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAg
ICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3Qs
IHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIu
LmU4M2Y5MTQzZDIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBS
ZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGlt
ZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRh
dGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOworICAgICAgICBh
dXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
CmluZGV4IDUyY2M1ZGExMjFhMi4uNzFmZDAyMjI5YmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAt
NjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3Jl
ZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNy
ZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCAzZjM5ZWIzMmYxYWEuLmQ4OTIwZTk4
NzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpV
c2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRh
Iik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjEuLmUxMWJmNTYzMTkw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENv
bXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVp
bnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQp
IGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggZDYwMThmNjEzODNhLi5lMDQ5
ZTViMTJkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVu
Z2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0
b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGJhYzAyMmFiNDU0My4uNzk3NWQ0MWJhZDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAt
MjU2LDcgKzI1Niw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0
KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRh
dGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NS4uZWU1ZWIw
MDZhYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZS4uMzQ4Y2ZmYjllOGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC0zMiw3ICsz
Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6IHVpbnQ4
X3Q7CiB9CiAKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2Li5lN2Zi
MDUwYzAwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3QgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwogfTsKIAotc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3Qo
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
c3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBBU1NFUlQoZGF0YS5kZWxheWVkUmVwbHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5p
c051bGwoKSB8fCAhZGF0YS5lcnJvci5pc051bGwoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4g
cmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAg
ICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNh
dGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0
cmljcykpOwogCkBAIC0zMDYsMTAgKzMwNiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQog
ICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5j
aHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hl
KHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmVtcHR5
KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3Bh
cmFtZXRlcnM7CkBAIC03MzQsMTYgKzczNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgog
ICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxv
YWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgp
KSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhp
bXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJp
bmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZm
ZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJv
bm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERh
dGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5yZXNldCgpOwogCiAgICAgaWYg
KG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAog
ICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRh
dGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMw
NCBOb3QgTW9kaWZpZWQKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRl
eAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQogICAgICAgICBMT0FERVJf
UkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7
CkBAIC04NjksMTAgKzg2OSwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIGlmICht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0
aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4g
dGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9
IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkK
LSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkp
OworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNp
emUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJl
ZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVy
LT5zaXplKCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKLSAgICAgICAgbV9idWZmZXJl
ZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBl
bmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVl
ZGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTkwOSwxMSArOTA5LDExIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAg
IHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1f
YnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVk
RGF0YS5nZXQoKS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmICghbV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBm
ZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAg
ICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7CiAgICAgICAg
IH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJl
c291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU5LDE2ICsxMjU5
LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkK
ICAgICBBU1NFUlQobV9idWZmZXJlZERhdGEpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsK
IAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZlcmVk
RGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAg
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCkBAIC0xMjg5LDEyICsxMjg5LDEy
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAg
ICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2Fj
aGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAg
c2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1
ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFG
b3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1f
bmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSks
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6
IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBl
ZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJl
bnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpLCBb
bG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApp
bmRleCBkMjM0ZGFiNWJlZWEuLmNmMTBjZjBlNzFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKQEAgLTExNCw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkgZmluYWw7CkBAIC0xOTIsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZp
cmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9p
ZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94
RXh0ZW5zaW9ucygpOwpAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXJlZERhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRh
OwpAQCAtMjQwLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1
ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7
CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlG
b3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBt
X2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdD
b250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyLi4x
YWYxZTA4ZTNjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5p
c2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDE5ZWM4Y2ViOTJlMy4uYWIyOWEwYjFhYzg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCA0NTU3
ODJkNTRhMmUuLjE3ZDQ3OTA3YTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0
VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
cG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9
CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNr
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAx
YzFmZjE2NDcxMTEuLjg1ODA4ZTEyMWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3Bw
CmluZGV4IDcxZTBjZjZjNmRjNy4uODE5NjYzMDIwYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3NCwxMCArMTc0
LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAK
LXZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5
Q2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmgKaW5kZXggMWU3OGMyY2VmYTE1Li5lZTFiYzhiN2Q2Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC02Nyw3
ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXgg
OGVlMTEyYTlkZjgyLi43YTI2MjIxOWRlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNl
RXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KCFtX2RlY29kZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgp
KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAg
ICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9z
Y3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKaW5kZXggMThm
NTQ2OTFmMzdjLi40NGZjMDY4NWZhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAwNDc3NjgzNmY5OTkuLmRk
MzA1YWYyOTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ2FjaGU6OmNvbXBs
ZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5p
cXVlX3B0CiAgICAgaGFuZGxlcihXVEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiB9CiAgICAgCi1zdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCitzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VE
YXRhKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVz
dCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Np
b25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVL
ZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RW
YXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nl
c3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0
b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmlu
ZGV4IDE5OWYwY2ZiNzMyNS4uZWQwNGViY2EwYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVi
bGljOgogICAgIH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0
aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+Owog
ICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
R2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0
aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNv
bmRzPiBtYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4NSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rp
b248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNv
bnN0IERhdGFLZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2b2lk
IGR1bXBDb250ZW50c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEu
Ljc2MTA3OGRlYTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLUVudHJ5OjpFbnRyeShj
b25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKK0VudHJ5OjpF
bnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhl
YWRlcnMpCiAgICAgOiBtX2tleShrZXkpCiAgICAgLCBtX3RpbWVTdGFtcChXYWxsVGltZTo6bm93
KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9y
YWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBE
YXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAg
RGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXIt
PmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAg
ICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0g
eyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBt
X3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKIH0KQEAgLTE5NCw3ICsxOTYsNyBAQCB2
b2lkIEVudHJ5Ojppbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAg
IG1fYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zb3VyY2VTdG9yYWdl
UmVjb3JkLmJvZHkuZGF0YSgpLCBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5zaXplKCkpOwog
fQogCi1XZWJDb3JlOjpTaGFyZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAorV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2J1ZmZlcikKICAgICAgICAgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3Jk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmgKaW5kZXggOTY5MTVjMzgwMWMzLi45YzA0MjBkNDRhODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0NCw3
IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0
SGVhZGVycyk7CisgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyk7CiAgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyk7CiAgICAgZXhwbGljaXQgRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAgRW50
cnkoY29uc3QgRW50cnkmKTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFy
eWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRl
cnM7IH0KIAotICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisgICAg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVl
c3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVl
c3Q7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmLi40MWQ4
MjM1MDI0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAg
ICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkKLSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hlRW50cnkoV1RG
TW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50
cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNw
b25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZh
bGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTIwLDE3ICsxMjAsMTcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rp
b246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFt
aW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0g
MTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0g
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9u
c2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5
KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFs
UmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0
byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hl
IGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBp
c1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
KSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdp
bmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7
CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5h
bFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAg
ICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgK
aW5kZXggYzBlMWUxNGIyYWM0Li4xYjg0M2RiN2VjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2Vk
VG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NSw3ICs3NSw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwor
ICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Owog
ICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXggNWUyZTAy
ZTJmYmEwLi4zMTk5YmZmMzExYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSksIGJ1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
cmVmZXRjaENhY2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShjb25zdCBVUkwmIHVybCkK
IAogc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIAotdm9p
ZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVy
bCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25Q
cmVmZXRjaGVzKQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVm
ZXRjaEVudHJpZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFlYS4uNTJjMGIxMGZjYzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuaApAQCAtNDcsMTggKzQ3LDE4IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBFbnRyeSB7CiAg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgRW50cnkoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCi0gICAg
ICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQorICAgICAgICBSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpOyB9CiAKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
LSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVkaXJlY3RSZXF1ZXN0OwogICAgIH07CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHRha2UoY29uc3QgVVJMJik7Ci0gICAgdm9pZCBzdG9yZShj
b25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAgICAgdm9pZCBzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5oCmluZGV4IGI5YWIwZGVlYmI5Zi4uNDE2NjhhNWIxY2Q3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0
ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lv
blRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU3ODBkNmMx
YzNjZC4uMzA1MWYxNjljYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0Miw3ICs0NDIs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxl
dGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29y
a0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgV1RGRW1pdFNp
Z25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRh
dGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA2NzdjNjFkYTFhMTguLjNkYzY1
ZmY4MmM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVx
dWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZv
aWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6
Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAg
IGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6Q29t
cGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93bmxvYWQoKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRl
eCAxYzQyN2RkYjc4ZDYuLjQ1YmU1Y2UxODQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC02OCw3ICs2
OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJs
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVxdWVzdFN0YXR1cyA9IFJlcXVl
c3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKFdlYkNvcmU6
OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92
ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpDdXJsUmVx
dWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxE
aWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVz
dCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4Li4zM2Q0M2I3MjIzOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdl
MGQ4ZGJlMTkwMi4uMTdmMDhjMjhlYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IFNoYXJl
ZEJ1ZmZlci4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVj
ZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlci4KIC8vIFRvIGF2b2lkIGNvcHlpbmcgZnJvbSB0aGUgRGVjb2RlciwgdXNlIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdG8gcmVjZWl2ZSBhIERhdGFSZWZlcmVuY2UgaW5zdGVh
ZC4KIAogI3ByYWdtYSBvbmNlCkBAIC00MywxMSArNDMsMTIgQEAgcHVibGljOgogICAgICAgICA6
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsK
LSAgICB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKSkgeyB9
CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
KSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKSkgeyB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
eyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRl
eCBkM2QwZWM1ZTk3ODUuLjY3ZWM4ZTVlOTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjMsNyArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29k
ZXMgYSBTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEg
RGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0
YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1My4uYzAyNmY1
NDk1NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpj
b3B5QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MSw3ICs1
MSw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQo
ZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoewor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJv
dGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyYy4uMWI0ZmRmYWY2ODM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRW5jb2RlcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogI2lmIE9TKERBUldJTikKQEAgLTEyMCw3ICsxMjEsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25z
IHRvIHJldHVybiBSZWY8U2hhcmVkTWVtb3J5PiBhbmQgY3Jhc2ggb24gZmFpbHVyZS4KICAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6ZV90KTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9uKTsKICNpZiBVU0UoVU5JWF9E
T01BSU5fU09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gd3JhcE1hcCh2
b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNS4uMTEwZTBhZGRl
NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1t
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VE
YXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNm
RGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVs
ZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRh
dGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjguLjNjMWI1N2Q1YWEy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCwxMyArNTY0LDEyIEBAIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9u
dD4+OjpkZWNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKmluY2x1
ZGVzQ3JlYXRpb25EYXRhKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVj
b2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNv
cHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92
ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURh
dGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+
ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2Nh
bEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwog
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAg
ICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyLi42ZmEwMmE3YmMzZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAg
W3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAg
ICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggNjQ5ODJiYzQ4MTAyLi44NDNmZDQ3MzEzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIERFRklO
RV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5TGlzdDo6U2V0SW5saW5l
U3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9T
T1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVm
ZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5jb2RlciA8PCBpc051bGw7
CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBEbyBub3QgdXNlIHNoYXJl
ZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3Mg
ZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kg
dG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBv
cGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGluIHNtYWxsIGNodW5rcwog
ICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFy
ZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFy
Z2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpA
QCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVU
eXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIo
ZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0
YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsK
ICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdAogICAgIGlmIChoYXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwg
c3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwor
ICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7
CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2Rl
cjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAg
c3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRl
bnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShp
ZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAsNiArMzAxMCwzNCBAQCBzdGQ6Om9wdGlvbmFs
PFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkUAogfQogI2VuZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7Cisg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
K3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKwor
c3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
K30KKwogdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5n
ZXQoKSk7CkBAIC0zMTA3LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewog
ICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYo
KTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTE3LDcgKzMxNDUsNyBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAuLjZmYWMyYWExZWE3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2Vy
dGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBD
cmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNv
cjsKQEAgLTEzOCw3ICsxMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xh
c3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtNzUxLDYgKzc1MiwxNiBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXggY2Yy
ZTRkNWY5M2ZkLi5iNjA3YWNlODM4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERh
dGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhp
dFRlc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IGhpdFRlc3RS
ZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBp
bWFnZS0+ZGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAg
aW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVm
ZmVyKTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4
MjllLi42NzE3NThhMjgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9B
cmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3Vt
ZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Vs
ZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRh
JgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVjdGlvbi5oYXNDdXN0b21EYXRhKCk7CiAg
ICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwogICAgIGlmIChoYXNDdXN0b21EYXRhKQotICAg
ICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRh
KCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihz
ZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlID0gc2Vs
ZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgIGVuY29kZXIgPDwgY2FuU21hcnRSZXBsYWNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4
IGIzNGVjNzM2MzYzYy4uMTQ5MGM1MTFiZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25z
dAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkLi5mZTUwZTUzOGI4ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzksNiArMzks
NyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJ
bWFnZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhhc0VuY2xv
c2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9
IGhhc0VuY2xvc2luZ0ltYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IDdmYzA1NDU3ZTY0Yy4uNGUyNjZm
MzY3YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmlu
ZGV4IDU2MjM0MDE0NTlkYS4uMTExZjA5MjYzZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3Ry
dWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmlu
ZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICNlbmRpZgogCiAg
ICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYktpdDo6V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3QqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0K
aW5kZXggY2Y0NjIxNmNhMjVhLi5kZmVmM2UwNzBmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTM3
LDcgKzEzNyw3IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXpl
Rm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIFtmaWxlV3JhcHBlciByZWd1bGFyRmlsZUNv
bnRlbnRzXS5sZW5ndGg7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QK
IHsKICAgICBpZiAoIW1faGFzRW5jbG9zaW5nSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggYTcyZDBkMmM5MmQ3Li4zZmJkZjE0NzFlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAodm9p
ZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxp
Z2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRl
eHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGln
aGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hs
aWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0
OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3Vw
OnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpz
ZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxp
Z2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6Olll
cyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBw
ID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CkBAIC0y
MjIxLDcgKzIyMjEsNyBAQCAtICh2b2lkKV9yZXF1ZXN0UmVzb3VyY2U6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNEYQogewogICAgIF9wYWdlLT5y
ZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSwg
cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCksIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobmlsLCBuaWwsIGVycm9yLm5zRXJyb3IoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IGFjNGEwZjQz
NzAxNS4uYzgwMjljMTQwYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpT
dHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjLi44ZDNhODU2
NDYyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyCiAg
ICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcg
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTpm
aWxlTmFtZSB1dGk6dXRpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlv
blN0YXRlKQogICAgICAgICByZXR1cm47CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1f
d2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZm
ZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4MDJmZmFhNmQ2ZWQuLjY4MzM3M2Vh
ZTAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgaWYgKG5vRXJy
ICE9IEF1ZGlvQ29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZyZWdpc3RyYXRpb25z
KSB8fCAhcmVnaXN0cmF0aW9ucykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lz
dHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBy
ZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGF1
dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lz
dHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdpc3RyYXRp
b25EYXRhIH0pLCAwKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdp
c3RyYXRpb25EYXRhKSB9KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggM2Y2ZGQxZjI0MmU3Li5m
NTg5MTI0MTcwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaApAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNv
bnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGlt
YWdlKTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5T
U3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJp
bmcgKnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0
YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAq
ZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNp
YmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpw
YXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUs
IE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNT
dHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hp
dmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRP
cmlnaW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7
CiAgICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3Ry
aW5nICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERl
c3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjcuLjYyMzY3ZGM1YWQx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTQ0NDksNyArNDQ0OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZpbGVBbmRVUkxUeXBlcyhO
U1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TCiAgICAgbV9wcm9taXNl
ZFVSTCA9IHVybDsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpl
eHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2li
bGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBh
c3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViVmlld0lt
cGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJp
bmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3Ry
aW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5n
ICpvcmlnaW5JZGVudGlmaWVyKQogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtO
U1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmROYW1lXTsKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2Fy
ZFR5cGUoKSwgbmlsXSk7CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpm
aWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwg
dXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7
Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAg
ICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0
cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFG
b3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGko
KV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAg
ICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRE
YXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsK
ICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1l
c09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsK
LSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAg
IH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6
TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlLi5iNDYyZDhkYjVjYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24s
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZp
c2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDlhODE2ZmRiMzE4My4uYjRkYTZmZDY4OGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNpemU7
CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFzcyBT
ZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJbmRp
Y2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTcuLmUxMjY0Y2UyMWJhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTE2
OCw3ICsxNjgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAgIHJldHVybiBFeGNlcHRp
b25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVS
TFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKQEAgLTE4NywxMCArMTg3LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBt
X2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9z
eW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIp
OworICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNSwxNCArMjEyLDExIEBA
IGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Oldh
aXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0
cnVlOwotICAgIAotICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5
bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwogCisgICAgaWYgKGlzU3luYygp
KSB7CisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS5zaXplKCk7CisgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLnRha2VBc0NvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3Bv
bnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRy
OwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2No
ZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jl
c291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOS4uZjZmZjQ2ZWVhNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC00Myw3
ICs0Myw2IEBAIGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcgKzgzLDcgQEAgcHVibGljOgogICAg
IEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9y
bVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogCiAgICAgdm9pZCBzdG9wKCk7CkBAIC0xMTUsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2Li43Mjc5Zjg0NGNjMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcgQEAg
dHlwZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFkQnVm
ZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
PiYmKTsKICAgICB2b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAgdm9p
ZCBjbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3Rr
My5jcHAKaW5kZXggYzJiZjUxODNiMzBmLi41OTY2ZDU1NzRjMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBA
IHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1
ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFu
ZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBj
b21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVm
ZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9p
bnRlcm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSog
c2VsZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVhZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRh
Kj4odXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjViODFmYThmMjlkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUg
QEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsK
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFk
QnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSho
YW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+
IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29u
c3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRC
dWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAg
Z2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJ
VFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Li5hYjg3YzJhN2U4
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVk
byhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNl
bGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFy
Y2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0
cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZp
c2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNl
Y3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFi
b3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhNDExMjEzNWYyZWYuLmMz
NjNlOTU1ZTg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0
YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0
CiAgICAgbV9pbXBsLT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkws
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6
OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmlu
ZGV4IGVhZjdlMDc5YWU0MS4uMzIzZWYwMjkyYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNp
emUpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hp
dmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJj
aGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNo
aXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwCmluZGV4IGZhOTQwMjVlZDc0Ny4uYzI4ZmU2NWYwY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBA
IGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJl
bW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5z
aWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAg
IHJldHVybiB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5k
SW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUo
KSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRo
aXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4
IDBhZGRmODMzNTNiNi4uOGM0NTRlYjgzZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJh
dGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWly
ZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMm
KSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAg
dm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0
aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVkZWEy
MWU5OTVhLi5hMTNlNTE0NjBmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
LCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBj
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2Zh
Y3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZi
YTNiMTE2MWMuLjJjNzg1MWU0NDBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBw
cml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9p
ZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0
ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtl
eVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBi
YWQ0YzkwZDguLmM3NDBjMDQ1MDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApA
QCAtNDksNyArNDksNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAg
ICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxz
ZSwgRmFpbGVkKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAg
ICB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcgKzEw
OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShz
ZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1
c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29w
eT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6b3B0
aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3Nh
Z2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUo
KS5idWZmZXIoKSkKICAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1
ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdl
ZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFp
bGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZC4uNGU0Y2Qy
YzAwNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsgfQogICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsg
fQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NS4uNjI5MjY3OThjNWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29u
dGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhw
ZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXpl
QXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1
biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFW
Rjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2QzYS4uNDBkMzczNGY3YTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGIGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAg
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVh
dGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmll
ciwgbWltZVR5cGUpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2Vi
Q29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09w
dGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBz
ZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuY3BwCmluZGV4IDQxZDUzODgwMjNkMy4uMDgyYjMzNjZjOGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFn
ZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VE
ZWNvZGVySWRlbnRpZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZSB7IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQog
ICAgIEltYWdlRGVjb2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURl
Y29kZXJBVkY6OnN1cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OmNhbkRlY29kZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBb
dGhpc10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1h
Z2VEZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlci5oCmluZGV4IGMyMzc4MmI2NTA0ZS4uMzYxOGFmZDEyMDk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHByaXZhdGU6
Ci0gICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29y
ZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAg
ICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
V2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKIAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQ
cm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyLi5iNDA4OWZkMzU0OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwgY29u
c3QgV2ViQ29yZTo6CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVJlY29yZGVyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQg
fSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY29u
bmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVy
OjpGZXRjaERhdGEgeyB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgbWltZVR5cGUgPSBtaW1lVHlwZSgpXShhdXRvJiYgZGF0YSwgZG91YmxlIHRpbWVD
b2RlKSBtdXRhYmxlIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
ZGF0YS5zaXplKCkpCiAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGJ1ZmZlciksIG1pbWVUeXBlLCB0aW1lQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRl
eCAzMDNhNTRmNzZmMTguLjU3NmZkMWM2ZTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlh
U2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYm
KSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpN
ZWRpYVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNv
cmU6OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZi
NC4uMDM1M2FhYmY3ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXgg
YTA2MzUyMDQzMzViLi4xODBiMTExMWVjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCop
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVS
TCYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBh
Z2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcAppbmRleCA4ZDUyNGI1MjVjNmUuLjk0ZmVkMmU3ZTM2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTYyLDE4ICs2MiwxOSBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1
bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSBy
ZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVl
c3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihk
YXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgU2hhcmVkQnVmZmVyKj4oZGF0
YSktPmRlcmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3
aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1f
Y2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0
cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFy
ZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0
Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJl
ZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAg
ICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJ
OjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNv
bnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1
ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0
b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlN
RVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVh
Y2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAppbmRleCAzNmJkOTgwYjJmYWEuLjg2M2JkYWI2Mjg0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0
KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYs
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXgg
ZTUyNGQ4ZTFiMDE3Li5hNzg0ZWMzODhiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNl
KQogICAgIGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRh
dGEoKS0+c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9m
aWxlUGF0aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRk
OWQyY2MzZWIyLi4wMjI3MGE1M2FmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAt
MjgxLDkgKzI4MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJl
c291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNl
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFu
ZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVS
ZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciBy
ZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1Li4z
MTBmY2E3ODc1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UpKSB7
CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciA9IG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuYmVnaW5JbnRl
cmNlcHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVM
b2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElk
ZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGlj
eURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNw
ZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxl
IHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNw
b25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJ
ZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2Vw
dGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWlu
ZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKICAgICAg
ICAgICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29udGludWVSZXNwb25zZShpbnRlcmNl
cHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCku
c3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNF
X0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBj
cmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3Jr
IHByb2Nlc3MuIik7Ci0gICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAgICAg
IFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJs
ZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0byog
ZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBw
YWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9n
Z2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6
Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAppbmRleCA0MmRlNDYxNDE5NzcuLmE3ZjQ1Yzg0MDFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjA3LDcgKzIwNyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkg
ZmluYWwgeyB9CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xs
RGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VE
YXRhKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5hbDsK
ICAgICBib29sIHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRl
c3QoKSBjb25zdCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUxMS4uZDQ3ZjMyYjdkNDkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KQEAgLTI1NTIsNyArMjU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5
TW9kZUNoYW5nZWQoaW50KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dAogewogICAgIE5TRGF0YSAqcGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzLi41OGQ3MGEzOWEx
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3
ICs2MSw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7
CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNv
dXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZp
cnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkYzU2ZDJjNjZlZDguLjRkNTM3MzQ3MjcxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAg
LTQwMywxMCArNDAzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxT
dHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLQotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywg
bGVuZ3RoKTsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywgbGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDM3LDcgKzQzNCw3IEBAIHZvaWQgUGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9
IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJlYW1FcnJv
ciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOworICAgICAg
ICBtX21hbnVhbFN0cmVhbURhdGEucmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtOTI2LDExICs5MjMsMTEgQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIo
KQogICAgIG1fcGx1Z2luLT53aWxsRGV0YWNoUmVuZGVyZXIoKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlm
IChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJl
YW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRh
OworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLmdldCgpOwog
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDMsOSArMTI0MCw5IEBAIHZv
aWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKIAogICAgIC8vIERlbGl2ZXIg
dGhlIGRhdGEuCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAgICAgICBhdXRvIGJ1
ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkp
OwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlm
IChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2
ZWI4ZWRiNTUuLmY3NWFjODliZjM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGx1Z2luVmlld0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xMTUsNyArMTE2LDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAg
ICAgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYpOwogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2ludChjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBleGlzdGluZ1NlbGVjdGlv
bkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwpAQCAtMjUy
LDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
bWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVh
bFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFs
U3RyZWFtRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fbWFudWFsU3Ry
ZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVm
ZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOC4uYjA0Y2Nj
ZjExM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzEs
MTYgKzcxLDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2Ug
eyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VE
YXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVp
bGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1f
cmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2Rp
ZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikg
eworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1f
ZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgK
aW5kZXggYjM0N2NhZDJhYjVmLi42YjBhNDE3Y2YwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNo
TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTQ5LDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3Jt
RGF0YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2goKSBmaW5hbDsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9w
dGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5n
Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8
V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1f
cmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmlu
aXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMz
ZDFhLi43Y2ZjMDNhODVkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDIsNyArMTQy
LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHBy
ZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXgg
NTA2ZDlmNTQxMzhkLi5iMDU4NjE4OTFlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTY1LDcg
KzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNv
bnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBm
aW5hbDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
IGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6
OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmMuLjE0YTA4M2NhMjA3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg4LDggKzExODgsOCBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAg
ICAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1h
aW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxs
cHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7Cisg
ICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBt
YWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250
ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFS
ZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CmluZGV4IGY0MWE3MGVmNWJiNi4uNGE4YmVlNTdmZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
CiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGhhbmRsZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1Li4xZmY4M2UxMWJjMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRf
dCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJG
b3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qg
c2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlLi5lZDkzYWViN2VhOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtMzIsNyArMzIsNiBAQAog
I2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NSwxMyArNDQsMTIgQEAgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBt
X3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAgLCBtX2J1ZmZlciB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogewogfQogCiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2Up
CkBAIC02OSwxMyArNjcsMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5p
c2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdl
YlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVm
ZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQYWdlLT5kaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZlci0+dGFrZSgpLmdl
dCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkKIHsKLSAg
ICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliLi43YjgyMTUwZTkwMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw2ICsyOSw4IEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsNyArNDcsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQ
YXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTQsNyAr
NTYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0
IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJ
RDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5Li5lMWUw
ZTYxMTJhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsxNTAs
NyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBp
bWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1vcnlC
dWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2QyZDBj
YjEuLmQ4OGY0NGNmY2RlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcApAQCAtMzQwLDEwICszNDAsMTAgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3Vy
Y2UoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fY29yZUZy
YW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jdW1lbnRM
b2FkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRv
Y3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VE
YXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29k
aW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291
cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXpl
KCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGFkNjc3
YTNkMDZiLi5mNDZkMTk2ODcyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQ
YWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYs
IFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBz
aGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0
YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBz
aGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xNzUzLDcgKzE3
NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaAogCiAgICAgLy8gTGV0IHRoZSBJbmplY3Rl
ZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUg
dXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRv
IHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERh
dGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0
aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1
dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgq
dGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0
ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGF0ZSB0aGUgbG9hZCBpbiBXZWJDb3JlLgogICAg
IEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCgqbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkBAIC0zODYxLDcgKzM4NjEsNyBAQCB2b2lk
IFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFP
ZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNh
bGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBp
ZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29y
ZUZyYW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNl
RGF0YSgpOwpAQCAtMzg3Nyw3ICszODc3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAg
ICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJj
ZVVSTCkKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
ICAgICBpZiAoIWxvYWRlcikKQEAgLTM4OTIsNyArMzg5Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
cmVzb3VyCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQp
KSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwog
ICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCks
IHJlc291cmNlVVJMKTsKQEAgLTY5ODcsNyArNjk4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlm
aWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBpY29uRGF0YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBpY29uRGF0YSB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNWM0MmIzMmNkODkuLmQ5OTZkMTNjYmE1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjE2LDcg
KzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0
aW9uOwpAQCAtMTM5Nyw3ICsxMzk3LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAg
IHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKTsKICNlbmRpZgogCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCBwcml2YXRlOgogCiAgICAgU3Ry
aW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6
OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5v
dEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjOTVjMzg0NjM5MjIuLjg1ZTY1MTg2OTJl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KQEAgLTMyMTcsNyArMzIxNyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlv
bk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJ
bWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJ
bWFnZSgpOwogICAgICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3Vy
Y2VCdWZmZXIoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBT
aGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC00NjgzLDcgKzQ2ODMsNyBAQCB2
b2lkIFdlYlBhZ2U6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZSwgdXRp
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlBhZ2U6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIWJ1ZmZlci5pc0VtcHR5KCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCmluZGV4IDYwZjg0YTQ1YzM4MC4uM2NiNTA2MjRiZjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcg
KzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlv
bigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGZy
YW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsK
ICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
KmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2lu
LmNwcAppbmRleCBkM2QzOGNhYzQxMjEuLjM3ZjI3ZTk1MmQwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZl
cihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCA2YjlkZmRjNjYxZjIuLmE0ZDkzODZlMzcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICBy
ZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZl
ciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTItMDkgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdl
YkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IDFmNTU4NGZhMzg3ZC4u
YTI1NTYwYTEwYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwog
ICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21w
bGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwg
eyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5h
bCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCBkMDg0NDljMTQ5MjkuLjNjNmY1NzVkNmZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVm
ZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIERPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJl
cHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJl
c2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmll
dy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2Rlcjpd
KToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJj
ZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZi4uNjM1NWI2ZjkwMzE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNp
b25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246
KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3Ni4uOTU5ZDc0OGI1NmJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAg
IHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJD
b3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOS4uYWEyY2M5ODE0NzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgUmVmUHRyPFdl
YkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwog
ICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAg
ICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAg
ICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgpKQpAQCAtMjA5NCw3
ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9y
SWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAgICAgICAgfQogCiAgICAgICAg
IG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAg
ICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+
c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdJ
Y29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIxMzEsNyBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0
TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8v
ICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5p
c2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5k
ZXggMjRiNjk5NzA2ZGYwLi41MjdmYTU1MjE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjYuLjM5ODY4
NTlmNzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTU0LDcgKzE1NCw3
IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJv
YXJkVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxLi44M2U4NTkxNDM0NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2MCwx
MCArNDYwLDEwIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0
ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRl
KF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVz
b3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VE
YXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2Li4zOGQ3ZTUzMmQ2ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAt
IChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlp
bmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNl
ZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBh
cnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19w
cml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7
CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpw
YXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCA4MzhlNDEzMzgxYTguLjI4ZDg3NTkyOWNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDggKzM1NDAsOCBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhp
dFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRP
YmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsK
KyAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5T
KFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0
KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0Vt
cHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tCmluZGV4IGIwOGMxZDIxY2Y5Zi4uMTJkNTljMGExNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9p
ZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3Vy
Y2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0
YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9
IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWws
ICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0g
ICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRh
KCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJj
ZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAg
ICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJh
bWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291
cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIg
ZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlw
ZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2Vi
UmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0Rh
dGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4ICszNjcsOCBAQCAtIChOU1N0cmluZyAq
KV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICBlbmNv
ZGluZyA9IFBBTDo6V2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCi0gICAgU2hhcmVkQnVm
ZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6
IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3By
aXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gZW5jb2Rp
bmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVE
YXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDU4NDBkZTExNjc3MS4uOGNmMzFmMjFlNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRC
dWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisg
ICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAg
ICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAg
ICAqIFdlYktpdERMTC5jcHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAq
IFdlYlJlc291cmNlLmg6CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAg
IHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBNZW1vcnlT
dHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAg
ICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFt
Lmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRh
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAg
ICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNv
bT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0v
dGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNS4uMDg5N2M3YzA1NDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNV
TFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0p
CiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAg
IHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3Vz
KCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJl
c2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiBy
ZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlLi41
NThlMTNjN2YxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU1OSw3
ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJM
UmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6
bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBl
LCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQor
dm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJh
c2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWlt
ZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01
ODUsMjEgKzU4NSwyMSBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZy
YW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUs
IF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8g
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VF
REVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CiAgICAgICAgIGlmICgh
c3RhdC5jYlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewogICAgICAgICAg
ICAgVmVjdG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7CiAgICAgICAg
ICAgICBVTE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRs
ZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1
ZmZlcgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdv
dWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAg
ICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAg
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxp
bnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFw
cGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUo
KSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZm
ZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2Fk
RGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJs
LCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiLi5mYTljMzgxY2M1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1l
bnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5
NSw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2Fk
SFRNTFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RS
IHVucmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNl
VVJMLCBCU1RSIGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5n
TmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9p
ZCBzZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBh
Z2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0
IG1heGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAg
dm9pZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NC4uMjc0YjdkMmQ2Y2YyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2
b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1v
dmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQot
V0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZl
cihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50
IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhOGU4NzFiMGFmMWEu
LmViN2VlNGMxZjEyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3Cisg
ICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hh
cmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxp
c3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJD
b3JlU3R1YnMuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICBy
ZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wOSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFk
ICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVz
IGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggODU4M2IyOWFkOTkw
Li5iODQ3ZDNhODI2YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7
CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZl
clRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRl
c3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xh
c3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggZDIzZjdlMWU3MjllLi5lYTJh
ZTJjN2U4YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9E
aXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBURVNUKERpc3BsYXlM
aXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxC
dWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNp
dHkgfTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0
ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0
IGZpbmFsCisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVt
T3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBm
aW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7
CiAgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChzdGQ6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5
TGlzdEl0ZW0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyLi4xN2NlODc5NDFiYTggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00MSw4MCArNDEsNzUgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmlu
Zygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAot
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgRVhQRUNUX1RS
VUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
PT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKK1RFU1RfRihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQ
YXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOworICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlci0+aXNDb250aWd1b3VzKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0eSgp
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9O
T1RfTlVMTChidWZmZXIpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXIt
PmNvcHkoKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKKyAgICBh
dXRvIGNvcHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCks
IDBVKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwot
ICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBj
b3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4
aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsK
LSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZm
ZXItPmRhdGEoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVy
LmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpW3N0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
ImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+
ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwotfQotCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogewogICAgIGNoYXIg
dGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwog
ICAgIGNoYXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4o
dGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4o
dGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4o
dGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJl
ZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBl
bmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVz
dERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJh
eUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hh
ciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNT
RVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwg
YXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKIH0K
IAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdt
ZW50cykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXJMYXJnZVNlZ21lbnRzKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAw
MCwgJ2EnKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9
IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4
NDAwMFUgKyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAg
ICAgaW50IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytp
KSB7CkBAIC0xMzEsNyArMTI2LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0
ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjb3B5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQog
ewogICAgIGNoYXIgdGVzdERhdGFbXSA9ICJIYWJpdGFzc2UgaW50ZWdlciBlcm9zIHRpbmNpZHVu
dCBhIHNjZWxlcmlzcXVlISBFbmltIGVsaXQ/IFNjZWxlcmlzcXVlIG1hZ25pcywiCiAgICAgImV0
IG1vbnRlcyB1bHRyaWNlcyB0cmlzdGlxdWUgYSEgUGlkLiBWZWxpdCB0dXJwaXMsIGRhcGlidXMg
aW50ZWdlciByaG9uY3VzIHNvY2lpcyBhbWV0IGZhY2lsaXNpcywiCkBAIC0xNTEsMTcgKzE0Niw1
MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3Np
bSBtYXNzYSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5h
dGlidXMgcHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBB
YywgYXJjdSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBs
ZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjEodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWls
ZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3Qg
Y29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNv
cHkoKS4KLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0g
ICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgw
LCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXpl
KCkpKTsKLSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9F
UShsZW5ndGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwg
YnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xv
bmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5z
aXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWls
ZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0
byBidWZmZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1Rf
RVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRh
MFtdID0gIkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRh
MCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5
ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkp
OyAvLyBXZSBoYXZlIGRpZmZlcmVudCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCisgICAgRVhQRUNU
X0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlk
ZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0
eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5
KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0
aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJM
ZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTczLDcwICsyMDQsODAgQEAgc3RhdGlj
IHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVu
Z3RoLCBjb25zdCBjaGFyKgogICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3RlZFtp
XSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMy
ID0geydlJywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywg
J2onLCAnaycsICdsJ307Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAg
IFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczMgPSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOwor
ICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0g
YnVmZmVyLT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBo
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNv
bWVEYXRhKDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBh
dXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAg
IGF1dG8gZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0
byBsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRh
KCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2gu
c2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAi
Z2giKTsKICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hl
Y2tCdWZmZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVm
ZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZn
aGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIo
Z2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRh
dGEoKSwgZ2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgp
LCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBn
aDIuZGF0YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCks
ICJsIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCitURVNUX0Yo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VC
dWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVu
dHMpCi0gICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAg
ICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29u
dGVudCkpOworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRv
IGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8g
YnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVY
UEVDVF9FUShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFw
cGVuZChWZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAn
YicsICdjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30s
IHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycs
ICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgp
LCBtYWtlQnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rv
cjx1aW50OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWls
ZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScg
fSwgeyAnYicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdi
JyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsg
eyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSku
Z2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4
U3RyaW5nKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykK
IHsKICAgICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZSh0MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsK
ICAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9F
UShyZXN1bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5y
ZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZm
ZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJl
YWQpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAgICAgY29u
c3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAot
ICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1
dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAzKTsKICAg
ICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9FUShTdHJp
bmcoZGF0YS5kYXRhKCksIDMpLCAiIGlzIik7CkBAIC0yNDksMTYgKzI5MCwxNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIp
OworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwog
fQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMjY2LDcgKzMwOCw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCByZWFkKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4KIGNvbnN0
ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSApIHsgcmV0dXJuIE47IH0KIAot
c3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9v
bCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0
ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9y
ID0gZmFsc2UpCiB7CiAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1
ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5kYXRhKCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5r
UmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2Vw
YXJhdG9yKTsKQEAgLTI5OSw3ICszNDEsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0RhdGFJblJhbmdl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbAogCiBU
RVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogewot
ICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1
dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAg
ICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwg
Ilx4MTBceDExXHgxMiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gb3V0OwogICAgICAgICBF
WFBFQ1RfVFJVRShjaHVua1JlYWRlci5uZXh0Q2h1bmsob3V0KSk7CkBAIC0zMTMsMjIgKzM1NSwy
NCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9y
KQogICAgIHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2
OyArK2kpCiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihkYXRhLCAyNTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAg
Y2hhciBjID0gaTsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmYywgMSk7CiAgICAgfQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVU
ZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAgICBTdHJp
bmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFs
bGJhY2soKTsKQEAgLTM1OCwyMiArNDAyLDIzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlclRlc3QsIHBlZWtEYXRhKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxk
ZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVY
UEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAgIGNvbnN0
IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhp
c3RvcnkgdGhlcmUgaXMuIjsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFy
ZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAg
ICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10g
PSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0
aGVyZSAiLCAicy4iIH07CiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiaSIpOwpAQCAtNDA2LDE3ICs0NTEsMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQp
OyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsK
LSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7
Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDEpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNp
emUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9
CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3Ip
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAKaW5kZXggOWI4YjEzYTc1ZDUyLi5kMDM0MWE4MWRlZGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lk
IFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKQEAgLTQ1
LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRv
d24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQogewogICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAppbmRleCA2NDAxMTliZGU2
ZmMuLmEzOTJhMDUxOTQ3NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKICAgICB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDdhMzIw
N2Y5NWM2Mi4uODU4MjhmMDM5MjI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZp
ZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlz
cGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBm
aW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzLi5jM2I1ZDNlOGQ3YzAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlz
RXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogICAg
IH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQorVEVT
VF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5
c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAK
ICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxv
IiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0Rh
dGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxv
RGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRh
IF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAg
IE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3Ro
OjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0
YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
d29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29y
bGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02NiwzNSArNjcsMzUgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgIH0KIH0KIAot
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQorVEVT
VF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVu
dCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Imhl
bGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxs
b0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgo
Y29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAg
ICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0
aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERh
dGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0
YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3Js
ZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVu
Z3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3Vu
dCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAg
ICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4
cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
RGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9u
ID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+
c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
YnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNp
emUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1
aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9U
UlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3Rl
ZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1l
bnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERh
dGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUg
PSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBF
Q1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyLi41YmU2NjU5NDYx
MzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0
IGNoYXIqKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNv
dXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447121</attachid>
            <date>2021-12-14 03:30:09 -0800</date>
            <delta_ts>2021-12-14 15:06:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233923-20211214223006.patch</filename>
            <type>text/plain</type>
            <size>5608</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg3M2U0NzUwOWE2Njdl
MGI3NTFkMTBkM2MxOWYxMmM2NTg0ODNhMS4uOTZjZDJjOWM5MTZkZGU3OWE0OGQ1ZjM0ZTRjNmU0
NzUzMDAzY2M2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEyLTA3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBQcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIgbm90IG1vZGlmeSB0aGUgU2hhcmVkQnVmZmVyIG9uY2UgcmV0dXJuZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzkyMwor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84NjE0OTg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgQVBJIHRlc3RzLgor
CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNl
Rm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgor
CiAyMDIxLTEyLTA1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgU291cmNlQnVmZmVyUGFyc2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAppbmRleCBlOGJlMWIyMTM3NmEwNTg2OWQwZTYyNWNkODRiYmVhMmM4ZWEyOGEyLi45NmQ4OTgy
ZTkzNTAzNDc2OTZmYzk2OWQ1ODVhYjcwNzVkZTAyMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgotICAg
IHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZl
cnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29u
dmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dv
cmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29u
dmVydGVyPiBtX2NvbnZlcnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbQppbmRleCAwYWI1NDM0YTBkYmU5MWVlODc2NTI1ODFlMmIzMzVl
NWUxZjBhYjRmLi40ODc1NmEzM2I1ODcyYjQ0YjJmMGJhMDg0MjQxZjg2Y2ZhZWJjYWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFs
RGF0YS5lbXB0eSgpOworICAgIG1fb3JpZ2luYWxEYXRhLnJlc2V0KCk7CiAgICAgcmVzb3VyY2VM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2Nv
bnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNl
KCkgfTsKIApAQCAtMjI0LDEwICsyMjQsMTAgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpw
cm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKICAg
ICBtX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9y
UHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9y
UHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1f
Y29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQoKS5n
ZXQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEuY29weSgpKTsKIH0K
IAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7
CkBAIC0yMzUsNyArMjM1LDYgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdM
b2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9h
ZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9u
c2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZl
cnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAg
ICAsIG1fb3JpZ2luYWxEYXRhIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQog
ICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBv
bGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNp
ZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggYTRlMDg3NTA5ZTU5NGQx
ODcxMTI1ZDEzYzk5NTNjNGU0Mzk0OTM3Zi4uMmFiYWNmM2VmNDk5MzI0ZWQwNWIxNzI0NTQwMGU3
MzE3ZDcxODAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5jcHAKQEAgLTgxLDExICs4MSw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFp
blJlc291cmNlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb3ZpZGVyLT5wcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcigqdGhpcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvIGJ1ZmZlcikgewotICAgICAgICBpZiAoYnVmZmVy
KQotICAgICAgICAgICAgYXBwZW5kRnJvbUJ1ZmZlcigqYnVmZmVyKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgZGlkRmFpbFVwZGF0aW5nKCk7CisgICAgcHJvdmlkZXItPnByb3ZpZGVNYWlu
UmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgYXBwZW5kRnJvbUJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCmluZGV4IGI5ODZlZTQwZDE5NzUx
NzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EuLmFiNzAwNGJlOTMxZjAwM2E2OTZmODg5NzZiNmI1
NDBmODIyNGY3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3
Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29u
dmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKSA9IDA7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>