<?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>183523</bug_id>
          
          <creation_ts>2018-03-09 13:09:01 -0800</creation_ts>
          <short_desc>ClassExprNode evaluation of computed property names differs observably from spec and other implementations</short_desc>
          <delta_ts>2018-03-14 13:01:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>caitp</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405277</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-03-09 13:09:01 -0800</bug_when>
    <thetext>https://jsfiddle.net/kposmd21/ is an example reproduction.

WebKit produces:

```
name(2)
name(1)
name(3)
name1 called
name2 called
name3 called
```

while Chrome and FireFox produce:

```
name(1)
name(2)
name(3)
name1 called
name2 called
name3 called
```

----

The spec indicates that Chrome and FF&apos;s behaviour is correct here.

This becomes even more potentially weird with the introduction of class fields, in https://bugs.webkit.org/show_bug.cgi?id=174212 --- class elements should be evaluated in order, regardless of whether or not they are methods or class fields, and regardless of whether or not they are static or belong on the instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405803</commentid>
    <comment_count>1</comment_count>
      <attachid>335609</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-03-12 11:25:32 -0700</bug_when>
    <thetext>Created attachment 335609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405814</commentid>
    <comment_count>2</comment_count>
      <attachid>335609</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-03-12 11:49:44 -0700</bug_when>
    <thetext>Comment on attachment 335609
Patch

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

r=me with some nits. 

Also, does this fix any test262 tests? I&apos;m cool with doing some gardening after this patch lands too.

&gt; Source/JavaScriptCore/parser/Nodes.h:728
&gt; +        unsigned m_classElementTag: 2;

Can you add:

static_assert(1 &lt;&lt; 2 &gt; ClassElementTag::LastTag, &quot;ClassElementTag shouldn&apos;t use more than two bits&quot;); 

You&apos;ll also need to add a LastTag value to the ClassElementTag enum too.

&gt; Source/JavaScriptCore/parser/Nodes.h:742
&gt; +        RegisterID* emitBytecode(BytecodeGenerator&amp; generator, RegisterID* dst = 0) override

Nit: This should be: RegisterID* dst = nullptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405846</commentid>
    <comment_count>3</comment_count>
      <attachid>335609</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-12 12:39:01 -0700</bug_when>
    <thetext>Comment on attachment 335609
Patch

Attachment 335609 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/6918355

New failing tests:
stress/non-constructors.js.dfg-maximal-flush-validate-no-cjit
stress/non-constructors.js.ftl-no-cjit-small-pool
stress/non-constructors.js.dfg-eager
stress/non-constructors.js.ftl-eager-no-cjit-b3o1
stress/non-constructors.js.default
stress/non-constructors.js.ftl-eager
stress/non-constructors.js.no-cjit-validate-phases
stress/non-constructors.js.no-ftl
stress/non-constructors.js.no-cjit-collect-continuously
stress/non-constructors.js.ftl-no-cjit-no-inline-validate
stress/non-constructors.js.dfg-eager-no-cjit-validate
stress/non-constructors.js.ftl-no-cjit-b3o1
stress/non-constructors.js.no-llint
stress/non-constructors.js.ftl-no-cjit-validate-sampling-profiler
stress/non-constructors.js.ftl-eager-no-cjit
stress/non-constructors.js.ftl-no-cjit-no-put-stack-validate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405948</commentid>
    <comment_count>4</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-03-12 15:54:57 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #2)
&gt; Comment on attachment 335609 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335609&amp;action=review
&gt; 
&gt; r=me with some nits. 
&gt; 
&gt; Also, does this fix any test262 tests? I&apos;m cool with doing some gardening
&gt; after this patch lands too.

After fixing the regression in JSTests/stress/non-constructors.js, I&apos;m seeing the following test262 failures. I&apos;ve also run the command on r229534 with the same failures. No test262 coverage affected by the change (but I intend to submit a new test to get some coverage for it).

```
run-jsc-stress-tests JSTests/test262.yaml 
Using the following jsc path: /Users/caitp/git/WebKit/WebKitBuild/Release/jsc


test262.yaml/test262/test/intl402/Collator/ignore-invalid-unicode-ext-values.js.default-strict: Exception: Test262Error: Locale en is affected by key co; value standard. Expected SameValue(«en», «en-CA») to be true
test262.yaml/test262/test/intl402/Collator/ignore-invalid-unicode-ext-values.js.default: Exception: Test262Error: Locale en is affected by key co; value standard. Expected SameValue(«en», «en-CA») to be true
test262.yaml/test262/test/intl402/Collator/ignore-invalid-unicode-ext-values.js.default-strict: ERROR: Unexpected exit code: 3
test262.yaml/test262/test/intl402/Collator/ignore-invalid-unicode-ext-values.js.default: ERROR: Unexpected exit code: 3
test262.yaml/test262/test/language/statements/for-await-of/async-func-decl-dstr-obj-id-put-unresolvable-no-strict.js.default: Error: ReferenceError: Can&apos;t find variable: iterCount
test262.yaml/test262/test/language/statements/for-await-of/async-func-decl-dstr-obj-prop-put-unresolvable-no-strict.js.default: Error: ReferenceError: Can&apos;t find variable: iterCount
test262.yaml/test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js.default: Error: Promise incorrectly fulfilled.
test262.yaml/test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js.default-strict: Error: Promise incorrectly fulfilled.
test262.yaml/test262/test/language/statements/for-await-of/async-gen-decl-dstr-obj-id-put-unresolvable-no-strict.js.default: Error: ReferenceError: Can&apos;t find variable: iterCount
test262.yaml/test262/test/language/statements/for-await-of/async-gen-decl-dstr-obj-prop-put-unresolvable-no-strict.js.default: Error: ReferenceError: Can&apos;t find variable: iterCount
56378/56378 (failed 2)
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405949</commentid>
    <comment_count>5</comment_count>
      <attachid>335656</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-03-12 15:58:38 -0700</bug_when>
    <thetext>Created attachment 335656
Patch

fix JSTests/stress/non-constructors.js regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406201</commentid>
    <comment_count>6</comment_count>
      <attachid>335717</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-03-13 12:55:36 -0700</bug_when>
    <thetext>Created attachment 335717
Patch

rebased for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406306</commentid>
    <comment_count>7</comment_count>
      <attachid>335717</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-13 17:23:29 -0700</bug_when>
    <thetext>Comment on attachment 335717
Patch

Rejecting attachment 335717 from review queue.

caitp@igalia.com does not have reviewer permissions according to https://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406456</commentid>
    <comment_count>8</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-03-14 12:15:16 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #7)
&gt; Comment on attachment 335717 [details]
&gt; Patch
&gt; 
&gt; Rejecting attachment 335717 [details] from review queue.
&gt; 
&gt; caitp@igalia.com does not have reviewer permissions according to
&gt; https://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/
&gt; contributors.json.
&gt; 
&gt; - If you do not have reviewer rights please read
&gt; http://webkit.org/coding/contributing.html for instructions on how to use
&gt; bugzilla flags.
&gt; 
&gt; - If you have reviewer rights please correct the error in
&gt; Tools/Scripts/webkitpy/common/config/contributors.json by adding yourself to
&gt; the file (no review needed).  The commit-queue restarts itself every 2
&gt; hours.  After restart the commit-queue will correctly respect your reviewer
&gt; rights.

It seems like very time I get back to work on a WebKit patch, I forget the bugzilla workflow entirely D&apos;: Shouldn&apos;t flipping the CQ+ bit have done the job here, or do I need to manually update the changelog OOPS or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406465</commentid>
    <comment_count>9</comment_count>
      <attachid>335788</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-03-14 12:40:20 -0700</bug_when>
    <thetext>Created attachment 335788
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406475</commentid>
    <comment_count>10</comment_count>
      <attachid>335788</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 13:00:25 -0700</bug_when>
    <thetext>Comment on attachment 335788
Patch for landing

Clearing flags on attachment: 335788

Committed r229608: &lt;https://trac.webkit.org/changeset/229608&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406476</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-14 13:00:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1406477</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-14 13:01:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/38470271&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335609</attachid>
            <date>2018-03-12 11:25:32 -0700</date>
            <delta_ts>2018-03-12 15:58:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183523-20180312142531.patch</filename>
            <type>text/plain</type>
            <size>45938</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NmY2N2EyZWUzY2E3ZmU4NmMwMjdjNjg2YjQzOWYyMzVkMWIxNzQ0Li4xMjc1OTI2ZmNjOWQ5NjVh
NjUwMzJhNTFmNTBiOTI3ZGVkNTQ3ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOC0wMy0xMiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZpeCBvcmRlciBvZiBldmFsdWF0aW9uIGZvciBDbGFzc0RlZmlu
aXRpb25FdmFsdWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb21wdXRlZCBwcm9wZXJ0eSBuYW1lcyBuZWVkIHRvIGJlIGV2YWx1YXRlZCBpbiBz
b3VyY2Ugb3JkZXIgZHVyaW5nIGNsYXNzCisgICAgICAgIGRlZmluaXRpb24gZXZhbHVhdGlvbiwg
YXMgaXQncyBvYnNlcnZhYmxlIChhbmQgc3BlY2lmaWVkIHRvIHdvcmsgdGhpcyB3YXkpLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGltcHJvdmVzIGNvbXBhdGliaWxpdHkgd2l0aCBDaHJvbWl1bS4K
KworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZUNsYXNzRWxlbWVudHMpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVQcm9wZXJ0eSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFt
ZWRQcm9wZXJ0eSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5Tm9kZTo6aXNDbGFzc1Byb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlOb2RlOjppc1N0YXRpY0NsYXNzUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eU5vZGU6OmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcik6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisKIDIwMTgtMDMtMTEg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10g
QUkgc2hvdWxkIGNvbnZlcnQgQ3JlYXRlVGhpcyB0byBOZXdPYmplY3QgaWYgdGhlIHByb3RvdHlw
ZSBvYmplY3QgaXMgcHJvdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggODgyNGE4MTI4MDk0OGM3MjNiNDYw
ZTQ3MTljNmZlYzdiZDNlNGMwMS4uMWVmMWFlNWNiMDE2NjI1ZjgyNWIzN2JlZjcwMjY5YjA0MDY1
N2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIxLDYgKzUyMSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZUluVGFpbFBvc2l0aW9uKG51bGxwdHIsIG4pOwog
ICAgICAgICB9CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZUNsYXNzRWxlbWVudHMo
UHJvcGVydHlMaXN0Tm9kZSogbiwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lzdGVySUQq
IHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5y
ZWZDb3VudCgpICYmIHByb3RvdHlwZS0+cmVmQ291bnQoKSk7CisgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIW1fdm0tPmlzU2FmZVRvUmVjdXJzZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGlmIChV
TkxJS0VMWShuLT5uZWVkc0RlYnVnSG9vaygpKSkKKyAgICAgICAgICAgICAgICBlbWl0RGVidWdI
b29rKG4pOworICAgICAgICAgICAgcmV0dXJuIG4tPmVtaXRCeXRlY29kZSgqdGhpcywgY29uc3Ry
dWN0b3IsIHByb3RvdHlwZSk7CisgICAgICAgIH0KKwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Tm9kZUZvclByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChub2RlLT5pc1N0cmluZygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
YTIyOGJkMDRkNTIxZjhiM2I1OTVlMjQ5Y2U3NGZjYTIzYmI3NjZmNy4uZDZmYjIyZDkwZGJkYmIw
ZDNmZTNkOWZiOGY5MDhiNGY3OTBkYjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTA4LDEyICs1MDgsMTUgQEAg
c3RhdGljIGlubGluZSB2b2lkIGVtaXRQdXRIb21lT2JqZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGYKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoZnVuY3Rp
b24sIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaG9tZU9iamVjdFBy
aXZhdGVOYW1lKCksIGhvbWVPYmplY3QpOwogfQogCi1SZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQorUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJl
Z2lzdGVySUQqIHByb3RvdHlwZSkKIHsKICAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0
IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAgIFByb3BlcnR5TGlzdE5vZGUq
IHAgPSB0aGlzOwotICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5
Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KQorICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51
bGxwdHI7CisgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2Rl
OjpDb25zdGFudCk7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5p
c0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsK
ICAgICAgICAgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoZ2VuZXJhdG9yLCBkc3QsICpwLT5tX25v
ZGUpOworICAgIH0KIAogICAgIC8vIFdlcmUgdGhlcmUgYW55IGdldC9zZXQgcHJvcGVydGllcz8K
ICAgICBpZiAocCkgewpAQCAtNTU1LDYgKzU1OCw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
CiAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVtYWluaW5nIHByb3BlcnRpZXMgaW4gdGhl
IGxpc3QuCiAgICAgICAgIGZvciAoOyBwOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgICAgICBQ
cm9wZXJ0eU5vZGUqIG5vZGUgPSBwLT5tX25vZGU7CisgICAgICAgICAgICBkc3QgPSBub2RlLT5p
c0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsK
IAogICAgICAgICAgICAgLy8gSGFuZGxlIHJlZ3VsYXIgdmFsdWVzLgogICAgICAgICAgICAgaWYg
KG5vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKQEAgLTYzOSw3ICs2NDMs
NyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0
dXJuIGRzdDsKKyAgICByZXR1cm4gZHN0T3JDb25zdHJ1Y3RvcjsKIH0KIAogdm9pZCBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkKQEAgLTM5NTEs
MTEgKzM5NTUsOCBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwg
cHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOwogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVBy
b3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHBy
b3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7CiAKLSAgICBp
ZiAobV9zdGF0aWNNZXRob2RzKQotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0
b3IuZ2V0KCksIG1fc3RhdGljTWV0aG9kcyk7Ci0KLSAgICBpZiAobV9pbnN0YW5jZU1ldGhvZHMp
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShwcm90b3R5cGUuZ2V0KCksIG1faW5zdGFuY2VN
ZXRob2RzKTsKKyAgICBpZiAobV9jbGFzc0VsZW1lbnRzKQorICAgICAgICBnZW5lcmF0b3IuZW1p
dERlZmluZUNsYXNzRWxlbWVudHMobV9jbGFzc0VsZW1lbnRzLCBjb25zdHJ1Y3Rvci5nZXQoKSwg
cHJvdG90eXBlLmdldCgpKTsKIAogICAgIGlmICghbV9uYW1lLmlzTnVsbCgpKSB7CiAgICAgICAg
IFZhcmlhYmxlIGNsYXNzTmFtZVZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX25hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4NjFmMGNmNzA2ZjA0
MGIzMTg4NTM3YTlhZmVlYTExYjhiZTMzMmRlLi41YzZkZDMzMTk4Y2EyZjk0NTA1MzU4Y2RmOTRi
NjA1YzliZTdlODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aApAQCAtMzk3LDEwICszOTcsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIENsYXNzRXhwck5v
ZGUqIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBQYXJzZXJDbGFzc0luZm88QVNUQnVpbGRlcj4mIGNsYXNzSW5mbywgVmFyaWFibGVFbnZpcm9u
bWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9yLAotICAg
ICAgICBFeHByZXNzaW9uTm9kZSogcGFyZW50Q2xhc3MsIFByb3BlcnR5TGlzdE5vZGUqIGluc3Rh
bmNlTWV0aG9kcywgUHJvcGVydHlMaXN0Tm9kZSogc3RhdGljTWV0aG9kcykKKyAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIHBhcmVudENsYXNzLCBQcm9wZXJ0eUxpc3ROb2RlKiBjbGFzc0VsZW1lbnRz
KQogICAgIHsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4
cHJlc3Npb24oY2xhc3NJbmZvLnN0YXJ0T2Zmc2V0LCBjbGFzc0luZm8uZW5kT2Zmc2V0LCBjbGFz
c0luZm8uc3RhcnRMaW5lLCBjbGFzc0luZm8uc3RhcnRDb2x1bW4pOwotICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBDbGFzc0V4cHJOb2RlKGxvY2F0aW9uLCAqY2xhc3NJbmZvLmNs
YXNzTmFtZSwgc291cmNlLCBjbGFzc0Vudmlyb25tZW50LCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xh
c3MsIGluc3RhbmNlTWV0aG9kcywgc3RhdGljTWV0aG9kcyk7CisgICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIENsYXNzRXhwck5vZGUobG9jYXRpb24sICpjbGFzc0luZm8uY2xhc3NO
YW1lLCBzb3VyY2UsIGNsYXNzRW52aXJvbm1lbnQsIGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywg
Y2xhc3NFbGVtZW50cyk7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0
aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5j
dGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKQEAgLTQ3MCw3ICs0NzAsNyBAQCBw
dWJsaWM6CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBBcmd1bWVudExpc3ROb2RlKiBhcmdzLCBFeHByZXNz
aW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFyZ3VtZW50TGlzdE5v
ZGUobG9jYXRpb24sIGFyZ3MsIGFyZyk7IH0KIAogICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5v
ZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wsCi0gICAgICAgIGNvbnN0IElk
ZW50aWZpZXIqIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVu
Y3Rpb25JbmZvLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICAgICAgY29uc3QgSWRlbnRpZmll
ciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbklu
Zm8sIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7CiAg
ICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwg
ZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5l
U3RhcnRPZmZzZXQpOwpAQCAtNDc4LDMwICs0NzgsMzAgQEAgcHVibGljOgogICAgICAgICBmdW5j
dGlvbkluZm8uYm9keS0+c2V0SW5mZXJyZWROYW1lKCpuYW1lKTsKICAgICAgICAgU291cmNlQ29k
ZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0
T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBm
dW5jdGlvbkluZm8ucGFyYW1ldGVyc1N0YXJ0Q29sdW1uKTsKICAgICAgICAgTWV0aG9kRGVmaW5p
dGlvbk5vZGUqIG1ldGhvZERlZiA9IG5ldyAobV9wYXJzZXJBcmVuYSkgTWV0aG9kRGVmaW5pdGlv
bk5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBmdW5j
dGlvbkluZm8uYm9keSwgc291cmNlKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVu
YSkgUHJvcGVydHlOb2RlKCpuYW1lLCBtZXRob2REZWYsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5r
bm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqbmFtZSwgbWV0aG9kRGVmLCB0
eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwog
ICAgIH0KIAogICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2Rl
OjpUeXBlIHR5cGUsIGJvb2wsCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBuYW1lLCBjb25zdCBQ
YXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgYm9vbCBpc0NsYXNz
UHJvcGVydHkpCisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBuYW1lLCBjb25zdCBQYXJzZXJGdW5j
dGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgQ2xhc3NFbGVtZW50VGFnIHRhZykK
ICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkt
PnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9j
YXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIFNv
dXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5m
by5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0
TGluZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbik7CiAgICAgICAgIE1ldGhv
ZERlZmluaXRpb25Ob2RlKiBtZXRob2REZWYgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIE1ldGhvZERl
ZmluaXRpb25Ob2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmll
ciwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIFByb3BlcnR5Tm9kZShuYW1lLCBtZXRob2REZWYsIHR5cGUsIFByb3BlcnR5Tm9k
ZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShuYW1lLCBtZXRob2RE
ZWYsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRh
Zyk7CiAgICAgfQogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2ws
Ci0gICAgICAgIGRvdWJsZSBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRl
cj4mIGZ1bmN0aW9uSW5mbywgYm9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAgICAgIGRvdWJsZSBu
YW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywg
Q2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5z
ZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0
aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCA9IHBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VO
dW1lcmljSWRlbnRpZmllcih2bSwgbmFtZSk7CiAgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0g
bV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVu
Y3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZv
LnBhcmFtZXRlcnNTdGFydENvbHVtbik7CiAgICAgICAgIE1ldGhvZERlZmluaXRpb25Ob2RlKiBt
ZXRob2REZWYgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIE1ldGhvZERlZmluaXRpb25Ob2RlKGxvY2F0
aW9uLCB2bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGZ1bmN0aW9uSW5mby5ib2R5
LCBzb3VyY2UpOwotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5v
ZGUoaWRlbnQsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJp
bmRpbmc6Ok5lZWRlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKGlkZW50LCBtZXRob2REZWYsIHR5cGUsIFByb3BlcnR5
Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CiAgICAgfQogCi0gICAg
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5h
bWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVy
dHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcs
IEluZmVyTmFtZSBpbmZlck5hbWUsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgIFByb3BlcnR5
Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBFeHBy
ZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6
UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBJbmZlck5h
bWUgaW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgaWYgKGlu
ZmVyTmFtZSA9PSBJbmZlck5hbWU6OkFsbG93ZWQpIHsKICAgICAgICAgICAgIGlmIChub2RlLT5p
c0Jhc2VGdW5jRXhwck5vZGUoKSkgewpAQCAtNTExLDE3ICs1MTEsMTcgQEAgcHVibGljOgogICAg
ICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5pc0NsYXNzRXhwck5vZGUoKSkKICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxDbGFzc0V4cHJOb2RlKj4obm9kZSktPnNldEVjbWFOYW1lKCpwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IFByb3BlcnR5Tm9kZSgqcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJp
bmRpbmcsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIFByb3BlcnR5Tm9kZSgqcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBl
ckJpbmRpbmcsIHRhZyk7CiAgICAgfQotICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHko
RXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5v
ZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgYm9v
bCBpc0NsYXNzUHJvcGVydHkpCisgICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShFeHBy
ZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6
UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0Vs
ZW1lbnRUYWcgdGFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
UHJvcGVydHlOb2RlKG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgaXNDbGFzc1By
b3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2Rl
KG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsKICAgICB9Ci0gICAgUHJv
cGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVu
YSwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAgUHJvcGVydHlO
b2RlKiBjcmVhdGVQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgZG91
YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShwYXJzZXJBcmVuYS5pZGVudGlmaWVy
QXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIHByb3BlcnR5TmFtZSksIG5vZGUsIHR5
cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHBhcnNlckFyZW5hLmlkZW50aWZp
ZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgcHJvcGVydHlOYW1lKSwgbm9kZSwg
dHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCB0YWcpOwogICAgIH0KLSAgICBQcm9wZXJ0eU5v
ZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Np
b25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRU
eXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFz
c1Byb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShwcm9w
ZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgaXNDbGFzc1Byb3Bl
cnR5KTsgfQorICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUq
IHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBQcm9wZXJ0eU5vZGUocHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBl
ckJpbmRpbmcsIHRhZyk7IH0KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxp
c3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0
eSkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9u
LCBwcm9wZXJ0eSk7IH0KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3Qo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSwg
UHJvcGVydHlMaXN0Tm9kZSogdGFpbCkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9w
ZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCAwYTA3OTdlNThl
MjZiOTAxMDQwMWJlMWEwZWQ1ZTNkMTk4NWE4NDQxLi5lNmYwM2I2NWI3NWQwMDI1MmYwNDNlYzk5
MzFmYmJhNTA0YjkzY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaApAQCAtMjQyLDM2ICsyNDIsMzYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBFeHByZXNzaW9uTm9kZSogYXNzaWduLCBUeXBlIHR5cGUsIFB1
dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJv
cGVydHkpCisgICAgaW5saW5lIFByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSwgUHV0VHlwZSBw
dXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQog
ICAgICAgICA6IG1fbmFtZSgmbmFtZSkKICAgICAgICAgLCBtX2Fzc2lnbihhc3NpZ24pCiAgICAg
ICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhzdXBlckJp
bmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwgbV9wdXRUeXBlKHB1dFR5
cGUpCi0gICAgICAgICwgbV9pc0NsYXNzUHJvcGVydHkoaXNDbGFzc1Byb3BlcnR5KQorICAgICAg
ICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0YWcpKQogICAgICAg
ICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAK
LSAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqIGFz
c2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3Bl
cnR5Tm9kZShFeHByZXNzaW9uTm9kZSogYXNzaWduLCBUeXBlIHR5cGUsIFB1dFR5cGUgcHV0VHlw
ZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICAg
ICAgOiBtX25hbWUobnVsbHB0cikKICAgICAgICAgLCBtX2Fzc2lnbihhc3NpZ24pCiAgICAgICAg
ICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhzdXBlckJpbmRp
bmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwgbV9wdXRUeXBlKHB1dFR5cGUp
Ci0gICAgICAgICwgbV9pc0NsYXNzUHJvcGVydHkoaXNDbGFzc1Byb3BlcnR5KQorICAgICAgICAs
IG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0YWcpKQogICAgICAgICAs
IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogbmFtZSwgRXhw
cmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5cGUsIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgIGlubGluZSBQcm9w
ZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogbmFtZSwgRXhwcmVzc2lvbk5v
ZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgICAgIDogbV9uYW1lKG51bGxwdHIp
CiAgICAgICAgICwgbV9leHByZXNzaW9uKG5hbWUpCiAgICAgICAgICwgbV9hc3NpZ24oYXNzaWdu
KQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmco
c3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlw
ZShwdXRUeXBlKQotICAgICAgICAsIG1faXNDbGFzc1Byb3BlcnR5KGlzQ2xhc3NQcm9wZXJ0eSkK
KyAgICAgICAgLCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkK
ICAgICAgICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKICAgICB9
CkBAIC05OTMsNyArOTkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNs
YXNzU291cmNlLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNz
aW9uTm9kZSogY29uc3RydWN0b3JFeHByZXNzaW9uLCBFeHByZXNzaW9uTm9kZSogY2xhc3NIZXJp
dGFnZSwgUHJvcGVydHlMaXN0Tm9kZSogaW5zdGFuY2VNZXRob2RzLCBQcm9wZXJ0eUxpc3ROb2Rl
KiBzdGF0aWNNZXRob2RzKQorICAgIGlubGluZSBDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUs
IGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFz
c0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3JFeHByZXNzaW9uLCBFeHBy
ZXNzaW9uTm9kZSogY2xhc3NIZXJpdGFnZSwgUHJvcGVydHlMaXN0Tm9kZSogY2xhc3NFbGVtZW50
cykKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBWYXJpYWJs
ZUVudmlyb25tZW50Tm9kZShjbGFzc0Vudmlyb25tZW50KQogICAgICAgICAsIG1fY2xhc3NTb3Vy
Y2UoY2xhc3NTb3VyY2UpCkBAIC0xMDAxLDggKzEwMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLCBtX2VjbWFOYW1lKCZuYW1lKQogICAgICAgICAsIG1fY29uc3RydWN0b3JFeHByZXNz
aW9uKGNvbnN0cnVjdG9yRXhwcmVzc2lvbikKICAgICAgICAgLCBtX2NsYXNzSGVyaXRhZ2UoY2xh
c3NIZXJpdGFnZSkKLSAgICAgICAgLCBtX2luc3RhbmNlTWV0aG9kcyhpbnN0YW5jZU1ldGhvZHMp
Ci0gICAgICAgICwgbV9zdGF0aWNNZXRob2RzKHN0YXRpY01ldGhvZHMpCisgICAgICAgICwgbV9j
bGFzc0VsZW1lbnRzKGNsYXNzRWxlbWVudHMpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA4NWMzMWEzMmNiOWQ5Yzg4NjZiNTFlNjdlNzdk
Y2IwODk0MzE1ODQ2Li40YmIwNWYzZmUzMmRhZmUzODQwMjBmNzQ0MDQyNGY2ZmU4MTU0ZDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMjQ4LDkgKzI0OCwxMSBA
QCBib29sIFByb3BlcnR5TGlzdE5vZGU6Omhhc1N0YXRpY2FsbHlOYW1lZFByb3BlcnR5KGNvbnN0
IElkZW50aWZpZXImIHByb3BOYW1lKQogewogICAgIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QgPSB0
aGlzOwogICAgIHdoaWxlIChsaXN0KSB7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGN1cnJl
bnROb2RlTmFtZSA9IGxpc3QtPm1fbm9kZS0+bmFtZSgpOwotICAgICAgICBpZiAoY3VycmVudE5v
ZGVOYW1lICYmICpjdXJyZW50Tm9kZU5hbWUgPT0gcHJvcE5hbWUpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNTdGF0aWNDbGFzc1Byb3BlcnR5
KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGN1cnJlbnROb2RlTmFtZSA9IGxp
c3QtPm1fbm9kZS0+bmFtZSgpOworICAgICAgICAgICAgaWYgKGN1cnJlbnROb2RlTmFtZSAmJiAq
Y3VycmVudE5vZGVOYW1lID09IHByb3BOYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CiAgICAgICAgIGxpc3QgPSBsaXN0LT5tX25leHQ7CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAzMmE2MGVh
NTQ2YTY1MjI4MTM4NTM5N2QxODkyNjMwNDFiOGU0MGExLi5lOTRlMDA1ZWE0MTk5NTJmYTVkMGRh
YmRjYTI3Yjk3NDQ1ZjZjYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBA
IC02OTUsMjEgKzY5NSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX29wdGlv
bmFsOwogICAgIH07CiAKKyAgICBlbnVtIGNsYXNzIENsYXNzRWxlbWVudFRhZyB7IE5vLCBJbnN0
YW5jZSwgU3RhdGljIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIDogcHVibGljIFBhcnNlckFy
ZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUeXBlIHsgQ29uc3RhbnQg
PSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2
LCBTcHJlYWQgPSAzMiB9OwogICAgICAgICBlbnVtIFB1dFR5cGUgeyBVbmtub3duLCBLbm93bkRp
cmVjdCB9OwogCi0gICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVz
c2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3Bl
cnR5KTsKLSAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlw
ZSwgU3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSk7Ci0gICAgICAgIFByb3BlcnR5
Tm9kZShFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSosIFR5cGUs
IFB1dFR5cGUsIFN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICBQ
cm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0
VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOworICAgICAgICBQcm9wZXJ0eU5v
ZGUoRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxl
bWVudFRhZyk7CisgICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogcHJvcGVydHlO
YW1lLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NF
bGVtZW50VGFnKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcmVzc2lvbk5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KICAgICAgICAgYm9vbCBu
ZWVkc1N1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTdXBlckJpbmRpbmc7IH0K
LSAgICAgICAgYm9vbCBpc0NsYXNzUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NQ
cm9wZXJ0eTsgfQorICAgICAgICBib29sIGlzQ2xhc3NQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PENsYXNzRWxlbWVudFRhZz4obV9jbGFzc0VsZW1lbnRUYWcpICE9IENsYXNz
RWxlbWVudFRhZzo6Tm87IH0KKyAgICAgICAgYm9vbCBpc1N0YXRpY0NsYXNzUHJvcGVydHkoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDbGFzc0VsZW1lbnRUYWc+KG1fY2xhc3NFbGVtZW50
VGFnKSA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYzsgfQorICAgICAgICBib29sIGlzSW5zdGFu
Y2VDbGFzc1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q2xhc3NFbGVtZW50
VGFnPihtX2NsYXNzRWxlbWVudFRhZykgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZTsgfQog
ICAgICAgICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9p
c092ZXJyaWRkZW5CeUR1cGxpY2F0ZTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5
RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQogICAgICAg
ICBQdXRUeXBlIHB1dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQdXRUeXBlPiht
X3B1dFR5cGUpOyB9CkBAIC03MjIsNyArNzI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHVuc2lnbmVkIG1fdHlwZSA6IDY7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRp
bmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX3B1dFR5cGUgOiAxOwotICAgICAgICB1bnNpZ25l
ZCBtX2lzQ2xhc3NQcm9wZXJ0eTogMTsKKyAgICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRU
YWc6IDI7CiAgICAgICAgIHVuc2lnbmVkIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU6IDE7CiAg
ICAgfTsKIApAQCAtNzMzLDggKzczNiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBi
b29sIGhhc1N0YXRpY2FsbHlOYW1lZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BOYW1l
KTsKIAorICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCopOworCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCA9IDApIG92ZXJyaWRlCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBlbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIG51bGxw
dHIpOworICAgICAgICB9CiAgICAgICAgIHZvaWQgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgUHJvcGVydHlOb2RlJik7CiAKICAgICAgICAg
UHJvcGVydHlOb2RlKiBtX25vZGU7CkBAIC0yMTM5LDEzICsyMTQ3LDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgQ2xhc3NFeHByTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2Us
CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHBy
ZXNzaW9uTm9kZSogY29uc3RydWN0b3JFeHByZXNzc2lvbiwKLSAgICAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBwYXJlbnRDbGFzcywgUHJvcGVydHlMaXN0Tm9kZSogaW5zdGFuY2VNZXRob2RzLCBQ
cm9wZXJ0eUxpc3ROb2RlKiBzdGF0aWNNZXRob2RzKTsKKyAgICAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBwYXJlbnRDbGFzcywgUHJvcGVydHlMaXN0Tm9kZSogY2xhc3NFbGVtZW50cyk7CiAKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJuIG1fZWNtYU5hbWUgPyAqbV9l
Y21hTmFtZSA6IG1fbmFtZTsgfQogICAgICAgICB2b2lkIHNldEVjbWFOYW1lKGNvbnN0IElkZW50
aWZpZXImIG5hbWUpIHsgbV9lY21hTmFtZSA9IG1fbmFtZS5pc051bGwoKSA/ICZuYW1lIDogJm1f
bmFtZTsgfQogCi0gICAgICAgIGJvb2wgaGFzU3RhdGljUHJvcGVydHkoY29uc3QgSWRlbnRpZmll
ciYgcHJvcE5hbWUpIHsgcmV0dXJuIG1fc3RhdGljTWV0aG9kcyA/IG1fc3RhdGljTWV0aG9kcy0+
aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHkocHJvcE5hbWUpIDogZmFsc2U7IH0KKyAgICAgICAg
Ym9vbCBoYXNTdGF0aWNQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wTmFtZSkgeyByZXR1
cm4gbV9jbGFzc0VsZW1lbnRzID8gbV9jbGFzc0VsZW1lbnRzLT5oYXNTdGF0aWNhbGx5TmFtZWRQ
cm9wZXJ0eShwcm9wTmFtZSkgOiBmYWxzZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKQEAgLTIxNTcsOCArMjE2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBtX2VjbWFOYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9jb25zdHJ1Y3RvckV4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2NsYXNz
SGVyaXRhZ2U7Ci0gICAgICAgIFByb3BlcnR5TGlzdE5vZGUqIG1faW5zdGFuY2VNZXRob2RzOwot
ICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBtX3N0YXRpY01ldGhvZHM7CisgICAgICAgIFByb3Bl
cnR5TGlzdE5vZGUqIG1fY2xhc3NFbGVtZW50czsKICAgICB9OwogCiAgICAgY2xhc3MgRGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDcyNTQzZmQ1YzRmMGE1NDU2MmVj
NWQwMmY4OThiMmM3N2M0MDdkMDQuLjZmYTNhZDFmYTc2MmM1NTBlOTdmZTdjNGFhOTI5Zjg1MDYw
ZjNiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI3OTUs
MTAgKzI3OTUsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgIGNvbnN1bWVPckZhaWwo
T1BFTkJSQUNFLCAiRXhwZWN0ZWQgb3BlbmluZyAneycgYXQgdGhlIHN0YXJ0IG9mIGEgY2xhc3Mg
Ym9keSIpOwogCiAgICAgVHJlZUV4cHJlc3Npb24gY29uc3RydWN0b3IgPSAwOwotICAgIFRyZWVQ
cm9wZXJ0eUxpc3Qgc3RhdGljTWV0aG9kcyA9IDA7Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBpbnN0
YW5jZU1ldGhvZHMgPSAwOwotICAgIFRyZWVQcm9wZXJ0eUxpc3QgaW5zdGFuY2VNZXRob2RzVGFp
bCA9IDA7Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBzdGF0aWNNZXRob2RzVGFpbCA9IDA7CisgICAg
VHJlZVByb3BlcnR5TGlzdCBjbGFzc0VsZW1lbnRzID0gMDsKKyAgICBUcmVlUHJvcGVydHlMaXN0
IGNsYXNzRWxlbWVudHNUYWlsID0gMDsKICAgICB3aGlsZSAoIW1hdGNoKENMT1NFQlJBQ0UpKSB7
CiAgICAgICAgIGlmIChtYXRjaChTRU1JQ09MT04pKSB7CiAgICAgICAgICAgICBuZXh0KCk7CkBA
IC0yODA5LDcgKzI4MDcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFz
c0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgICAgICB1bnNp
Z25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKIAogICAgICAgICAvLyBGb3IgYmFja3dh
cmRzIGNvbXBhdGliaWxpdHksICJzdGF0aWMiIGlzIGEgbm9uLXJlc2VydmVkIGtleXdvcmQgaW4g
bm9uLXN0cmljdCBtb2RlLgotICAgICAgICBib29sIGlzU3RhdGljTWV0aG9kID0gZmFsc2U7Cisg
ICAgICAgIENsYXNzRWxlbWVudFRhZyB0YWcgPSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlOwog
ICAgICAgICBpZiAobWF0Y2goUkVTRVJWRURfSUZfU1RSSUNUKSAmJiAqbV90b2tlbi5tX2RhdGEu
aWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+c3RhdGljS2V5d29yZCkgewogICAgICAgICAg
ICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgICAgICAgICAg
bmV4dCgpOwpAQCAtMjgxNyw3ICsyODE1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQKICAg
ICAgICAgICAgICAgICAvLyBSZXBhcnNlICJzdGF0aWMoKSIgYXMgYSBtZXRob2QgbmFtZWQgInN0
YXRpYyIuCiAgICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgaXNTdGF0aWNNZXRob2QgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHRhZyA9IENsYXNzRWxlbWVudFRhZzo6U3RhdGljOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgYSB3YXkgdG8gc2hhcmUgbW9yZSBjb2Rl
IHdpdGggcGFyc2VQcm9wZXJ0eS4KQEAgLTI4ODMsMTMgKzI4ODEsMTIgQEAgcGFyc2VNZXRob2Q6
CiAgICAgICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eTsKICAgICAgICAgY29uc3QgYm9vbCBhbHdh
eXNTdHJpY3RJbnNpZGVDbGFzcyA9IHRydWU7CiAgICAgICAgIGlmIChpc0dldHRlciB8fCBpc1Nl
dHRlcikgewotICAgICAgICAgICAgYm9vbCBpc0NsYXNzUHJvcGVydHkgPSB0cnVlOwogICAgICAg
ICAgICAgcHJvcGVydHkgPSBwYXJzZUdldHRlclNldHRlcihjb250ZXh0LCBhbHdheXNTdHJpY3RJ
bnNpZGVDbGFzcywgaXNHZXR0ZXIgPyBQcm9wZXJ0eU5vZGU6OkdldHRlciA6IFByb3BlcnR5Tm9k
ZTo6U2V0dGVyLAotICAgICAgICAgICAgICAgIG1ldGhvZFN0YXJ0LCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIGlzQ2xhc3NQcm9wZXJ0eSwgaXNTdGF0aWNNZXRob2QpOworICAgICAgICAgICAgICAg
IG1ldGhvZFN0YXJ0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRhZyk7CiAgICAgICAgICAgICBm
YWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBt
ZXRob2RJbmZvOwotICAgICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gIWlzU3RhdGljTWV0
aG9kICYmICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yOworICAgICAgICAgICAg
Ym9vbCBpc0NvbnN0cnVjdG9yID0gdGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYg
KmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3I7CiAgICAgICAgICAgICBpZiAoaXNB
c3luY01ldGhvZFBhcnNlTW9kZShwYXJzZU1vZGUpIHx8IGlzQXN5bmNHZW5lcmF0b3JNZXRob2RQ
YXJzZU1vZGUocGFyc2VNb2RlKSB8fCBpc0dlbmVyYXRvck1ldGhvZFBhcnNlTW9kZShwYXJzZU1v
ZGUpKSB7CiAgICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgIiwgc3RyaW5nQXJ0aWNsZUZvckZ1bmN0aW9uTW9k
ZShwYXJzZU1vZGUpLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUocGFyc2VNb2RlKSwgIiBuYW1lZCAn
cHJvdG90eXBlJyIpOwpAQCAtMjkwNywzNSArMjkwNCwyOCBAQCBwYXJzZU1ldGhvZDoKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgLy8gRklYTUU6IFN5bnRheCBlcnJvciB3aGVuIHN1cGVy
KCkgaXMgY2FsbGVkCi0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaXNTdGF0aWNNZXRo
b2QgJiYgbWV0aG9kSW5mby5uYW1lICYmICptZXRob2RJbmZvLm5hbWUgPT0gcHJvcGVydHlOYW1l
cy5wcm90b3R5cGUsCisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNz
RWxlbWVudFRhZzo6U3RhdGljICYmIG1ldGhvZEluZm8ubmFtZSAmJiAqbWV0aG9kSW5mby5uYW1l
ID09IHByb3BlcnR5TmFtZXMucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICJDYW5ub3QgZGVj
bGFyZSBhIHN0YXRpYyBtZXRob2QgbmFtZWQgJ3Byb3RvdHlwZSciKTsKIAotICAgICAgICAgICAg
Ym9vbCBpc0NsYXNzUHJvcGVydHkgPSB0cnVlOwogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJv
cGVydHlOYW1lKSB7CiAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVBy
b3BlcnR5KGNvbXB1dGVkUHJvcGVydHlOYW1lLCBtZXRob2QsIHN0YXRpY19jYXN0PFByb3BlcnR5
Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0
ZWQpLAotICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGFsd2F5c1N0
cmljdEluc2lkZUNsYXNzLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgaXNDbGFzc1Byb3BlcnR5KTsK
KyAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNTdHJpY3RJ
bnNpZGVDbGFzcywgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eSht
ZXRob2RJbmZvLm5hbWUsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwKLSAgICAgICAg
ICAgICAgICAgICAgUHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNTdHJpY3RJbnNpZGVDbGFz
cywgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgaXNDbGFzc1Byb3Bl
cnR5KTsKKyAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNT
dHJpY3RJbnNpZGVDbGFzcywgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dl
ZCwgdGFnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFRyZWVQcm9wZXJ0
eUxpc3QmIHRhaWwgPSBpc1N0YXRpY01ldGhvZCA/IHN0YXRpY01ldGhvZHNUYWlsIDogaW5zdGFu
Y2VNZXRob2RzVGFpbDsKLSAgICAgICAgaWYgKHRhaWwpCi0gICAgICAgICAgICB0YWlsID0gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobWV0aG9kTG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0
eUxpc3QobWV0aG9kTG9jYXRpb24sIHByb3BlcnR5KTsKLSAgICAgICAgICAgIGlmIChpc1N0YXRp
Y01ldGhvZCkKLSAgICAgICAgICAgICAgICBzdGF0aWNNZXRob2RzID0gdGFpbDsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpbnN0YW5jZU1ldGhvZHMgPSB0YWlsOwotICAgICAg
ICB9CisgICAgICAgIGlmIChjbGFzc0VsZW1lbnRzVGFpbCkKKyAgICAgICAgICAgIGNsYXNzRWxl
bWVudHNUYWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobWV0aG9kTG9jYXRpb24sIHBy
b3BlcnR5LCBjbGFzc0VsZW1lbnRzVGFpbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNs
YXNzRWxlbWVudHMgPSBjbGFzc0VsZW1lbnRzVGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlM
aXN0KG1ldGhvZExvY2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAgfQogCiAgICAgaW5mby5lbmRPZmZz
ZXQgPSB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENM
T1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwog
Ci0gICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2Nh
dGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29u
c3RydWN0b3IsIHBhcmVudENsYXNzLCBpbnN0YW5jZU1ldGhvZHMsIHN0YXRpY01ldGhvZHMpOwor
ICAgIGF1dG8gY2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRp
b24sIGluZm8sIGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0
cnVjdG9yLCBwYXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NT
Y29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNs
YXNzRXhwcmVzc2lvbjsKIH0KQEAgLTM4OTgsOCArMzg4OCw2IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5
KFRyZWVCCiB7CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZTsKICAgICBib29sIHdhc0lkZW50ID0gZmFsc2U7Ci0gICAgYm9vbCBpc0Ns
YXNzUHJvcGVydHkgPSBmYWxzZTsKLSAgICBib29sIGlzU3RhdGljTWV0aG9kID0gZmFsc2U7CiAK
ICAgICBpZiAoY29uc3VtZShUSU1FUykpCiAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU7CkBAIC0zOTQ4LDEzICszOTM2LDEzIEBA
IG5hbWVkUHJvcGVydHk6CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBh
cnNlIGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgICAgICBj
b250ZXh0LnNldEVuZE9mZnNldChub2RlLCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAg
ICAgICAgICAgSW5mZXJOYW1lIGluZmVyTmFtZSA9IGlkZW50ICYmICppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8gPyBJbmZlck5hbWU6OkRpc2FsbG93ZWQgOiBJ
bmZlck5hbWU6OkFsbG93ZWQ7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9w
ZXJ0eShpZGVudCwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpV
bmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGluZmVyTmFtZSwgaXND
bGFzc1Byb3BlcnR5KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5
KGlkZW50LCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25v
d24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1lLCBDbGFzc0Vs
ZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4p
KSB7CiAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4
dCwgaWRlbnQsIHBhcnNlTW9kZSk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwotICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1ldGhvZCwgUHJv
cGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29tcGxldGUs
IFN1cGVyQmluZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIGlzQ2xhc3NQcm9wZXJ0
eSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0
aG9kLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0LCBj
b21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NF
bGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZShwYXJzZU1vZGUg
IT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlLCAiRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBm
b3IgYXJndW1lbnQgbGlzdCIpOwogCkBAIC0zOTY4LDcgKzM5NTYsNyBAQCBuYW1lZFByb3BlcnR5
OgogICAgICAgICAgICAgaWYgKGN1cnJlbnRTY29wZSgpLT5pc0Fycm93RnVuY3Rpb24oKSkKICAg
ICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlc0V2
YWwoKTsKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0ZVJl
c29sdmUobG9jYXRpb24sICppZGVudCwgc3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG5vZGUsIHN0
YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFudCB8IFBy
b3BlcnR5Tm9kZTo6U2hvcnRoYW5kKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29tcGxl
dGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIGlzQ2xhc3NQ
cm9wZXJ0eSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVu
dCwgbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNv
bnN0YW50IHwgUHJvcGVydHlOb2RlOjpTaG9ydGhhbmQpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGly
ZWN0LCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dl
ZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWF0Y2go
RVFVQUwpKSAvLyBDb3ZlckluaXRpYWxpemVkTmFtZSBpcyBleGNsdXNpdmUgdG8gQmluZGluZ1Bh
dHRlcm4gYW5kIEFzc2lnbm1lbnRQYXR0ZXJuCkBAIC0zOTgxLDcgKzM5NjksNyBAQCBuYW1lZFBy
b3BlcnR5OgogICAgICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6U2V0dGVyOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgJzonIGZvbGxv
d2luZyB0aGUgcHJvcGVydHkgbmFtZSAnIiwgaWRlbnQtPmltcGwoKSwgIiciKTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlR2V0dGVyU2V0dGVyKGNvbnRleHQsIGNvbXBsZXRlLCB0eXBlLCBnZXR0ZXJP
clNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGlzQ2xhc3NQcm9wZXJ0
eSwgaXNTdGF0aWNNZXRob2QpOworICAgICAgICByZXR1cm4gcGFyc2VHZXR0ZXJTZXR0ZXIoY29u
dGV4dCwgY29tcGxldGUsIHR5cGUsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgfQogICAgIGNhc2UgRE9V
QkxFOgogICAgIGNhc2UgSU5URUdFUjogewpAQCAtMzk5Miw3ICszOTgwLDcgQEAgbmFtZWRQcm9w
ZXJ0eToKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gbV9wYXJzZXJBcmVu
YS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIoY29uc3RfY2FzdDxWTSo+
KG1fdm0pLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVBy
b3BlcnR5TWV0aG9kKGNvbnRleHQsICZpZGVudCwgcGFyc2VNb2RlKTsKICAgICAgICAgICAgIHBy
b3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0
eSgmaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpV
bmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dl
ZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVBy
b3BlcnR5KCZpZGVudCwgbWV0aG9kLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5v
ZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpB
bGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZU
cnVlKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBh
IHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQwMDAsNyArMzk4OCw3IEBA
IG5hbWVkUHJvcGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fu
bm90IHBhcnNlIGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAg
IGNvbnRleHQuc2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0g
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3Zt
KSwgbV9wYXJzZXJBcmVuYSwgcHJvcGVydHlOYW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJv
cGVydHkoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBwcm9wZXJ0eU5hbWUs
IG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29t
cGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAg
ICB9CiAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewogICAgICAgICBuZXh0KCk7CkBAIC00MDExLDcg
KzM5OTksNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkg
ewogICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQs
ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgcGFyc2VNb2RlKTsKICAgICAg
ICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG1ldGhvZCwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2Rl
OjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCks
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVBy
b3BlcnR5KHByb3BlcnR5TmFtZSwgbWV0aG9kLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5
cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJv
cGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBD
bGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKHBhcnNl
TW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBhIHBhcmVudGhl
c2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQwMTksNyArNDAwNyw3IEBAIG5hbWVkUHJv
cGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNl
IGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIGNvbnRleHQu
c2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbm9kZSwgc3RhdGljX2Nh
c3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlO
b2RlOjpDb21wdXRlZCksIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG5vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5
Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0
ZWQpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgfQogICAgIGNhc2UgRE9URE9URE9UOiB7
CiAgICAgICAgIGlmIChtX3VzZU9iamVjdFJlc3RTcHJlYWQpIHsKQEAgLTQwMzAsNyArNDAxOCw3
IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBlbGVtID0gcGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbk9yUHJvcGFnYXRlRXJyb3JDbGFzcyhjb250ZXh0KTsKICAg
ICAgICAgICAgIGZhaWxJZkZhbHNlKGVsZW0sICJDYW5ub3QgcGFyc2Ugc3ViamVjdCBvZiBhIHNw
cmVhZCBvcGVyYXRpb24iKTsKICAgICAgICAgICAgIGF1dG8gbm9kZSA9IGNvbnRleHQuY3JlYXRl
T2JqZWN0U3ByZWFkRXhwcmVzc2lvbihzcHJlYWRMb2NhdGlvbiwgZWxlbSwgc3RhcnQsIGRpdm90
LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVByb3BlcnR5KG5vZGUsIFByb3BlcnR5Tm9kZTo6U3ByZWFkLCBQcm9wZXJ0eU5vZGU6OlVu
a25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaXNDbGFzc1Byb3BlcnR5
KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KG5vZGUsIFByb3Bl
cnR5Tm9kZTo6U3ByZWFkLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0KICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAgICAgfQpAQCAtNDA1NSw3ICs0MDQzLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQ
cm9wZXJ0eU1ldGgKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
dHRlclNldHRlcihUcmVlQnVpbGRlciYgY29udGV4dCwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LAotICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGJvb2wgaXNDbGFzc1Byb3BlcnR5LCBib29s
IGlzU3RhdGljTWV0aG9kKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENs
YXNzRWxlbWVudFRhZyB0YWcpCiB7CiAgICAgY29uc3QgSWRlbnRpZmllciogc3RyaW5nUHJvcGVy
dHlOYW1lID0gMDsKICAgICBkb3VibGUgbnVtZXJpY1Byb3BlcnR5TmFtZSA9IDA7CkBAIC00MDY1
LDkgKzQwNTMsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogCiAgICAgaWYgKG1hdGNoU3Bl
Y0lkZW50aWZpZXIoKSB8fCBtYXRjaChTVFJJTkcpIHx8IG1fdG9rZW4ubV90eXBlICYgS2V5d29y
ZFRva2VuRmxhZykgewogICAgICAgICBzdHJpbmdQcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0
YS5pZGVudDsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGlzQ2xhc3NQcm9wZXJ0eSAmJiBp
c1N0YXRpY01ldGhvZCAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0Vs
ZW1lbnRUYWc6OlN0YXRpYyAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBt
ZXRob2QgbmFtZWQgJ3Byb3RvdHlwZSciKTsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGlz
Q2xhc3NQcm9wZXJ0eSAmJiAhaXNTdGF0aWNNZXRob2QgJiYgKnN0cmluZ1Byb3BlcnR5TmFtZSA9
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwKKyAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmICpzdHJpbmdQcm9wZXJ0
eU5hbWUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsCiAgICAgICAgICAgICAi
Q2Fubm90IGRlY2xhcmUgYSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWVkICdjb25zdHJ1Y3RvciciKTsK
ICAgICAgICAgbmV4dCgpOwogICAgIH0gZWxzZSBpZiAobWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJ
TlRFR0VSKSkgewpAQCAtNDA5MSwxMiArNDA3OSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIo
VAogICAgIH0KIAogICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHR5cGUsIHN0cmlj
dCwgc3RyaW5nUHJvcGVydHlOYW1lLCBpbmZvLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGxvY2F0aW9uLCB0eXBl
LCBzdHJpY3QsIHN0cmluZ1Byb3BlcnR5TmFtZSwgaW5mbywgdGFnKTsKIAogICAgIGlmIChjb21w
dXRlZFByb3BlcnR5TmFtZSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JT
ZXR0ZXJQcm9wZXJ0eShsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0
eXBlIHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksIHN0cmljdCwgY29tcHV0ZWRQcm9wZXJ0eU5h
bWUsIGluZm8sIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9k
ZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLCBzdHJpY3QsIGNvbXB1dGVk
UHJvcGVydHlOYW1lLCBpbmZvLCB0YWcpOwogCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0
dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEs
IGxvY2F0aW9uLCB0eXBlLCBzdHJpY3QsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIGluZm8sIGlzQ2xh
c3NQcm9wZXJ0eSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9w
ZXJ0eShjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGxvY2F0aW9uLCB0eXBl
LCBzdHJpY3QsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIGluZm8sIHRhZyk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApp
bmRleCAwODMxMjFiNDhjMmMyMTc0MDdmOGI2MThmZTI1M2FiZTE4MWI3MDk2Li5mOTQwZTk2Nzdi
Mzc2NzUwMTg5MWY1MGMxYThhYTZlY2M3YTFiNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKQEAgLTE1NzAsNyArMTU3MCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlQXJn
dW1lbnQoVHJlZUJ1aWxkZXImLCBBcmd1bWVudFR5cGUmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJiwgYm9v
bCBzdHJpY3QpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRp
ZmllciogbWV0aG9kTmFtZSwgU291cmNlUGFyc2VNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYs
IGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVy
U3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0NsYXNzUHJvcGVydHksIGJvb2wg
aXNTdGF0aWNNZXRob2QpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVBy
b3BlcnR5IHBhcnNlR2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3Bl
cnR5Tm9kZTo6VHlwZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3Ry
dWN0b3JLaW5kLCBDbGFzc0VsZW1lbnRUYWcpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRy
ZWVCdWlsZGVyJiwgU3ludGF4Q2hlY2tlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJh
bWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlU
eXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJv
b2wgaXNNZXRob2QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlvbkxpc3RDb250
ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA4ZjNhZmU2ZDI1NmZh
Yzk1ZTY5M2Q0MjA0ODkxN2RmOTVhZDM3MTQxLi45N2NmYWRiMzAyZjc2NTZlMzI0Y2RiYjA3ZmQ0
YWY0NDY1NDQzZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaApAQCAtMTkxLDcgKzE5MSw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBZaWVsZEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXdhaXQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEF3YWl0RXhwcjsgfQotICAg
IENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgUGFyc2VyQ2xhc3NJbmZvPFN5bnRheENoZWNrZXI+JiwgVmFyaWFibGVFbnZpcm9ubWVu
dCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0
eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQorICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVD
bGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyQ2xhc3NJbmZvPFN5
bnRheENoZWNrZXI+JiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHBy
ZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7IH0KICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlR2VuZXJhdG9yRnVuY3Rpb25Cb2R5KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVj
a2VyPiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVBc3luY0Z1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBG
dW5jdGlvbkV4cHI7IH0KQEAgLTIxNCwyNCArMjE0LDI0IEBAIHB1YmxpYzoKIAogICAgIGludCBj
cmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4g
QXJndW1lbnRzTGlzdFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBBcmd1bWVudHNMaXN0UmVzdWx0
OyB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogbmFtZSwg
aW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBib29s
IGNvbXBsZXRlLCBTdXBlckJpbmRpbmcsIEluZmVyTmFtZSwgYm9vbCkKKyAgICBQcm9wZXJ0eSBj
cmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6
VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wgY29tcGxldGUsIFN1cGVyQmlu
ZGluZywgSW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICBpZiAoIWNv
bXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICBBU1NF
UlQobmFtZSk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eShuYW1lLCB0eXBlKTsKICAgICB9Ci0g
ICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwg
UHJvcGVydHlOb2RlOjpQdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcsIGJvb2wpCisgICAgUHJv
cGVydHkgY3JlYXRlUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVy
dHlOb2RlOjpQdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAg
ICB7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkg
Y3JlYXRlUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBu
YW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUs
IGJvb2wgY29tcGxldGUsIFN1cGVyQmluZGluZywgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVQ
cm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgZG91YmxlIG5hbWUsIGlu
dCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCBj
b21wbGV0ZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICBp
ZiAoIWNvbXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAg
ICByZXR1cm4gUHJvcGVydHkoJnBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1l
cmljSWRlbnRpZmllcih2bSwgbmFtZSksIHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVh
dGVQcm9wZXJ0eShpbnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9k
ZTo6UHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nLCBib29sKQorICAgIFByb3BlcnR5IGNyZWF0
ZVByb3BlcnR5KGludCwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2Rl
OjpQdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAgICB7CiAg
ICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9CkBAIC0yODUsMTggKzI4NSwxOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRFeHBvcnRTcGVjaWZpZXIoRXhwb3J0U3BlY2lmaWVy
TGlzdCwgRXhwb3J0U3BlY2lmaWVyKSB7IH0KIAogICAgIGludCBhcHBlbmRDb25zdERlY2woY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVy
biBTdGF0ZW1lbnRSZXN1bHQ7IH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBi
b29sIHN0cmljdCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPFN5bnRheENoZWNrZXI+JiwgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBib29sIHN0cmljdCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JiwgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVy
biBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUsIHR5cGUpOwog
ICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sLCBpbnQsIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIGJvb2wpCisgICAgUHJvcGVydHkg
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwgaW50LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88
U3ludGF4Q2hlY2tlcj4mLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVy
UHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0cmljdCwgZG91YmxlIG5h
bWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIGJvb2wpCisgICAg
UHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBl
IHR5cGUsIGJvb2wgc3RyaWN0LCBkb3VibGUgbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZv
PFN5bnRheENoZWNrZXI+JiwgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgaWYgKCFz
dHJpY3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZjNDg3N2I5NmZkNWQ0
ODI1NWViNmE1YzRiNjc1ZWU4NmU1NWVmZGUuLjg1YzgzZWMxZDlmNWUxZDY3NTljZjhmNmZmNzYx
N2E1NWZkYmM0NzkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDMtMTIgIENhaXRsaW4gUG90dGVyICA8
Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBmaXggb3JkZXIgb2YgZXZhbHVhdGlv
biBmb3IgQ2xhc3NEZWZpbml0aW9uRXZhbHVhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgbmVlZCB0byBi
ZSBldmFsdWF0ZWQgaW4gc291cmNlIG9yZGVyIGR1cmluZyBjbGFzcworICAgICAgICBkZWZpbml0
aW9uIGV2YWx1YXRpb24sIGFzIGl0J3Mgb2JzZXJ2YWJsZSAoYW5kIHNwZWNpZmllZCB0byB3b3Jr
IHRoaXMgd2F5KS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbXByb3ZlcyBjb21wYXRpYmlsaXR5
IHdpdGggQ2hyb21pdW0uCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3NfZWxlbWVudHMuanM6IEFk
ZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0LkMucHJvdG90eXBlLmVmZmVjdCk6
CisgICAgICAgICh0ZXN0LkMuZWZmZWN0KToKKyAgICAgICAgKHRlc3QuQy5wcm90b3R5cGUuZ2V0
IGVmZmVjdCk6CisgICAgICAgICh0ZXN0LkMucHJvdG90eXBlLnNldCBlZmZlY3QpOgorICAgICAg
ICAodGVzdC5DKToKKwogMjAxOC0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KIAogICAgICAgICBbREZHXSBBSSBzaG91bGQgY29udmVydCBDcmVhdGVUaGlzIHRv
IE5ld09iamVjdCBpZiB0aGUgcHJvdG90eXBlIG9iamVjdCBpcyBwcm92ZWQKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2NsYXNzX2VsZW1lbnRzLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3Nf
ZWxlbWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5YWNlMzdiZDhlYzUzNGNhMWEzNjQ0ZjIyOTYxMDE1
ZWNkZThiNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzX2VsZW1lbnRz
LmpzCkBAIC0wLDAgKzEsMjQgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisKK2xldCBsb2cgPSBbXTsK
K2Z1bmN0aW9uIGVmZmVjdChkZXNjKSB7IGxvZy5wdXNoKGRlc2MpOyByZXR1cm4gZGVzYzsgfQor
CitjbGFzcyBDIHsKKyAgW2VmZmVjdCgiaW5zdGFuY2UjMSIpXSgpIHt9CisgIHN0YXRpYyBbZWZm
ZWN0KCJzdGF0aWMjMiIpXSgpIHt9CisgIGdldCBbZWZmZWN0KCJpbnN0YW5jZUdldHRlciMzIild
KCkge30KKyAgc3RhdGljIGdldCBbZWZmZWN0KCJzdGF0aWNHZXR0ZXIjNCIpXSgpIHt9CisgIHNl
dCBbZWZmZWN0KCJpbnN0YW5jZVNldHRlciM1IildKHYpIHt9CisgIHN0YXRpYyBbZWZmZWN0KCJz
dGF0aWNTZXR0ZXIjNiIpXSh2KSB7fQorfQorCityZXR1cm4gbG9nWzBdID09PSAiaW5zdGFuY2Uj
MSIgJiYKKyAgICAgICBsb2dbMV0gPT09ICJzdGF0aWMjMiIgJiYKKyAgICAgICBsb2dbMl0gPT09
ICJpbnN0YW5jZUdldHRlciMzIiAmJgorICAgICAgIGxvZ1szXSA9PT0gInN0YXRpY0dldHRlciM0
IiAmJgorICAgICAgIGxvZ1s0XSA9PT0gImluc3RhbmNlU2V0dGVyIzUiICYmCisgICAgICAgbG9n
WzVdID09PSAic3RhdGljU2V0dGVyIzYiOworfQorCitpZiAoIXRlc3QoKSkKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335656</attachid>
            <date>2018-03-12 15:58:38 -0700</date>
            <delta_ts>2018-03-13 12:55:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183523-20180312185836.patch</filename>
            <type>text/plain</type>
            <size>47508</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NmY2N2EyZWUzY2E3ZmU4NmMwMjdjNjg2YjQzOWYyMzVkMWIxNzQ0Li4xMjc1OTI2ZmNjOWQ5NjVh
NjUwMzJhNTFmNTBiOTI3ZGVkNTQ3ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOC0wMy0xMiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZpeCBvcmRlciBvZiBldmFsdWF0aW9uIGZvciBDbGFzc0RlZmlu
aXRpb25FdmFsdWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb21wdXRlZCBwcm9wZXJ0eSBuYW1lcyBuZWVkIHRvIGJlIGV2YWx1YXRlZCBpbiBz
b3VyY2Ugb3JkZXIgZHVyaW5nIGNsYXNzCisgICAgICAgIGRlZmluaXRpb24gZXZhbHVhdGlvbiwg
YXMgaXQncyBvYnNlcnZhYmxlIChhbmQgc3BlY2lmaWVkIHRvIHdvcmsgdGhpcyB3YXkpLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGltcHJvdmVzIGNvbXBhdGliaWxpdHkgd2l0aCBDaHJvbWl1bS4K
KworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZUNsYXNzRWxlbWVudHMpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVQcm9wZXJ0eSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFt
ZWRQcm9wZXJ0eSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5Tm9kZTo6aXNDbGFzc1Byb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlOb2RlOjppc1N0YXRpY0NsYXNzUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eU5vZGU6OmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcik6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisKIDIwMTgtMDMtMTEg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10g
QUkgc2hvdWxkIGNvbnZlcnQgQ3JlYXRlVGhpcyB0byBOZXdPYmplY3QgaWYgdGhlIHByb3RvdHlw
ZSBvYmplY3QgaXMgcHJvdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggODgyNGE4MTI4MDk0OGM3MjNiNDYw
ZTQ3MTljNmZlYzdiZDNlNGMwMS4uMWVmMWFlNWNiMDE2NjI1ZjgyNWIzN2JlZjcwMjY5YjA0MDY1
N2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIxLDYgKzUyMSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBlbWl0Tm9kZUluVGFpbFBvc2l0aW9uKG51bGxwdHIsIG4pOwog
ICAgICAgICB9CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZUNsYXNzRWxlbWVudHMo
UHJvcGVydHlMaXN0Tm9kZSogbiwgUmVnaXN0ZXJJRCogY29uc3RydWN0b3IsIFJlZ2lzdGVySUQq
IHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5y
ZWZDb3VudCgpICYmIHByb3RvdHlwZS0+cmVmQ291bnQoKSk7CisgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIW1fdm0tPmlzU2FmZVRvUmVjdXJzZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGlmIChV
TkxJS0VMWShuLT5uZWVkc0RlYnVnSG9vaygpKSkKKyAgICAgICAgICAgICAgICBlbWl0RGVidWdI
b29rKG4pOworICAgICAgICAgICAgcmV0dXJuIG4tPmVtaXRCeXRlY29kZSgqdGhpcywgY29uc3Ry
dWN0b3IsIHByb3RvdHlwZSk7CisgICAgICAgIH0KKwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Tm9kZUZvclByb3BlcnR5KFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqIG5vZGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChub2RlLT5pc1N0cmluZygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
YTIyOGJkMDRkNTIxZjhiM2I1OTVlMjQ5Y2U3NGZjYTIzYmI3NjZmNy4uMzlmZjQ4NWIxZWVkNTQ3
N2MyMGI4MjMwZDRkNDQ2NzQyN2Q5OGRkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTA4LDEyICs1MDgsMTUgQEAg
c3RhdGljIGlubGluZSB2b2lkIGVtaXRQdXRIb21lT2JqZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGYKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoZnVuY3Rp
b24sIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaG9tZU9iamVjdFBy
aXZhdGVOYW1lKCksIGhvbWVPYmplY3QpOwogfQogCi1SZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQorUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJl
Z2lzdGVySUQqIHByb3RvdHlwZSkKIHsKICAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0
IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAgIFByb3BlcnR5TGlzdE5vZGUq
IHAgPSB0aGlzOwotICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5
Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KQorICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51
bGxwdHI7CisgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2Rl
OjpDb25zdGFudCk7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5p
c0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsK
ICAgICAgICAgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoZ2VuZXJhdG9yLCBkc3QsICpwLT5tX25v
ZGUpOworICAgIH0KIAogICAgIC8vIFdlcmUgdGhlcmUgYW55IGdldC9zZXQgcHJvcGVydGllcz8K
ICAgICBpZiAocCkgewpAQCAtNTIzLDcgKzUyNiw4IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
CiAKICAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UHJvcGVydHlOb2RlKiwgUHJvcGVydHlOb2Rl
Kj4gR2V0dGVyU2V0dGVyUGFpcjsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJp
bmdJbXBsKiwgR2V0dGVyU2V0dGVyUGFpciwgSWRlbnRpZmllclJlcEhhc2g+IEdldHRlclNldHRl
ck1hcDsKLSAgICAgICAgR2V0dGVyU2V0dGVyTWFwIG1hcDsKKyAgICAgICAgR2V0dGVyU2V0dGVy
TWFwIGluc3RhbmNlTWFwOworICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAgc3RhdGljTWFwOwogCiAg
ICAgICAgIC8vIEJ1aWxkIGEgbWFwLCBwYWlyaW5nIGdldC9zZXQgdmFsdWVzIHRvZ2V0aGVyLgog
ICAgICAgICBmb3IgKFByb3BlcnR5TGlzdE5vZGUqIHEgPSBwOyBxOyBxID0gcS0+bV9uZXh0KSB7
CkBAIC01MzgsNiArNTQyLDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKIAogICAgICAgICAg
ICAgLy8gRHVwbGljYXRlcyBhcmUgcG9zc2libGUuCiAgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJQ
YWlyIHBhaXIobm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlKj4obnVsbHB0cikpOworICAg
ICAgICAgICAgR2V0dGVyU2V0dGVyTWFwJiBtYXAgPSBub2RlLT5pc1N0YXRpY0NsYXNzUHJvcGVy
dHkoKSA/IHN0YXRpY01hcCA6IGluc3RhbmNlTWFwOwogICAgICAgICAgICAgR2V0dGVyU2V0dGVy
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLmFkZChub2RlLT5uYW1lKCktPmltcGwoKSwgcGFp
cik7CiAgICAgICAgICAgICBhdXRvJiByZXN1bHRQYWlyID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKQEAgLTU1NSw2ICs1NjAs
NyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhl
IHJlbWFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBsaXN0LgogICAgICAgICBmb3IgKDsgcDsgcCA9
IHAtPm1fbmV4dCkgewogICAgICAgICAgICAgUHJvcGVydHlOb2RlKiBub2RlID0gcC0+bV9ub2Rl
OworICAgICAgICAgICAgZHN0ID0gbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHBy
b3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CiAKICAgICAgICAgICAgIC8vIEhhbmRsZSByZWd1
bGFyIHZhbHVlcy4KICAgICAgICAgICAgIGlmIChub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6
OkNvbnN0YW50KSB7CkBAIC01OTUsNiArNjAxLDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGdldC9zZXQgcHJvcGVy
dHkgcGFpci4KKyAgICAgICAgICAgIEdldHRlclNldHRlck1hcCYgbWFwID0gbm9kZS0+aXNTdGF0
aWNDbGFzc1Byb3BlcnR5KCkgPyBzdGF0aWNNYXAgOiBpbnN0YW5jZU1hcDsKICAgICAgICAgICAg
IEdldHRlclNldHRlck1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChub2RlLT5uYW1lKCktPmlt
cGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKICAgICAgICAgICAg
IEdldHRlclNldHRlclBhaXImIHBhaXIgPSBpdC0+dmFsdWU7CkBAIC02MzksNyArNjQ2LDcgQEAg
UmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBk
c3Q7CisgICAgcmV0dXJuIGRzdE9yQ29uc3RydWN0b3I7CiB9CiAKIHZvaWQgUHJvcGVydHlMaXN0
Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCkBAIC0zOTUxLDExICsz
OTU4LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3Bl
cnR5TmFtZXMucHJvdG90eXBlKTsKICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0
eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdldCgpLCBwcm90b3R5
cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9zaXRpb24pOwogCi0gICAgaWYgKG1f
c3RhdGljTWV0aG9kcykKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdl
dCgpLCBtX3N0YXRpY01ldGhvZHMpOwotCi0gICAgaWYgKG1faW5zdGFuY2VNZXRob2RzKQotICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUocHJvdG90eXBlLmdldCgpLCBtX2luc3RhbmNlTWV0aG9k
cyk7CisgICAgaWYgKG1fY2xhc3NFbGVtZW50cykKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZp
bmVDbGFzc0VsZW1lbnRzKG1fY2xhc3NFbGVtZW50cywgY29uc3RydWN0b3IuZ2V0KCksIHByb3Rv
dHlwZS5nZXQoKSk7CiAKICAgICBpZiAoIW1fbmFtZS5pc051bGwoKSkgewogICAgICAgICBWYXJp
YWJsZSBjbGFzc05hbWVWYXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9uYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggODYxZjBjZjcwNmYwNDBiMzE4
ODUzN2E5YWZlZWExMWI4YmUzMzJkZS4uNWM2ZGQzMzE5OGNhMmY5NDUwNTM1OGNkZjk0YjYwNWM5
YmU3ZTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAg
LTM5NywxMCArMzk3LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBDbGFzc0V4cHJOb2RlKiBj
cmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFy
c2VyQ2xhc3NJbmZvPEFTVEJ1aWxkZXI+JiBjbGFzc0luZm8sIFZhcmlhYmxlRW52aXJvbm1lbnQm
IGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvciwKLSAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIHBhcmVudENsYXNzLCBQcm9wZXJ0eUxpc3ROb2RlKiBpbnN0YW5jZU1l
dGhvZHMsIFByb3BlcnR5TGlzdE5vZGUqIHN0YXRpY01ldGhvZHMpCisgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBwYXJlbnRDbGFzcywgUHJvcGVydHlMaXN0Tm9kZSogY2xhc3NFbGVtZW50cykKICAg
ICB7CiAgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNz
aW9uKGNsYXNzSW5mby5zdGFydE9mZnNldCwgY2xhc3NJbmZvLmVuZE9mZnNldCwgY2xhc3NJbmZv
LnN0YXJ0TGluZSwgY2xhc3NJbmZvLnN0YXJ0Q29sdW1uKTsKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgQ2xhc3NFeHByTm9kZShsb2NhdGlvbiwgKmNsYXNzSW5mby5jbGFzc05h
bWUsIHNvdXJjZSwgY2xhc3NFbnZpcm9ubWVudCwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBp
bnN0YW5jZU1ldGhvZHMsIHN0YXRpY01ldGhvZHMpOworICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBDbGFzc0V4cHJOb2RlKGxvY2F0aW9uLCAqY2xhc3NJbmZvLmNsYXNzTmFtZSwg
c291cmNlLCBjbGFzc0Vudmlyb25tZW50LCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNz
RWxlbWVudHMpOwogICAgIH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCkBAIC00NzAsNyArNDcwLDcgQEAgcHVibGlj
OgogICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lvbk5v
ZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBcmd1bWVudExpc3ROb2RlKGxv
Y2F0aW9uLCBhcmdzLCBhcmcpOyB9CiAKICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBj
cmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sLAotICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9u
SW5mbywgYm9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG5h
bWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBD
bGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAg
ICBmdW5jdGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0
aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0KTsKQEAgLTQ3OCwzMCArNDc4LDMwIEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3Rpb25J
bmZvLmJvZHktPnNldEluZmVycmVkTmFtZSgqbmFtZSk7CiAgICAgICAgIFNvdXJjZUNvZGUgc291
cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNl
dCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rp
b25JbmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbik7CiAgICAgICAgIE1ldGhvZERlZmluaXRpb25O
b2RlKiBtZXRob2REZWYgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIE1ldGhvZERlZmluaXRpb25Ob2Rl
KGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgZnVuY3Rpb25J
bmZvLmJvZHksIHNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBy
b3BlcnR5Tm9kZSgqbmFtZSwgbWV0aG9kRGVmLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24s
IFN1cGVyQmluZGluZzo6TmVlZGVkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUoKm5hbWUsIG1ldGhvZERlZiwgdHlwZSwg
UHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsKICAgICB9
CiAKICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBib29sLAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbmFtZSwgY29uc3QgUGFyc2Vy
RnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIGJvb2wgaXNDbGFzc1Byb3Bl
cnR5KQorICAgICAgICBFeHByZXNzaW9uTm9kZSogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAg
ewogICAgICAgICBBU1NFUlQobmFtZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRM
b2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9u
LnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBTb3VyY2VD
b2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3Rh
cnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUs
IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzU3RhcnRDb2x1bW4pOwogICAgICAgICBNZXRob2REZWZp
bml0aW9uTm9kZSogbWV0aG9kRGVmID0gbmV3IChtX3BhcnNlckFyZW5hKSBNZXRob2REZWZpbml0
aW9uTm9kZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGZ1
bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBQcm9wZXJ0eU5vZGUobmFtZSwgbWV0aG9kRGVmLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVu
a25vd24sIFN1cGVyQmluZGluZzo6TmVlZGVkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUobmFtZSwgbWV0aG9kRGVmLCB0
eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwog
ICAgIH0KIAogICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sLAotICAg
ICAgICBkb3VibGUgbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBm
dW5jdGlvbkluZm8sIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgICAgICBkb3VibGUgbmFtZSwg
Y29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIENsYXNz
RWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0TG9j
KGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlvbi5z
dGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBwYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJp
Y0lkZW50aWZpZXIodm0sIG5hbWUpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291
cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9u
SW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5wYXJh
bWV0ZXJzU3RhcnRDb2x1bW4pOwogICAgICAgICBNZXRob2REZWZpbml0aW9uTm9kZSogbWV0aG9k
RGVmID0gbmV3IChtX3BhcnNlckFyZW5hKSBNZXRob2REZWZpbml0aW9uTm9kZShsb2NhdGlvbiwg
dm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBmdW5jdGlvbkluZm8uYm9keSwgc291
cmNlKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKGlk
ZW50LCBtZXRob2REZWYsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5n
OjpOZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFByb3BlcnR5Tm9kZShpZGVudCwgbWV0aG9kRGVmLCB0eXBlLCBQcm9wZXJ0eU5vZGU6
OlVua25vd24sIFN1cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwogICAgIH0KIAotICAgIFByb3Bl
cnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBF
eHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9k
ZTo6UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBJbmZl
ck5hbWUgaW5mZXJOYW1lLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICBQcm9wZXJ0eU5vZGUq
IGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lv
bk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5
cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgSW5mZXJOYW1lIGlu
ZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7CiAgICAgICAgIGlmIChpbmZlck5h
bWUgPT0gSW5mZXJOYW1lOjpBbGxvd2VkKSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNCYXNl
RnVuY0V4cHJOb2RlKCkpIHsKQEAgLTUxMSwxNyArNTExLDE3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAobm9kZS0+aXNDbGFzc0V4cHJOb2RlKCkpCiAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Q2xhc3NFeHByTm9kZSo+KG5vZGUpLT5zZXRFY21hTmFtZSgqcHJvcGVydHlO
YW1lKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9w
ZXJ0eU5vZGUoKnByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5n
LCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQ
cm9wZXJ0eU5vZGUoKnByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5k
aW5nLCB0YWcpOwogICAgIH0KLSAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJl
c3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQ
dXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIGJvb2wgaXND
bGFzc1Byb3BlcnR5KQorICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoRXhwcmVzc2lv
bk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5
cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50
VGFnIHRhZykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3Bl
cnR5Tm9kZShub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIGlzQ2xhc3NQcm9wZXJ0
eSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShub2Rl
LCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CiAgICAgfQotICAgIFByb3BlcnR5
Tm9kZSogY3JlYXRlUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRv
dWJsZSBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgIFByb3BlcnR5Tm9kZSog
Y3JlYXRlUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBw
cm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUocGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5h
KCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBwcm9wZXJ0eU5hbWUpLCBub2RlLCB0eXBlLCBw
dXRUeXBlLCBzdXBlckJpbmRpbmcsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShwYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJl
bmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIHByb3BlcnR5TmFtZSksIG5vZGUsIHR5cGUs
IHB1dFR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsKICAgICB9Ci0gICAgUHJvcGVydHlOb2RlKiBj
cmVhdGVQcm9wZXJ0eShFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9k
ZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBw
dXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9w
ZXJ0eSkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUocHJvcGVydHlO
YW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIGlzQ2xhc3NQcm9wZXJ0eSk7
IH0KKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJlc3Npb25Ob2RlKiBwcm9w
ZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwg
UHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
UHJvcGVydHlOb2RlKHByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5k
aW5nLCB0YWcpOyB9CiAgICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZSogcHJvcGVydHkpIHsg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlMaXN0Tm9kZShsb2NhdGlvbiwgcHJv
cGVydHkpOyB9CiAgICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZSogcHJvcGVydHksIFByb3Bl
cnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlM
aXN0Tm9kZShsb2NhdGlvbiwgcHJvcGVydHksIHRhaWwpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggMGEwNzk3ZTU4ZTI2Yjkw
MTA0MDFiZTFhMGVkNWUzZDE5ODVhODQ0MS4uZTZmMDNiNjViNzVkMDAyNTJmMDQzZWM5OTMxZmJi
YTUwNGI5M2NkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgKQEAgLTI0MiwzNiArMjQyLDM2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBl
IHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5
KQorICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBFeHByZXNzaW9uTm9kZSogYXNzaWduLCBUeXBlIHR5cGUsIFB1dFR5cGUgcHV0VHlw
ZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICAg
ICAgOiBtX25hbWUoJm5hbWUpCiAgICAgICAgICwgbV9hc3NpZ24oYXNzaWduKQogICAgICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5n
ID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQot
ICAgICAgICAsIG1faXNDbGFzc1Byb3BlcnR5KGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICAgICAgLCBt
X2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAgICAgLCBt
X2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCi0gICAg
aW5saW5lIFByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24s
IFR5cGUgdHlwZSwgUHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBi
b29sIGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5v
ZGUoRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5cGUsIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgICAgIDog
bV9uYW1lKG51bGxwdHIpCiAgICAgICAgICwgbV9hc3NpZ24oYXNzaWduKQogICAgICAgICAsIG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nID09
IFN1cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQotICAg
ICAgICAsIG1faXNDbGFzc1Byb3BlcnR5KGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICAgICAgLCBtX2Ns
YXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAgICAgLCBtX2lz
T3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqIG5hbWUsIEV4cHJlc3Np
b25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSwgUHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICBpbmxpbmUgUHJvcGVydHlO
b2RlOjpQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBh
c3NpZ24sIFR5cGUgdHlwZSwgUHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgICAgICA6IG1fbmFtZShudWxscHRyKQogICAg
ICAgICAsIG1fZXhwcmVzc2lvbihuYW1lKQogICAgICAgICAsIG1fYXNzaWduKGFzc2lnbikKICAg
ICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1cGVy
QmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKICAgICAgICAgLCBtX3B1dFR5cGUocHV0
VHlwZSkKLSAgICAgICAgLCBtX2lzQ2xhc3NQcm9wZXJ0eShpc0NsYXNzUHJvcGVydHkpCisgICAg
ICAgICwgbV9jbGFzc0VsZW1lbnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAg
ICAgICwgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7CiAgICAgfQpAQCAt
OTkzLDcgKzk5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgQ2xhc3NFeHByTm9kZTo6Q2xhc3NFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1Nv
dXJjZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhwcmVzc2lvbk5v
ZGUqIGNvbnN0cnVjdG9yRXhwcmVzc2lvbiwgRXhwcmVzc2lvbk5vZGUqIGNsYXNzSGVyaXRhZ2Us
IFByb3BlcnR5TGlzdE5vZGUqIGluc3RhbmNlTWV0aG9kcywgUHJvcGVydHlMaXN0Tm9kZSogc3Rh
dGljTWV0aG9kcykKKyAgICBpbmxpbmUgQ2xhc3NFeHByTm9kZTo6Q2xhc3NFeHByTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25z
dCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgY2xhc3NFbnZp
cm9ubWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9yRXhwcmVzc2lvbiwgRXhwcmVzc2lv
bk5vZGUqIGNsYXNzSGVyaXRhZ2UsIFByb3BlcnR5TGlzdE5vZGUqIGNsYXNzRWxlbWVudHMpCiAg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVmFyaWFibGVFbnZp
cm9ubWVudE5vZGUoY2xhc3NFbnZpcm9ubWVudCkKICAgICAgICAgLCBtX2NsYXNzU291cmNlKGNs
YXNzU291cmNlKQpAQCAtMTAwMSw4ICsxMDAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICwgbV9lY21hTmFtZSgmbmFtZSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbihj
b25zdHJ1Y3RvckV4cHJlc3Npb24pCiAgICAgICAgICwgbV9jbGFzc0hlcml0YWdlKGNsYXNzSGVy
aXRhZ2UpCi0gICAgICAgICwgbV9pbnN0YW5jZU1ldGhvZHMoaW5zdGFuY2VNZXRob2RzKQotICAg
ICAgICAsIG1fc3RhdGljTWV0aG9kcyhzdGF0aWNNZXRob2RzKQorICAgICAgICAsIG1fY2xhc3NF
bGVtZW50cyhjbGFzc0VsZW1lbnRzKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggODVjMzFhMzJjYjlkOWM4ODY2YjUxZTY3ZTc3ZGNiMDg5
NDMxNTg0Ni4uNGJiMDVmM2ZlMzJkYWZlMzg0MDIwZjc0NDA0MjRmNmZlODE1NGQzYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTI0OCw5ICsyNDgsMTEgQEAgYm9v
bCBQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0eShjb25zdCBJZGVu
dGlmaWVyJiBwcm9wTmFtZSkKIHsKICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0ID0gdGhpczsK
ICAgICB3aGlsZSAobGlzdCkgewotICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBjdXJyZW50Tm9k
ZU5hbWUgPSBsaXN0LT5tX25vZGUtPm5hbWUoKTsKLSAgICAgICAgaWYgKGN1cnJlbnROb2RlTmFt
ZSAmJiAqY3VycmVudE5vZGVOYW1lID09IHByb3BOYW1lKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzU3RhdGljQ2xhc3NQcm9wZXJ0eSgpKSB7
CisgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBjdXJyZW50Tm9kZU5hbWUgPSBsaXN0LT5t
X25vZGUtPm5hbWUoKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50Tm9kZU5hbWUgJiYgKmN1cnJl
bnROb2RlTmFtZSA9PSBwcm9wTmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQogICAgICAgICBsaXN0ID0gbGlzdC0+bV9uZXh0OwogICAgIH0KICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMzJhNjBlYTU0NmE2
NTIyODEzODUzOTdkMTg5MjYzMDQxYjhlNDBhMS4uNmMwZjJkYmQwYzExYWRiNDJjMGRlYzY5ZTRk
MGRlZTFhZGM3MWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNjk1
LDIxICs2OTUsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9vcHRpb25hbDsK
ICAgICB9OwogCisgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgeyBObywgSW5zdGFuY2Us
IFN0YXRpYywgTGFzdFRhZyB9OwogICAgIGNsYXNzIFByb3BlcnR5Tm9kZSA6IHB1YmxpYyBQYXJz
ZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gVHlwZSB7IENvbnN0
YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQg
PSAxNiwgU3ByZWFkID0gMzIgfTsKICAgICAgICAgZW51bSBQdXRUeXBlIHsgVW5rbm93biwgS25v
d25EaXJlY3QgfTsKIAotICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4
cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQ
cm9wZXJ0eSk7Ci0gICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1
dFR5cGUsIFN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJvcGVydHkpOwotICAgICAgICBQcm9w
ZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqLCBU
eXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAg
ICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUs
IFB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKKyAgICAgICAgUHJvcGVy
dHlOb2RlKEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFz
c0VsZW1lbnRUYWcpOworICAgICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqIHByb3Bl
cnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENs
YXNzRWxlbWVudFRhZyk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb25OYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAogICAgICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAgICAgICAgIGJv
b2wgbmVlZHNTdXBlckJpbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU3VwZXJCaW5kaW5n
OyB9Ci0gICAgICAgIGJvb2wgaXNDbGFzc1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9pc0Ns
YXNzUHJvcGVydHk7IH0KKyAgICAgICAgYm9vbCBpc0NsYXNzUHJvcGVydHkoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxDbGFzc0VsZW1lbnRUYWc+KG1fY2xhc3NFbGVtZW50VGFnKSAhPSBD
bGFzc0VsZW1lbnRUYWc6Ok5vOyB9CisgICAgICAgIGJvb2wgaXNTdGF0aWNDbGFzc1Byb3BlcnR5
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q2xhc3NFbGVtZW50VGFnPihtX2NsYXNzRWxl
bWVudFRhZykgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWM7IH0KKyAgICAgICAgYm9vbCBpc0lu
c3RhbmNlQ2xhc3NQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENsYXNzRWxl
bWVudFRhZz4obV9jbGFzc0VsZW1lbnRUYWcpID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2U7
IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRk
ZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KICAg
ICAgICAgUHV0VHlwZSBwdXRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHV0VHlw
ZT4obV9wdXRUeXBlKTsgfQpAQCAtNzIyLDcgKzcyNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB1bnNpZ25lZCBtX3R5cGUgOiA2OwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJC
aW5kaW5nIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRUeXBlIDogMTsKLSAgICAgICAgdW5z
aWduZWQgbV9pc0NsYXNzUHJvcGVydHk6IDE7CisgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAy
ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFz
c0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKKyAgICAgICAg
dW5zaWduZWQgbV9jbGFzc0VsZW1lbnRUYWcgOiAyOwogICAgICAgICB1bnNpZ25lZCBtX2lzT3Zl
cnJpZGRlbkJ5RHVwbGljYXRlOiAxOwogICAgIH07CiAKQEAgLTczMyw4ICs3MzcsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0eShj
b25zdCBJZGVudGlmaWVyJiBwcm9wTmFtZSk7CiAKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqKTsKKwog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QgPSBudWxscHRyKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZW1p
dEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0LCBudWxscHRyKTsKKyAgICAgICAgfQogICAgICAgICB2
b2lkIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCosIFByb3BlcnR5Tm9kZSYpOwogCiAgICAgICAgIFByb3BlcnR5Tm9kZSogbV9ub2RlOwpAQCAt
MjEzOSwxMyArMjE0OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IENsYXNzRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLAogICAgICAgICAgICAgVmFyaWFibGVFbnZp
cm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVjdG9yRXhw
cmVzc3Npb24sCi0gICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogcGFyZW50Q2xhc3MsIFByb3Bl
cnR5TGlzdE5vZGUqIGluc3RhbmNlTWV0aG9kcywgUHJvcGVydHlMaXN0Tm9kZSogc3RhdGljTWV0
aG9kcyk7CisgICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogcGFyZW50Q2xhc3MsIFByb3BlcnR5
TGlzdE5vZGUqIGNsYXNzRWxlbWVudHMpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5h
bWUoKSB7IHJldHVybiBtX25hbWU7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgZWNtYU5h
bWUoKSB7IHJldHVybiBtX2VjbWFOYW1lID8gKm1fZWNtYU5hbWUgOiBtX25hbWU7IH0KICAgICAg
ICAgdm9pZCBzZXRFY21hTmFtZShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7IG1fZWNtYU5hbWUg
PSBtX25hbWUuaXNOdWxsKCkgPyAmbmFtZSA6ICZtX25hbWU7IH0KIAotICAgICAgICBib29sIGhh
c1N0YXRpY1Byb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BOYW1lKSB7IHJldHVybiBtX3N0
YXRpY01ldGhvZHMgPyBtX3N0YXRpY01ldGhvZHMtPmhhc1N0YXRpY2FsbHlOYW1lZFByb3BlcnR5
KHByb3BOYW1lKSA6IGZhbHNlOyB9CisgICAgICAgIGJvb2wgaGFzU3RhdGljUHJvcGVydHkoY29u
c3QgSWRlbnRpZmllciYgcHJvcE5hbWUpIHsgcmV0dXJuIG1fY2xhc3NFbGVtZW50cyA/IG1fY2xh
c3NFbGVtZW50cy0+aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHkocHJvcE5hbWUpIDogZmFsc2U7
IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC0yMTU3LDggKzIx
NjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9lY21h
TmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fY29uc3RydWN0b3JFeHByZXNzaW9uOwog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9jbGFzc0hlcml0YWdlOwotICAgICAgICBQcm9wZXJ0
eUxpc3ROb2RlKiBtX2luc3RhbmNlTWV0aG9kczsKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZSog
bV9zdGF0aWNNZXRob2RzOworICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBtX2NsYXNzRWxlbWVu
dHM7CiAgICAgfTsKIAogICAgIGNsYXNzIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSA6IHB1Ymxp
YyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCA3MjU0M2ZkNWM0ZjBhNTQ1NjJlYzVkMDJmODk4YjJjNzdjNDA3ZDA0Li42ZmEz
YWQxZmE3NjJjNTUwZTk3ZmU3YzRhYTkyOWY4NTA2MGYzYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNzk1LDEwICsyNzk1LDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUNsYXNzKFQKICAgICBjb25zdW1lT3JGYWlsKE9QRU5CUkFDRSwgIkV4cGVjdGVkIG9wZW5p
bmcgJ3snIGF0IHRoZSBzdGFydCBvZiBhIGNsYXNzIGJvZHkiKTsKIAogICAgIFRyZWVFeHByZXNz
aW9uIGNvbnN0cnVjdG9yID0gMDsKLSAgICBUcmVlUHJvcGVydHlMaXN0IHN0YXRpY01ldGhvZHMg
PSAwOwotICAgIFRyZWVQcm9wZXJ0eUxpc3QgaW5zdGFuY2VNZXRob2RzID0gMDsKLSAgICBUcmVl
UHJvcGVydHlMaXN0IGluc3RhbmNlTWV0aG9kc1RhaWwgPSAwOwotICAgIFRyZWVQcm9wZXJ0eUxp
c3Qgc3RhdGljTWV0aG9kc1RhaWwgPSAwOworICAgIFRyZWVQcm9wZXJ0eUxpc3QgY2xhc3NFbGVt
ZW50cyA9IDA7CisgICAgVHJlZVByb3BlcnR5TGlzdCBjbGFzc0VsZW1lbnRzVGFpbCA9IDA7CiAg
ICAgd2hpbGUgKCFtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBpZiAobWF0Y2goU0VNSUNP
TE9OKSkgewogICAgICAgICAgICAgbmV4dCgpOwpAQCAtMjgwOSw3ICsyODA3LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNsYXNzKFQKICAgICAgICAgdW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0
YXJ0KCk7CiAKICAgICAgICAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCAic3RhdGlj
IiBpcyBhIG5vbi1yZXNlcnZlZCBrZXl3b3JkIGluIG5vbi1zdHJpY3QgbW9kZS4KLSAgICAgICAg
Ym9vbCBpc1N0YXRpY01ldGhvZCA9IGZhbHNlOworICAgICAgICBDbGFzc0VsZW1lbnRUYWcgdGFn
ID0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZTsKICAgICAgICAgaWYgKG1hdGNoKFJFU0VSVkVE
X0lGX1NUUklDVCkgJiYgKm1fdG9rZW4ubV9kYXRhLmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPnN0YXRpY0tleXdvcmQpIHsKICAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBj
cmVhdGVTYXZlUG9pbnQoKTsKICAgICAgICAgICAgIG5leHQoKTsKQEAgLTI4MTcsNyArMjgxNSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgICAgICAgICAgICAgLy8gUmVwYXJzZSAi
c3RhdGljKCkiIGFzIGEgbWV0aG9kIG5hbWVkICJzdGF0aWMiLgogICAgICAgICAgICAgICAgIHJl
c3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIGlzU3RhdGljTWV0aG9kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0YWcgPSBDbGFz
c0VsZW1lbnRUYWc6OlN0YXRpYzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBGaWd1
cmUgb3V0IGEgd2F5IHRvIHNoYXJlIG1vcmUgY29kZSB3aXRoIHBhcnNlUHJvcGVydHkuCkBAIC0y
ODgzLDEzICsyODgxLDEyIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICBUcmVlUHJvcGVydHkgcHJv
cGVydHk7CiAgICAgICAgIGNvbnN0IGJvb2wgYWx3YXlzU3RyaWN0SW5zaWRlQ2xhc3MgPSB0cnVl
OwogICAgICAgICBpZiAoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIpIHsKLSAgICAgICAgICAgIGJvb2wg
aXNDbGFzc1Byb3BlcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VHZXR0
ZXJTZXR0ZXIoY29udGV4dCwgYWx3YXlzU3RyaWN0SW5zaWRlQ2xhc3MsIGlzR2V0dGVyID8gUHJv
cGVydHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRlciwKLSAgICAgICAgICAgICAg
ICBtZXRob2RTdGFydCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBpc0NsYXNzUHJvcGVydHksIGlz
U3RhdGljTWV0aG9kKTsKKyAgICAgICAgICAgICAgICBtZXRob2RTdGFydCwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCB0YWcpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5u
b3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsKLSAgICAgICAgICAgIGJv
b2wgaXNDb25zdHJ1Y3RvciA9ICFpc1N0YXRpY01ldGhvZCAmJiAqaWRlbnQgPT0gcHJvcGVydHlO
YW1lcy5jb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9IHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNv
bnN0cnVjdG9yOwogICAgICAgICAgICAgaWYgKGlzQXN5bmNNZXRob2RQYXJzZU1vZGUocGFyc2VN
b2RlKSB8fCBpc0FzeW5jR2VuZXJhdG9yTWV0aG9kUGFyc2VNb2RlKHBhcnNlTW9kZSkgfHwgaXNH
ZW5lcmF0b3JNZXRob2RQYXJzZU1vZGUocGFyc2VNb2RlKSkgewogICAgICAgICAgICAgICAgIGlz
Q29uc3RydWN0b3IgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgIkNhbm5vdCBkZWNsYXJl
ICIsIHN0cmluZ0FydGljbGVGb3JGdW5jdGlvbk1vZGUocGFyc2VNb2RlKSwgc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKHBhcnNlTW9kZSksICIgbmFtZWQgJ3Byb3RvdHlwZSciKTsKQEAgLTI5MDcsMzUg
KzI5MDQsMjggQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IEZJWE1FOiBTeW50YXggZXJyb3Igd2hlbiBzdXBlcigpIGlzIGNhbGxlZAotICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKGlzU3RhdGljTWV0aG9kICYmIG1ldGhvZEluZm8ubmFtZSAmJiAq
bWV0aG9kSW5mby5uYW1lID09IHByb3BlcnR5TmFtZXMucHJvdG90eXBlLAorICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYyAmJiBtZXRo
b2RJbmZvLm5hbWUgJiYgKm1ldGhvZEluZm8ubmFtZSA9PSBwcm9wZXJ0eU5hbWVzLnByb3RvdHlw
ZSwKICAgICAgICAgICAgICAgICAiQ2Fubm90IGRlY2xhcmUgYSBzdGF0aWMgbWV0aG9kIG5hbWVk
ICdwcm90b3R5cGUnIik7CiAKLSAgICAgICAgICAgIGJvb2wgaXNDbGFzc1Byb3BlcnR5ID0gdHJ1
ZTsKICAgICAgICAgICAgIGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAg
ICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShjb21wdXRlZFByb3BlcnR5TmFt
ZSwgbWV0aG9kLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6
Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwKLSAgICAgICAgICAgICAgICAgICAg
UHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcywgU3VwZXJCaW5k
aW5nOjpOZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIFByb3Bl
cnR5Tm9kZTo6VW5rbm93biwgYWx3YXlzU3RyaWN0SW5zaWRlQ2xhc3MsIFN1cGVyQmluZGluZzo6
TmVlZGVkLCB0YWcpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkobWV0aG9kSW5mby5uYW1lLCBtZXRob2QsIFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQsCi0gICAgICAgICAgICAgICAgICAgIFByb3BlcnR5Tm9kZTo6
VW5rbm93biwgYWx3YXlzU3RyaWN0SW5zaWRlQ2xhc3MsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBJ
bmZlck5hbWU6OkFsbG93ZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAg
IFByb3BlcnR5Tm9kZTo6VW5rbm93biwgYWx3YXlzU3RyaWN0SW5zaWRlQ2xhc3MsIFN1cGVyQmlu
ZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIHRhZyk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICBUcmVlUHJvcGVydHlMaXN0JiB0YWlsID0gaXNTdGF0aWNNZXRo
b2QgPyBzdGF0aWNNZXRob2RzVGFpbCA6IGluc3RhbmNlTWV0aG9kc1RhaWw7Ci0gICAgICAgIGlm
ICh0YWlsKQotICAgICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1l
dGhvZExvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1ldGhvZExvY2F0aW9uLCBwcm9w
ZXJ0eSk7Ci0gICAgICAgICAgICBpZiAoaXNTdGF0aWNNZXRob2QpCi0gICAgICAgICAgICAgICAg
c3RhdGljTWV0aG9kcyA9IHRhaWw7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
aW5zdGFuY2VNZXRob2RzID0gdGFpbDsKLSAgICAgICAgfQorICAgICAgICBpZiAoY2xhc3NFbGVt
ZW50c1RhaWwpCisgICAgICAgICAgICBjbGFzc0VsZW1lbnRzVGFpbCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KG1ldGhvZExvY2F0aW9uLCBwcm9wZXJ0eSwgY2xhc3NFbGVtZW50c1RhaWwp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbGFzc0VsZW1lbnRzID0gY2xhc3NFbGVtZW50
c1RhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtZXRob2RMb2NhdGlvbiwgcHJvcGVy
dHkpOwogICAgIH0KIAogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9m
ZnNldCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9z
aW5nICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAotICAgIGF1dG8gY2xhc3NFeHByZXNzaW9u
ID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGluZm8sIGNsYXNzU2NvcGUtPmZp
bmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywgaW5z
dGFuY2VNZXRob2RzLCBzdGF0aWNNZXRob2RzKTsKKyAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9
IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5h
bGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNz
RWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0Zy
ZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CiB9CkBAIC0zODk4
LDggKzM4ODgsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eShUcmVlQgogewogICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7CiAgICAgYm9vbCB3
YXNJZGVudCA9IGZhbHNlOwotICAgIGJvb2wgaXNDbGFzc1Byb3BlcnR5ID0gZmFsc2U7Ci0gICAg
Ym9vbCBpc1N0YXRpY01ldGhvZCA9IGZhbHNlOwogCiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQog
ICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRo
b2RNb2RlOwpAQCAtMzk0OCwxMyArMzkzNiwxMyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICAg
ICAgZmFpbElmRmFsc2Uobm9kZSwgIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGZvciBwcm9wZXJ0
eSBkZWNsYXJhdGlvbiIpOwogICAgICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9kZSwg
bV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICAgICAgICAgIEluZmVyTmFtZSBpbmZlck5h
bWUgPSBpZGVudCAmJiAqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVBy
b3RvID8gSW5mZXJOYW1lOjpEaXNhbGxvd2VkIDogSW5mZXJOYW1lOjpBbGxvd2VkOwotICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG5vZGUsIFByb3BlcnR5
Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBpbmZlck5hbWUsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbm9kZSwgUHJvcGVydHlOb2Rl
OjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGluZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAgICAgYXV0byBtZXRo
b2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsIGlkZW50LCBwYXJzZU1vZGUpOwogICAg
ICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3Bl
cnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5m
ZXJOYW1lOjpBbGxvd2VkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFu
dCwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6TmVl
ZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgICAgICB9
CiAgICAgICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZSwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QiKTsKIApAQCAt
Mzk2OCw3ICszOTU2LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgICAgIGlmIChjdXJyZW50
U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICAgICAgY3VycmVudFNjb3Bl
KCktPnNldElubmVyQXJyb3dGdW5jdGlvblVzZXNFdmFsKCk7CiAgICAgICAgICAgICBUcmVlRXhw
cmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCAqaWRlbnQsIHN0
YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5
cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OlNob3J0aGFuZCksIFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG5vZGUsIHN0YXRpY19jYXN0PFByb3Bl
cnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6U2hv
cnRoYW5kKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29tcGxldGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hdGNoKEVRVUFMKSkgLy8gQ292ZXJJbml0aWFsaXpl
ZE5hbWUgaXMgZXhjbHVzaXZlIHRvIEJpbmRpbmdQYXR0ZXJuIGFuZCBBc3NpZ25tZW50UGF0dGVy
bgpAQCAtMzk4MSw3ICszOTY5LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgICAgIHR5cGUg
PSBQcm9wZXJ0eU5vZGU6OlNldHRlcjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZmFpbFdp
dGhNZXNzYWdlKCJFeHBlY3RlZCBhICc6JyBmb2xsb3dpbmcgdGhlIHByb3BlcnR5IG5hbWUgJyIs
IGlkZW50LT5pbXBsKCksICInIik7Ci0gICAgICAgIHJldHVybiBwYXJzZUdldHRlclNldHRlcihj
b250ZXh0LCBjb21wbGV0ZSwgdHlwZSwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBpc0NsYXNzUHJvcGVydHksIGlzU3RhdGljTWV0aG9kKTsKKyAgICAg
ICAgcmV0dXJuIHBhcnNlR2V0dGVyU2V0dGVyKGNvbnRleHQsIGNvbXBsZXRlLCB0eXBlLCBnZXR0
ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIENsYXNzRWxlbWVu
dFRhZzo6Tm8pOwogICAgIH0KICAgICBjYXNlIERPVUJMRToKICAgICBjYXNlIElOVEVHRVI6IHsK
QEAgLTM5OTIsNyArMzk4MCw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCA9IG1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51
bWVyaWNJZGVudGlmaWVyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChjb250ZXh0LCAmaWRl
bnQsIHBhcnNlTW9kZSk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwotICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoJmlkZW50LCBtZXRob2QsIFByb3BlcnR5
Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmlu
ZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eSgmaWRlbnQsIG1ldGhvZCwgUHJv
cGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpO
byk7CiAgICAgICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZShwYXJzZU1vZGUgIT0gU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlLCAiRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQg
bGlzdCIpOwogCkBAIC00MDAwLDcgKzM5ODgsNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICBU
cmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsK
ICAgICAgICAgZmFpbElmRmFsc2Uobm9kZSwgIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGZvciBw
cm9wZXJ0eSBkZWNsYXJhdGlvbiIpOwogICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChub2Rl
LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVQcm9wZXJ0eShjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIHByb3BlcnR5
TmFtZSwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3du
LCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3Zt
KSwgbV9wYXJzZXJBcmVuYSwgcHJvcGVydHlOYW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgfQogICAgIGNhc2UgT1BFTkJSQUNLRVQ6
IHsKICAgICAgICAgbmV4dCgpOwpAQCAtNDAxMSw3ICszOTk5LDcgQEAgbmFtZWRQcm9wZXJ0eToK
ICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgIGF1dG8gbWV0aG9k
ID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChjb250ZXh0LCAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVs
bElkZW50aWZpZXIsIHBhcnNlTW9kZSk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkocHJvcGVydHlOYW1lLCBt
ZXRob2QsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25z
dGFudCB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0
LCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG1ldGhv
ZCwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50
IHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNv
bXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAg
ICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZShwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpN
ZXRob2RNb2RlLCAiRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdCIpOwog
CkBAIC00MDE5LDcgKzQwMDcsNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICBUcmVlRXhwcmVz
c2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
ZmFpbElmRmFsc2Uobm9kZSwgIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGZvciBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbiIpOwogICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChub2RlLCBtX2xleGVy
LT5jdXJyZW50T2Zmc2V0KCkpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0
eShwcm9wZXJ0eU5hbWUsIG5vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4oUHJv
cGVydHlOb2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLCBQcm9wZXJ0eU5v
ZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaXNDbGFzc1By
b3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkocHJvcGVydHlO
YW1lLCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6
Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlOb2RlOjpVbmtub3du
LCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8p
OwogICAgIH0KICAgICBjYXNlIERPVERPVERPVDogewogICAgICAgICBpZiAobV91c2VPYmplY3RS
ZXN0U3ByZWFkKSB7CkBAIC00MDMwLDcgKzQwMTgsNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAg
ICAgICAgVHJlZUV4cHJlc3Npb24gZWxlbSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb25PclBy
b3BhZ2F0ZUVycm9yQ2xhc3MoY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShlbGVt
LCAiQ2Fubm90IHBhcnNlIHN1YmplY3Qgb2YgYSBzcHJlYWQgb3BlcmF0aW9uIik7CiAgICAgICAg
ICAgICBhdXRvIG5vZGUgPSBjb250ZXh0LmNyZWF0ZU9iamVjdFNwcmVhZEV4cHJlc3Npb24oc3By
ZWFkTG9jYXRpb24sIGVsZW0sIHN0YXJ0LCBkaXZvdCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbik7
Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShub2RlLCBQcm9wZXJ0
eU5vZGU6OlNwcmVhZCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eShub2RlLCBQcm9wZXJ0eU5vZGU6OlNwcmVhZCwgUHJvcGVydHlO
b2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENsYXNzRWxl
bWVudFRhZzo6Tm8pOwogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIH0KQEAg
LTQwNTUsNyArNDA0Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRoCiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9w
ZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImIGNv
bnRleHQsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgdW5zaWduZWQgZ2V0
dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSwgYm9vbCBpc1N0YXRpY01ldGhvZCkKKyAgICBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogewogICAg
IGNvbnN0IElkZW50aWZpZXIqIHN0cmluZ1Byb3BlcnR5TmFtZSA9IDA7CiAgICAgZG91YmxlIG51
bWVyaWNQcm9wZXJ0eU5hbWUgPSAwOwpAQCAtNDA2NSw5ICs0MDUzLDkgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0
dGVyU2V0dGVyKFQKIAogICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RS
SU5HKSB8fCBtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpIHsKICAgICAgICAgc3Ry
aW5nUHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7Ci0gICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZShpc0NsYXNzUHJvcGVydHkgJiYgaXNTdGF0aWNNZXRob2QgJiYgKnN0cmluZ1By
b3BlcnR5TmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsCisgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMgJiYgKnN0cmlu
Z1Byb3BlcnR5TmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsCiAgICAgICAg
ICAgICAiQ2Fubm90IGRlY2xhcmUgYSBzdGF0aWMgbWV0aG9kIG5hbWVkICdwcm90b3R5cGUnIik7
Ci0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShpc0NsYXNzUHJvcGVydHkgJiYgIWlzU3RhdGlj
TWV0aG9kICYmICpzdHJpbmdQcm9wZXJ0eU5hbWUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsCisgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50
VGFnOjpJbnN0YW5jZSAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLAogICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgZ2V0dGVyIG9y
IHNldHRlciBuYW1lZCAnY29uc3RydWN0b3InIik7CiAgICAgICAgIG5leHQoKTsKICAgICB9IGVs
c2UgaWYgKG1hdGNoKERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikpIHsKQEAgLTQwOTEsMTIgKzQw
NzksMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFQKICAgICB9CiAKICAgICBpZiAoc3RyaW5n
UHJvcGVydHlOYW1lKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRl
clByb3BlcnR5KGxvY2F0aW9uLCB0eXBlLCBzdHJpY3QsIHN0cmluZ1Byb3BlcnR5TmFtZSwgaW5m
bywgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShsb2NhdGlvbiwgdHlwZSwgc3RyaWN0LCBzdHJpbmdQcm9wZXJ0eU5h
bWUsIGluZm8sIHRhZyk7CiAKICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpCi0gICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHN0
YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0
ZWQpLCBzdHJpY3QsIGNvbXB1dGVkUHJvcGVydHlOYW1lLCBpbmZvLCBpc0NsYXNzUHJvcGVydHkp
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5v
ZGU6OkNvbXB1dGVkKSwgc3RyaWN0LCBjb21wdXRlZFByb3BlcnR5TmFtZSwgaW5mbywgdGFnKTsK
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3Rf
Y2FzdDxWTSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBsb2NhdGlvbiwgdHlwZSwgc3RyaWN0LCBu
dW1lcmljUHJvcGVydHlOYW1lLCBpbmZvLCBpc0NsYXNzUHJvcGVydHkpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3RfY2FzdDxWTSo+KG1fdm0p
LCBtX3BhcnNlckFyZW5hLCBsb2NhdGlvbiwgdHlwZSwgc3RyaWN0LCBudW1lcmljUHJvcGVydHlO
YW1lLCBpbmZvLCB0YWcpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMDgzMTIxYjQ4YzJjMjE3NDA3Zjhi
NjE4ZmUyNTNhYmUxODFiNzA5Ni4uZjk0MGU5Njc3YjM3Njc1MDE4OTFmNTBjMWE4YWE2ZWNjN2Ex
YjZhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNTcwLDcgKzE1
NzAsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlT
X0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZUFyZ3VtZW50KFRyZWVCdWlsZGVyJiwgQXJndW1l
bnRUeXBlJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkg
cGFyc2VQcm9wZXJ0eShUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0KTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUsIFNvdXJjZVBh
cnNlTW9kZSk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkg
cGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCwgUHJvcGVydHlOb2Rl
OjpUeXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3Rvcktp
bmQsIGJvb2wgaXNDbGFzc1Byb3BlcnR5LCBib29sIGlzU3RhdGljTWV0aG9kKTsKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihU
cmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdl
dHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCwgQ2xhc3NFbGVtZW50VGFn
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1
bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIFN5bnRheENoZWNrZXIm
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZywgRnVuY3Rpb25Cb2R5VHlwZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNl
TW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJv
b2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgVHJlZUZvcm1hbFBhcmFtZXRl
ckxpc3QsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBib29sIGlzTWV0aG9kLCB1bnNpZ25lZCYpOwog
ICAgIGVudW0gVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJE
ZWNsYXJhdGlvbkNvbnRleHQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmgKaW5kZXggOGYzYWZlNmQyNTZmYWM5NWU2OTNkNDIwNDg5MTdkZjk1YWQzNzE0
MS4uOTdjZmFkYjMwMmY3NjU2ZTMyNGNkYmIwN2ZkNGFmNDQ2NTQ0M2YxMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE5MSw3ICsxOTEsNyBA
QCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlWWllbGQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJikgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
WWllbGQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUF3YWl0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwg
aW50KSB7IHJldHVybiBBd2FpdEV4cHI7IH0KLSAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xh
c3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckNsYXNzSW5mbzxTeW50
YXhDaGVja2VyPiYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVz
c2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7
IH0KKyAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IFBhcnNlckNsYXNzSW5mbzxTeW50YXhDaGVja2VyPiYsIFZhcmlhYmxlRW52
aXJvbm1lbnQmLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCkg
eyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50
YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUdlbmVyYXRvckZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBjb25zdCBJZGVudGlmaWVyJikg
eyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXN5bmNG
dW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CkBAIC0yMTQsMjQg
KzIxNCwyNCBAQCBwdWJsaWM6CiAKICAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQpIHsgcmV0dXJuIEFyZ3VtZW50c0xpc3RSZXN1bHQ7IH0KICAg
ICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCkgeyByZXR1cm4gQXJndW1lbnRzTGlzdFJlc3VsdDsgfQotICAgIFByb3BlcnR5IGNyZWF0ZVBy
b3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nLCBJ
bmZlck5hbWUsIGJvb2wpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQ
dXRUeXBlLCBib29sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmcsIEluZmVyTmFtZSwgQ2xhc3NFbGVt
ZW50VGFnKQogICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKICAgICAgICAgICAgIHJldHVy
biBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICByZXR1cm4g
UHJvcGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5
KGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9v
bCwgU3VwZXJCaW5kaW5nLCBib29sKQorICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGludCwg
UHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCwgU3Vw
ZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICByZXR1cm4gUHJvcGVy
dHkodHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KFZNKiB2bSwgUGFy
c2VyQXJlbmEmIHBhcnNlckFyZW5hLCBkb3VibGUgbmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBib29sIGNvbXBsZXRlLCBTdXBlckJpbmRp
bmcsIGJvb2wpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVu
YSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBl
LCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wgY29tcGxldGUsIFN1cGVyQmluZGluZywgQ2xh
c3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKICAgICAgICAgICAg
IHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KCZwYXJzZXJB
cmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIG5hbWUpLCB0
eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoaW50LCBpbnQsIFByb3Bl
cnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wsIFN1cGVyQmlu
ZGluZywgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShpbnQsIGludCwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5k
aW5nLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICByZXR1cm4gUHJvcGVydHkodHlw
ZSk7CiAgICAgfQpAQCAtMjg1LDE4ICsyODUsMTggQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5k
RXhwb3J0U3BlY2lmaWVyKEV4cG9ydFNwZWNpZmllckxpc3QsIEV4cG9ydFNwZWNpZmllcikgeyB9
CiAKICAgICBpbnQgYXBwZW5kQ29uc3REZWNsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
Y29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9Ci0gICAg
UHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCBzdHJpY3QsIGNvbnN0IElkZW50aWZp
ZXIqIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIGJvb2wp
CisgICAgUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCBzdHJpY3QsIGNvbnN0IElk
ZW50aWZpZXIqIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYs
IENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAg
aWYgKCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAg
IHJldHVybiBQcm9wZXJ0eShuYW1lLCB0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5v
ZGU6OlR5cGUgdHlwZSwgYm9vbCwgaW50LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4
Q2hlY2tlcj4mLCBib29sKQorICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVy
dHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2ws
IGludCwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JiwgQ2xhc3NFbGVt
ZW50VGFnKQogICAgIHsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgIH0KLSAg
ICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJl
bmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgYm9vbCBzdHJpY3QsIGRvdWJsZSBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbklu
Zm88U3ludGF4Q2hlY2tlcj4mLCBib29sKQorICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0cmljdCwgZG91Ymxl
IG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIENsYXNzRWxl
bWVudFRhZykKICAgICB7CiAgICAgICAgIGlmICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJu
IFByb3BlcnR5KHR5cGUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCA2YzQ4NzdiOTZmZDVkNDgyNTVlYjZhNWM0YjY3NWVlODZlNTVlZmRl
Li44NWM4M2VjMWQ5ZjVlMWQ2NzU5Y2Y4ZjZmZjc2MTdhNTVmZGJjNDc5IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBA
CisyMDE4LTAzLTEyICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0pTQ10gZml4IG9yZGVyIG9mIGV2YWx1YXRpb24gZm9yIENsYXNzRGVmaW5pdGlvbkV2YWx1
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bXB1dGVkIHByb3BlcnR5IG5hbWVzIG5lZWQgdG8gYmUgZXZhbHVhdGVkIGluIHNvdXJjZSBvcmRl
ciBkdXJpbmcgY2xhc3MKKyAgICAgICAgZGVmaW5pdGlvbiBldmFsdWF0aW9uLCBhcyBpdCdzIG9i
c2VydmFibGUgKGFuZCBzcGVjaWZpZWQgdG8gd29yayB0aGlzIHdheSkuCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaW1wcm92ZXMgY29tcGF0aWJpbGl0eSB3aXRoIENocm9taXVtLgorCisgICAgICAg
ICogc3RyZXNzL2NsYXNzX2VsZW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAodGVzdC5DLnByb3RvdHlwZS5lZmZlY3QpOgorICAgICAgICAodGVzdC5DLmVmZmVjdCk6
CisgICAgICAgICh0ZXN0LkMucHJvdG90eXBlLmdldCBlZmZlY3QpOgorICAgICAgICAodGVzdC5D
LnByb3RvdHlwZS5zZXQgZWZmZWN0KToKKyAgICAgICAgKHRlc3QuQyk6CisKIDIwMTgtMDMtMTEg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10g
QUkgc2hvdWxkIGNvbnZlcnQgQ3JlYXRlVGhpcyB0byBOZXdPYmplY3QgaWYgdGhlIHByb3RvdHlw
ZSBvYmplY3QgaXMgcHJvdmVkCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzc19lbGVt
ZW50cy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzX2VsZW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBj
OWFjZTM3YmQ4ZWM1MzRjYTFhMzY0NGYyMjk2MTAxNWVjZGU4YjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9jbGFzc19lbGVtZW50cy5qcwpAQCAtMCwwICsxLDI0IEBACitmdW5j
dGlvbiB0ZXN0KCkgeworCitsZXQgbG9nID0gW107CitmdW5jdGlvbiBlZmZlY3QoZGVzYykgeyBs
b2cucHVzaChkZXNjKTsgcmV0dXJuIGRlc2M7IH0KKworY2xhc3MgQyB7CisgIFtlZmZlY3QoImlu
c3RhbmNlIzEiKV0oKSB7fQorICBzdGF0aWMgW2VmZmVjdCgic3RhdGljIzIiKV0oKSB7fQorICBn
ZXQgW2VmZmVjdCgiaW5zdGFuY2VHZXR0ZXIjMyIpXSgpIHt9CisgIHN0YXRpYyBnZXQgW2VmZmVj
dCgic3RhdGljR2V0dGVyIzQiKV0oKSB7fQorICBzZXQgW2VmZmVjdCgiaW5zdGFuY2VTZXR0ZXIj
NSIpXSh2KSB7fQorICBzdGF0aWMgW2VmZmVjdCgic3RhdGljU2V0dGVyIzYiKV0odikge30KK30K
KworcmV0dXJuIGxvZ1swXSA9PT0gImluc3RhbmNlIzEiICYmCisgICAgICAgbG9nWzFdID09PSAi
c3RhdGljIzIiICYmCisgICAgICAgbG9nWzJdID09PSAiaW5zdGFuY2VHZXR0ZXIjMyIgJiYKKyAg
ICAgICBsb2dbM10gPT09ICJzdGF0aWNHZXR0ZXIjNCIgJiYKKyAgICAgICBsb2dbNF0gPT09ICJp
bnN0YW5jZVNldHRlciM1IiAmJgorICAgICAgIGxvZ1s1XSA9PT0gInN0YXRpY1NldHRlciM2IjsK
K30KKworaWYgKCF0ZXN0KCkpCisgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIpOwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335717</attachid>
            <date>2018-03-13 12:55:36 -0700</date>
            <delta_ts>2018-03-14 12:40:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183523-20180313155535.patch</filename>
            <type>text/plain</type>
            <size>47465</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YzljYzViYTY3MzY3MDdmMGUwMjE4OWIwZTVlNGU2M2JkZjk5OGU0Li4xZTQ5N2U5OTUxNDE2NDcw
Yjk1MjZmZmU3YWIyNzM5MTc0Y2M1MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOC0wMy0xMiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZpeCBvcmRlciBvZiBldmFsdWF0aW9uIGZvciBDbGFzc0RlZmlu
aXRpb25FdmFsdWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb21wdXRlZCBwcm9wZXJ0eSBuYW1lcyBuZWVkIHRvIGJlIGV2YWx1YXRlZCBpbiBz
b3VyY2Ugb3JkZXIgZHVyaW5nIGNsYXNzCisgICAgICAgIGRlZmluaXRpb24gZXZhbHVhdGlvbiwg
YXMgaXQncyBvYnNlcnZhYmxlIChhbmQgc3BlY2lmaWVkIHRvIHdvcmsgdGhpcyB3YXkpLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGltcHJvdmVzIGNvbXBhdGliaWxpdHkgd2l0aCBDaHJvbWl1bS4K
KworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZUNsYXNzRWxlbWVudHMpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVQcm9wZXJ0eSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFt
ZWRQcm9wZXJ0eSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5Tm9kZTo6aXNDbGFzc1Byb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlOb2RlOjppc1N0YXRpY0NsYXNzUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eU5vZGU6OmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcik6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisKIDIwMTgtMDMtMTIg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEdhcmRlbmluZzogc3Bl
Y3VsYXRpdmUgYnVpbGQgZml4IGZvciBXaW5DYWlyby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA4ODI0YTgx
MjgwOTQ4YzcyM2I0NjBlNDcxOWM2ZmVjN2JkM2U0YzAxLi4xZWYxYWU1Y2IwMTY2MjVmODI1YjM3
YmVmNzAyNjliMDQwNjU3Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MjEsNiArNTIxLDE2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGVtaXROb2RlSW5UYWlsUG9zaXRpb24o
bnVsbHB0ciwgbik7CiAgICAgICAgIH0KIAorICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVmaW5l
Q2xhc3NFbGVtZW50cyhQcm9wZXJ0eUxpc3ROb2RlKiBuLCBSZWdpc3RlcklEKiBjb25zdHJ1Y3Rv
ciwgUmVnaXN0ZXJJRCogcHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
Y29uc3RydWN0b3ItPnJlZkNvdW50KCkgJiYgcHJvdG90eXBlLT5yZWZDb3VudCgpKTsKKyAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghbV92bS0+aXNTYWZlVG9SZWN1cnNlKCkpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOworICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKG4tPm5lZWRzRGVidWdIb29rKCkpKQorICAgICAgICAgICAg
ICAgIGVtaXREZWJ1Z0hvb2sobik7CisgICAgICAgICAgICByZXR1cm4gbi0+ZW1pdEJ5dGVjb2Rl
KCp0aGlzLCBjb25zdHJ1Y3RvciwgcHJvdG90eXBlKTsKKyAgICAgICAgfQorCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXROb2RlRm9yUHJvcGVydHkoUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9u
Tm9kZSogbm9kZSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG5vZGUtPmlzU3RyaW5nKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCBhMjI4YmQwNGQ1MjFmOGIzYjU5NWUyNDljZTc0ZmNhMjNiYjc2NmY3Li4z
OWZmNDg1YjFlZWQ1NDc3YzIwYjgyMzBkNGQ0NDY3NDI3ZDk4ZGRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01MDgs
MTIgKzUwOCwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVPYmplY3QoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlJZChmdW5jdGlvbiwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUoKSwgaG9tZU9iamVjdCk7CiB9CiAKLVJlZ2lzdGVySUQq
IFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0T3JD
b25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogcHJvdG90eXBlKQogewogICAgIC8vIEZhc3QgY2FzZTog
dGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgUHJv
cGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7Ci0gICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+bV90
eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBwLT5tX25leHQpCisgICAgUmVnaXN0
ZXJJRCogZHN0ID0gbnVsbHB0cjsKKyAgICBmb3IgKDsgcCAmJiAocC0+bV9ub2RlLT5tX3R5cGUg
JiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4dCkgeworICAgICAgICBkc3Qg
PSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5cGUgOiBkc3RP
ckNvbnN0cnVjdG9yOwogICAgICAgICBlbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShnZW5lcmF0b3Is
IGRzdCwgKnAtPm1fbm9kZSk7CisgICAgfQogCiAgICAgLy8gV2VyZSB0aGVyZSBhbnkgZ2V0L3Nl
dCBwcm9wZXJ0aWVzPwogICAgIGlmIChwKSB7CkBAIC01MjMsNyArNTI2LDggQEAgUmVnaXN0ZXJJ
RCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxQcm9wZXJ0eU5vZGUq
LCBQcm9wZXJ0eU5vZGUqPiBHZXR0ZXJTZXR0ZXJQYWlyOwogICAgICAgICB0eXBlZGVmIEhhc2hN
YXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBHZXR0ZXJTZXR0ZXJQYWlyLCBJZGVudGlmaWVyUmVwSGFz
aD4gR2V0dGVyU2V0dGVyTWFwOwotICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAgbWFwOworICAgICAg
ICBHZXR0ZXJTZXR0ZXJNYXAgaW5zdGFuY2VNYXA7CisgICAgICAgIEdldHRlclNldHRlck1hcCBz
dGF0aWNNYXA7CiAKICAgICAgICAgLy8gQnVpbGQgYSBtYXAsIHBhaXJpbmcgZ2V0L3NldCB2YWx1
ZXMgdG9nZXRoZXIuCiAgICAgICAgIGZvciAoUHJvcGVydHlMaXN0Tm9kZSogcSA9IHA7IHE7IHEg
PSBxLT5tX25leHQpIHsKQEAgLTUzOCw2ICs1NDIsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxp
c3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZQogCiAgICAgICAgICAgICAvLyBEdXBsaWNhdGVzIGFyZSBwb3NzaWJsZS4KICAgICAgICAgICAg
IEdldHRlclNldHRlclBhaXIgcGFpcihub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGUqPihu
dWxscHRyKSk7CisgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAmIG1hcCA9IG5vZGUtPmlzU3Rh
dGljQ2xhc3NQcm9wZXJ0eSgpID8gc3RhdGljTWFwIDogaW5zdGFuY2VNYXA7CiAgICAgICAgICAg
ICBHZXR0ZXJTZXR0ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAuYWRkKG5vZGUtPm5hbWUo
KS0+aW1wbCgpLCBwYWlyKTsKICAgICAgICAgICAgIGF1dG8mIHJlc3VsdFBhaXIgPSByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewpA
QCAtNTU1LDYgKzU2MCw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgIC8vIEl0
ZXJhdGUgb3ZlciB0aGUgcmVtYWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGxpc3QuCiAgICAgICAg
IGZvciAoOyBwOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgICAgICBQcm9wZXJ0eU5vZGUqIG5v
ZGUgPSBwLT5tX25vZGU7CisgICAgICAgICAgICBkc3QgPSBub2RlLT5pc0luc3RhbmNlQ2xhc3NQ
cm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIAogICAgICAgICAgICAg
Ly8gSGFuZGxlIHJlZ3VsYXIgdmFsdWVzLgogICAgICAgICAgICAgaWYgKG5vZGUtPm1fdHlwZSAm
IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKQEAgLTU5NSw2ICs2MDEsNyBAQCBSZWdpc3RlcklE
KiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEg
Z2V0L3NldCBwcm9wZXJ0eSBwYWlyLgorICAgICAgICAgICAgR2V0dGVyU2V0dGVyTWFwJiBtYXAg
PSBub2RlLT5pc1N0YXRpY0NsYXNzUHJvcGVydHkoKSA/IHN0YXRpY01hcCA6IGluc3RhbmNlTWFw
OwogICAgICAgICAgICAgR2V0dGVyU2V0dGVyTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKG5v
ZGUtPm5hbWUoKS0+aW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkp
OwogICAgICAgICAgICAgR2V0dGVyU2V0dGVyUGFpciYgcGFpciA9IGl0LT52YWx1ZTsKQEAgLTYz
OSw3ICs2NDYsNyBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIGRzdDsKKyAgICByZXR1cm4gZHN0T3JDb25zdHJ1Y3RvcjsKIH0KIAogdm9p
ZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkK
QEAgLTM5NTEsMTEgKzM5NTgsOCBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQo
bnVsbHB0ciwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOwogICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIu
Z2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7
CiAKLSAgICBpZiAobV9zdGF0aWNNZXRob2RzKQotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
Y29uc3RydWN0b3IuZ2V0KCksIG1fc3RhdGljTWV0aG9kcyk7Ci0KLSAgICBpZiAobV9pbnN0YW5j
ZU1ldGhvZHMpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShwcm90b3R5cGUuZ2V0KCksIG1f
aW5zdGFuY2VNZXRob2RzKTsKKyAgICBpZiAobV9jbGFzc0VsZW1lbnRzKQorICAgICAgICBnZW5l
cmF0b3IuZW1pdERlZmluZUNsYXNzRWxlbWVudHMobV9jbGFzc0VsZW1lbnRzLCBjb25zdHJ1Y3Rv
ci5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKIAogICAgIGlmICghbV9uYW1lLmlzTnVsbCgpKSB7
CiAgICAgICAgIFZhcmlhYmxlIGNsYXNzTmFtZVZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX25h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4NjFm
MGNmNzA2ZjA0MGIzMTg4NTM3YTlhZmVlYTExYjhiZTMzMmRlLi41YzZkZDMzMTk4Y2EyZjk0NTA1
MzU4Y2RmOTRiNjA1YzliZTdlODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaApAQCAtMzk3LDEwICszOTcsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIENs
YXNzRXhwck5vZGUqIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBQYXJzZXJDbGFzc0luZm88QVNUQnVpbGRlcj4mIGNsYXNzSW5mbywgVmFyaWFi
bGVFbnZpcm9ubWVudCYgY2xhc3NFbnZpcm9ubWVudCwgRXhwcmVzc2lvbk5vZGUqIGNvbnN0cnVj
dG9yLAotICAgICAgICBFeHByZXNzaW9uTm9kZSogcGFyZW50Q2xhc3MsIFByb3BlcnR5TGlzdE5v
ZGUqIGluc3RhbmNlTWV0aG9kcywgUHJvcGVydHlMaXN0Tm9kZSogc3RhdGljTWV0aG9kcykKKyAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIHBhcmVudENsYXNzLCBQcm9wZXJ0eUxpc3ROb2RlKiBjbGFz
c0VsZW1lbnRzKQogICAgIHsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNv
ZGUtPnN1YkV4cHJlc3Npb24oY2xhc3NJbmZvLnN0YXJ0T2Zmc2V0LCBjbGFzc0luZm8uZW5kT2Zm
c2V0LCBjbGFzc0luZm8uc3RhcnRMaW5lLCBjbGFzc0luZm8uc3RhcnRDb2x1bW4pOwotICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBDbGFzc0V4cHJOb2RlKGxvY2F0aW9uLCAqY2xh
c3NJbmZvLmNsYXNzTmFtZSwgc291cmNlLCBjbGFzc0Vudmlyb25tZW50LCBjb25zdHJ1Y3Rvciwg
cGFyZW50Q2xhc3MsIGluc3RhbmNlTWV0aG9kcywgc3RhdGljTWV0aG9kcyk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXNzRXhwck5vZGUobG9jYXRpb24sICpjbGFzc0lu
Zm8uY2xhc3NOYW1lLCBzb3VyY2UsIGNsYXNzRW52aXJvbm1lbnQsIGNvbnN0cnVjdG9yLCBwYXJl
bnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQ
YXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKQEAgLTQ3MCw3ICs0
NzAsNyBAQCBwdWJsaWM6CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlz
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBBcmd1bWVudExpc3ROb2RlKiBhcmdz
LCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFyZ3Vt
ZW50TGlzdE5vZGUobG9jYXRpb24sIGFyZ3MsIGFyZyk7IH0KIAogICAgIE5FVkVSX0lOTElORSBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wsCi0gICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWls
ZGVyPiYgZnVuY3Rpb25JbmZvLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBm
dW5jdGlvbkluZm8sIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQo
bmFtZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0
YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2Nh
dGlvbi5saW5lU3RhcnRPZmZzZXQpOwpAQCAtNDc4LDMwICs0NzgsMzAgQEAgcHVibGljOgogICAg
ICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0SW5mZXJyZWROYW1lKCpuYW1lKTsKICAgICAgICAg
U291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25J
bmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3Rh
cnRMaW5lLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyc1N0YXJ0Q29sdW1uKTsKICAgICAgICAgTWV0
aG9kRGVmaW5pdGlvbk5vZGUqIG1ldGhvZERlZiA9IG5ldyAobV9wYXJzZXJBcmVuYSkgTWV0aG9k
RGVmaW5pdGlvbk5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlm
aWVyLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBtZXRob2REZWYsIHR5cGUsIFByb3BlcnR5
Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqbmFtZSwgbWV0
aG9kRGVmLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6TmVlZGVk
LCB0YWcpOwogICAgIH0KIAogICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdl
dHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wsCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBuYW1l
LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgYm9v
bCBpc0NsYXNzUHJvcGVydHkpCisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBuYW1lLCBjb25zdCBQ
YXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgQ2xhc3NFbGVtZW50
VGFnIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgZnVuY3Rpb25J
bmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5k
TGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAg
ICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1
bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25J
bmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbik7CiAgICAg
ICAgIE1ldGhvZERlZmluaXRpb25Ob2RlKiBtZXRob2REZWYgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IE1ldGhvZERlZmluaXRpb25Ob2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxs
SWRlbnRpZmllciwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShuYW1lLCBtZXRob2REZWYsIHR5cGUsIFBy
b3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0
eSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShuYW1l
LCBtZXRob2REZWYsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpO
ZWVkZWQsIHRhZyk7CiAgICAgfQogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSogY3Jl
YXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVu
YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUsIGJvb2wsCi0gICAgICAgIGRvdWJsZSBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88
QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgYm9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAgICAg
IGRvdWJsZSBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0
aW9uSW5mbywgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uSW5m
by5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExp
bmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVu
YSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgbmFtZSk7CiAgICAgICAgIFNvdXJjZUNvZGUg
c291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9m
ZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVu
Y3Rpb25JbmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbik7CiAgICAgICAgIE1ldGhvZERlZmluaXRp
b25Ob2RlKiBtZXRob2REZWYgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIE1ldGhvZERlZmluaXRpb25O
b2RlKGxvY2F0aW9uLCB2bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGZ1bmN0aW9u
SW5mby5ib2R5LCBzb3VyY2UpOwotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQ
cm9wZXJ0eU5vZGUoaWRlbnQsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3du
LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKGlkZW50LCBtZXRob2REZWYsIHR5cGUs
IFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CiAgICAg
fQogCi0gICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBw
cm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcsIEluZmVyTmFtZSBpbmZlck5hbWUsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAg
IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlO
YW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3Bl
cnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
LCBJbmZlck5hbWUgaW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAg
ICAgaWYgKGluZmVyTmFtZSA9PSBJbmZlck5hbWU6OkFsbG93ZWQpIHsKICAgICAgICAgICAgIGlm
IChub2RlLT5pc0Jhc2VGdW5jRXhwck5vZGUoKSkgewpAQCAtNTExLDE3ICs1MTEsMTcgQEAgcHVi
bGljOgogICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5pc0NsYXNzRXhwck5vZGUoKSkKICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDbGFzc0V4cHJOb2RlKj4obm9kZSktPnNldEVjbWFO
YW1lKCpwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRUeXBl
LCBzdXBlckJpbmRpbmcsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRU
eXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CiAgICAgfQotICAgIFByb3BlcnR5Tm9kZSogY3JlYXRl
UHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQ
cm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZywgYm9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9w
ZXJ0eShFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3Bl
cnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
LCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgUHJvcGVydHlOb2RlKG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywg
aXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJv
cGVydHlOb2RlKG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsKICAgICB9
Ci0gICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5hJiBw
YXJzZXJBcmVuYSwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9v
bCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAg
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJB
cmVuYSwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5
Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShwYXJzZXJBcmVuYS5p
ZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIHByb3BlcnR5TmFtZSks
IG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgaXNDbGFzc1Byb3BlcnR5KTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHBhcnNlckFyZW5h
LmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgcHJvcGVydHlOYW1l
KSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCB0YWcpOwogICAgIH0KLSAgICBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUs
IEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlO
b2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIGJv
b2wgaXNDbGFzc1Byb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5
Tm9kZShwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgaXND
bGFzc1Byb3BlcnR5KTsgfQorICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoRXhwcmVz
c2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykgeyByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUocHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRU
eXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7IH0KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQ
cm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2Rl
KiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eUxpc3ROb2Rl
KGxvY2F0aW9uLCBwcm9wZXJ0eSk7IH0KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9w
ZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBw
cm9wZXJ0eSwgUHJvcGVydHlMaXN0Tm9kZSogdGFpbCkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCAw
YTA3OTdlNThlMjZiOTAxMDQwMWJlMWEwZWQ1ZTNkMTk4NWE4NDQxLi5lNmYwM2I2NWI3NWQwMDI1
MmYwNDNlYzk5MzFmYmJhNTA0YjkzY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMjQyLDM2ICsyNDIsMzYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5
Tm9kZShjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBFeHByZXNzaW9uTm9kZSogYXNzaWduLCBUeXBl
IHR5cGUsIFB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgYm9vbCBp
c0NsYXNzUHJvcGVydHkpCisgICAgaW5saW5lIFByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSwg
UHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRU
YWcgdGFnKQogICAgICAgICA6IG1fbmFtZSgmbmFtZSkKICAgICAgICAgLCBtX2Fzc2lnbihhc3Np
Z24pCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGlu
ZyhzdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwgbV9wdXRU
eXBlKHB1dFR5cGUpCi0gICAgICAgICwgbV9pc0NsYXNzUHJvcGVydHkoaXNDbGFzc1Byb3BlcnR5
KQorICAgICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0YWcp
KQogICAgICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewogICAg
IH0KICAgICAKLSAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoRXhwcmVzc2lv
bk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5cGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgIGlubGluZSBQcm9wZXJ0eU5v
ZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogYXNzaWduLCBUeXBlIHR5cGUsIFB1dFR5
cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRh
ZykKICAgICAgICAgOiBtX25hbWUobnVsbHB0cikKICAgICAgICAgLCBtX2Fzc2lnbihhc3NpZ24p
CiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhz
dXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwgbV9wdXRUeXBl
KHB1dFR5cGUpCi0gICAgICAgICwgbV9pc0NsYXNzUHJvcGVydHkoaXNDbGFzc1Byb3BlcnR5KQor
ICAgICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0YWcpKQog
ICAgICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSog
bmFtZSwgRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5cGUs
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgIGlu
bGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogbmFtZSwgRXhw
cmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5cGUsIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgICAgIDogbV9uYW1l
KG51bGxwdHIpCiAgICAgICAgICwgbV9leHByZXNzaW9uKG5hbWUpCiAgICAgICAgICwgbV9hc3Np
Z24oYXNzaWduKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBl
ckJpbmRpbmcoc3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAs
IG1fcHV0VHlwZShwdXRUeXBlKQotICAgICAgICAsIG1faXNDbGFzc1Byb3BlcnR5KGlzQ2xhc3NQ
cm9wZXJ0eSkKKyAgICAgICAgLCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odGFnKSkKICAgICAgICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAg
IHsKICAgICB9CkBAIC05OTMsNyArOTkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBDbGFzc0V4cHJOb2RlOjpDbGFzc0V4cHJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJj
ZUNvZGUmIGNsYXNzU291cmNlLCBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50
LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3JFeHByZXNzaW9uLCBFeHByZXNzaW9uTm9kZSog
Y2xhc3NIZXJpdGFnZSwgUHJvcGVydHlMaXN0Tm9kZSogaW5zdGFuY2VNZXRob2RzLCBQcm9wZXJ0
eUxpc3ROb2RlKiBzdGF0aWNNZXRob2RzKQorICAgIGlubGluZSBDbGFzc0V4cHJOb2RlOjpDbGFz
c0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlLCBWYXJpYWJsZUVudmlyb25t
ZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3JFeHByZXNz
aW9uLCBFeHByZXNzaW9uTm9kZSogY2xhc3NIZXJpdGFnZSwgUHJvcGVydHlMaXN0Tm9kZSogY2xh
c3NFbGVtZW50cykKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBWYXJpYWJsZUVudmlyb25tZW50Tm9kZShjbGFzc0Vudmlyb25tZW50KQogICAgICAgICAsIG1f
Y2xhc3NTb3VyY2UoY2xhc3NTb3VyY2UpCkBAIC0xMDAxLDggKzEwMDEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgLCBtX2VjbWFOYW1lKCZuYW1lKQogICAgICAgICAsIG1fY29uc3RydWN0
b3JFeHByZXNzaW9uKGNvbnN0cnVjdG9yRXhwcmVzc2lvbikKICAgICAgICAgLCBtX2NsYXNzSGVy
aXRhZ2UoY2xhc3NIZXJpdGFnZSkKLSAgICAgICAgLCBtX2luc3RhbmNlTWV0aG9kcyhpbnN0YW5j
ZU1ldGhvZHMpCi0gICAgICAgICwgbV9zdGF0aWNNZXRob2RzKHN0YXRpY01ldGhvZHMpCisgICAg
ICAgICwgbV9jbGFzc0VsZW1lbnRzKGNsYXNzRWxlbWVudHMpCiAgICAgewogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA4NWMzMWEzMmNiOWQ5Yzg4NjZi
NTFlNjdlNzdkY2IwODk0MzE1ODQ2Li40YmIwNWYzZmUzMmRhZmUzODQwMjBmNzQ0MDQyNGY2ZmU4
MTU0ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMjQ4LDkg
KzI0OCwxMSBAQCBib29sIFByb3BlcnR5TGlzdE5vZGU6Omhhc1N0YXRpY2FsbHlOYW1lZFByb3Bl
cnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BOYW1lKQogewogICAgIFByb3BlcnR5TGlzdE5vZGUq
IGxpc3QgPSB0aGlzOwogICAgIHdoaWxlIChsaXN0KSB7Ci0gICAgICAgIGNvbnN0IElkZW50aWZp
ZXIqIGN1cnJlbnROb2RlTmFtZSA9IGxpc3QtPm1fbm9kZS0+bmFtZSgpOwotICAgICAgICBpZiAo
Y3VycmVudE5vZGVOYW1lICYmICpjdXJyZW50Tm9kZU5hbWUgPT0gcHJvcE5hbWUpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNTdGF0aWNDbGFz
c1Byb3BlcnR5KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGN1cnJlbnROb2Rl
TmFtZSA9IGxpc3QtPm1fbm9kZS0+bmFtZSgpOworICAgICAgICAgICAgaWYgKGN1cnJlbnROb2Rl
TmFtZSAmJiAqY3VycmVudE5vZGVOYW1lID09IHByb3BOYW1lKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIGxpc3QgPSBsaXN0LT5tX25leHQ7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCAzMmE2MGVhNTQ2YTY1MjI4MTM4NTM5N2QxODkyNjMwNDFiOGU0MGExLi42YzBmMmRiZDBjMTFh
ZGI0MmMwZGVjNjllNGQwZGVlMWFkYzcxY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC02OTUsMjEgKzY5NSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBtX29wdGlvbmFsOwogICAgIH07CiAKKyAgICBlbnVtIGNsYXNzIENsYXNzRWxlbWVudFRhZyB7
IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2Rl
IDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51
bSBUeXBlIHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9
IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiB9OwogICAgICAgICBlbnVtIFB1dFR5cGUg
eyBVbmtub3duLCBLbm93bkRpcmVjdCB9OwogCi0gICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJ
ZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcs
IGJvb2wgaXNDbGFzc1Byb3BlcnR5KTsKLSAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25O
b2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSk7
Ci0gICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHBy
ZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJv
cGVydHkpOworICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Np
b25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwor
ICAgICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBl
ckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CisgICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNz
aW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1
cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSog
ZXhwcmVzc2lvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAg
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7
IH0KICAgICAgICAgYm9vbCBuZWVkc1N1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVl
ZHNTdXBlckJpbmRpbmc7IH0KLSAgICAgICAgYm9vbCBpc0NsYXNzUHJvcGVydHkoKSBjb25zdCB7
IHJldHVybiBtX2lzQ2xhc3NQcm9wZXJ0eTsgfQorICAgICAgICBib29sIGlzQ2xhc3NQcm9wZXJ0
eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENsYXNzRWxlbWVudFRhZz4obV9jbGFzc0Vs
ZW1lbnRUYWcpICE9IENsYXNzRWxlbWVudFRhZzo6Tm87IH0KKyAgICAgICAgYm9vbCBpc1N0YXRp
Y0NsYXNzUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDbGFzc0VsZW1lbnRU
YWc+KG1fY2xhc3NFbGVtZW50VGFnKSA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYzsgfQorICAg
ICAgICBib29sIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q2xhc3NFbGVtZW50VGFnPihtX2NsYXNzRWxlbWVudFRhZykgPT0gQ2xhc3NFbGVtZW50
VGFnOjpJbnN0YW5jZTsgfQogICAgICAgICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZTsgfQogICAgICAgICB2b2lk
IHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRl
ID0gdHJ1ZTsgfQogICAgICAgICBQdXRUeXBlIHB1dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxQdXRUeXBlPihtX3B1dFR5cGUpOyB9CkBAIC03MjIsNyArNzI1LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7CiAgICAgICAgIHVuc2lnbmVk
IG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX3B1dFR5cGUgOiAx
OwotICAgICAgICB1bnNpZ25lZCBtX2lzQ2xhc3NQcm9wZXJ0eTogMTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydCgxIDw8IDIgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpM
YXN0VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0
cyIpOworICAgICAgICB1bnNpZ25lZCBtX2NsYXNzRWxlbWVudFRhZyA6IDI7CiAgICAgICAgIHVu
c2lnbmVkIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU6IDE7CiAgICAgfTsKIApAQCAtNzMzLDgg
KzczNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc1N0YXRpY2FsbHlO
YW1lZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BOYW1lKTsKIAorICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgUmVn
aXN0ZXJJRCopOworCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHIpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIG51bGxwdHIpOworICAgICAg
ICB9CiAgICAgICAgIHZvaWQgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiwgUHJvcGVydHlOb2RlJik7CiAKICAgICAgICAgUHJvcGVydHlOb2Rl
KiBtX25vZGU7CkBAIC0yMTM5LDEzICsyMTQ4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1
YmxpYzoKICAgICAgICAgQ2xhc3NFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsCiAgICAgICAgICAg
ICBWYXJpYWJsZUVudmlyb25tZW50JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9kZSog
Y29uc3RydWN0b3JFeHByZXNzc2lvbiwKLSAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBwYXJl
bnRDbGFzcywgUHJvcGVydHlMaXN0Tm9kZSogaW5zdGFuY2VNZXRob2RzLCBQcm9wZXJ0eUxpc3RO
b2RlKiBzdGF0aWNNZXRob2RzKTsKKyAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBwYXJlbnRD
bGFzcywgUHJvcGVydHlMaXN0Tm9kZSogY2xhc3NFbGVtZW50cyk7CiAKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBlY21hTmFtZSgpIHsgcmV0dXJuIG1fZWNtYU5hbWUgPyAqbV9lY21hTmFtZSA6IG1f
bmFtZTsgfQogICAgICAgICB2b2lkIHNldEVjbWFOYW1lKGNvbnN0IElkZW50aWZpZXImIG5hbWUp
IHsgbV9lY21hTmFtZSA9IG1fbmFtZS5pc051bGwoKSA/ICZuYW1lIDogJm1fbmFtZTsgfQogCi0g
ICAgICAgIGJvb2wgaGFzU3RhdGljUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcE5hbWUp
IHsgcmV0dXJuIG1fc3RhdGljTWV0aG9kcyA/IG1fc3RhdGljTWV0aG9kcy0+aGFzU3RhdGljYWxs
eU5hbWVkUHJvcGVydHkocHJvcE5hbWUpIDogZmFsc2U7IH0KKyAgICAgICAgYm9vbCBoYXNTdGF0
aWNQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wTmFtZSkgeyByZXR1cm4gbV9jbGFzc0Vs
ZW1lbnRzID8gbV9jbGFzc0VsZW1lbnRzLT5oYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0eShwcm9w
TmFtZSkgOiBmYWxzZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
QEAgLTIxNTcsOCArMjE2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyKiBtX2VjbWFOYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9jb25zdHJ1Y3Rv
ckV4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2NsYXNzSGVyaXRhZ2U7Ci0g
ICAgICAgIFByb3BlcnR5TGlzdE5vZGUqIG1faW5zdGFuY2VNZXRob2RzOwotICAgICAgICBQcm9w
ZXJ0eUxpc3ROb2RlKiBtX3N0YXRpY01ldGhvZHM7CisgICAgICAgIFByb3BlcnR5TGlzdE5vZGUq
IG1fY2xhc3NFbGVtZW50czsKICAgICB9OwogCiAgICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDcyNTQzZmQ1YzRmMGE1NDU2MmVjNWQwMmY4OThiMmM3
N2M0MDdkMDQuLjZmYTNhZDFmYTc2MmM1NTBlOTdmZTdjNGFhOTI5Zjg1MDYwZjNiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI3OTUsMTAgKzI3OTUsOCBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgIGNvbnN1bWVPckZhaWwoT1BFTkJSQUNFLCAi
RXhwZWN0ZWQgb3BlbmluZyAneycgYXQgdGhlIHN0YXJ0IG9mIGEgY2xhc3MgYm9keSIpOwogCiAg
ICAgVHJlZUV4cHJlc3Npb24gY29uc3RydWN0b3IgPSAwOwotICAgIFRyZWVQcm9wZXJ0eUxpc3Qg
c3RhdGljTWV0aG9kcyA9IDA7Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBpbnN0YW5jZU1ldGhvZHMg
PSAwOwotICAgIFRyZWVQcm9wZXJ0eUxpc3QgaW5zdGFuY2VNZXRob2RzVGFpbCA9IDA7Ci0gICAg
VHJlZVByb3BlcnR5TGlzdCBzdGF0aWNNZXRob2RzVGFpbCA9IDA7CisgICAgVHJlZVByb3BlcnR5
TGlzdCBjbGFzc0VsZW1lbnRzID0gMDsKKyAgICBUcmVlUHJvcGVydHlMaXN0IGNsYXNzRWxlbWVu
dHNUYWlsID0gMDsKICAgICB3aGlsZSAoIW1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIGlm
IChtYXRjaChTRU1JQ09MT04pKSB7CiAgICAgICAgICAgICBuZXh0KCk7CkBAIC0yODA5LDcgKzI4
MDcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgICAgICB1bnNpZ25lZCBtZXRob2RT
dGFydCA9IHRva2VuU3RhcnQoKTsKIAogICAgICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGli
aWxpdHksICJzdGF0aWMiIGlzIGEgbm9uLXJlc2VydmVkIGtleXdvcmQgaW4gbm9uLXN0cmljdCBt
b2RlLgotICAgICAgICBib29sIGlzU3RhdGljTWV0aG9kID0gZmFsc2U7CisgICAgICAgIENsYXNz
RWxlbWVudFRhZyB0YWcgPSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlOwogICAgICAgICBpZiAo
bWF0Y2goUkVTRVJWRURfSUZfU1RSSUNUKSAmJiAqbV90b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+c3RhdGljS2V5d29yZCkgewogICAgICAgICAgICAgU2F2ZVBvaW50
IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgICAgICAgICAgbmV4dCgpOwpAQCAt
MjgxNyw3ICsyODE1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQKICAgICAgICAgICAgICAg
ICAvLyBSZXBhcnNlICJzdGF0aWMoKSIgYXMgYSBtZXRob2QgbmFtZWQgInN0YXRpYyIuCiAgICAg
ICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgaXNTdGF0aWNNZXRob2QgPSB0cnVlOworICAgICAgICAgICAg
ICAgIHRhZyA9IENsYXNzRWxlbWVudFRhZzo6U3RhdGljOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gRklYTUU6IEZpZ3VyZSBvdXQgYSB3YXkgdG8gc2hhcmUgbW9yZSBjb2RlIHdpdGggcGFyc2VQ
cm9wZXJ0eS4KQEAgLTI4ODMsMTMgKzI4ODEsMTIgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgIFRy
ZWVQcm9wZXJ0eSBwcm9wZXJ0eTsKICAgICAgICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbnNp
ZGVDbGFzcyA9IHRydWU7CiAgICAgICAgIGlmIChpc0dldHRlciB8fCBpc1NldHRlcikgewotICAg
ICAgICAgICAgYm9vbCBpc0NsYXNzUHJvcGVydHkgPSB0cnVlOwogICAgICAgICAgICAgcHJvcGVy
dHkgPSBwYXJzZUdldHRlclNldHRlcihjb250ZXh0LCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcywg
aXNHZXR0ZXIgPyBQcm9wZXJ0eU5vZGU6OkdldHRlciA6IFByb3BlcnR5Tm9kZTo6U2V0dGVyLAot
ICAgICAgICAgICAgICAgIG1ldGhvZFN0YXJ0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGlzQ2xh
c3NQcm9wZXJ0eSwgaXNTdGF0aWNNZXRob2QpOworICAgICAgICAgICAgICAgIG1ldGhvZFN0YXJ0
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRhZyk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShw
cm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwot
ICAgICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gIWlzU3RhdGljTWV0aG9kICYmICppZGVu
dCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yOworICAgICAgICAgICAgYm9vbCBpc0NvbnN0
cnVjdG9yID0gdGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYgKmlkZW50ID09IHBy
b3BlcnR5TmFtZXMuY29uc3RydWN0b3I7CiAgICAgICAgICAgICBpZiAoaXNBc3luY01ldGhvZFBh
cnNlTW9kZShwYXJzZU1vZGUpIHx8IGlzQXN5bmNHZW5lcmF0b3JNZXRob2RQYXJzZU1vZGUocGFy
c2VNb2RlKSB8fCBpc0dlbmVyYXRvck1ldGhvZFBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CiAgICAg
ICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCAi
Q2Fubm90IGRlY2xhcmUgIiwgc3RyaW5nQXJ0aWNsZUZvckZ1bmN0aW9uTW9kZShwYXJzZU1vZGUp
LCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUocGFyc2VNb2RlKSwgIiBuYW1lZCAncHJvdG90eXBlJyIp
OwpAQCAtMjkwNywzNSArMjkwNCwyOCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gRklYTUU6IFN5bnRheCBlcnJvciB3aGVuIHN1cGVyKCkgaXMgY2FsbGVk
Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaXNTdGF0aWNNZXRob2QgJiYgbWV0aG9k
SW5mby5uYW1lICYmICptZXRob2RJbmZvLm5hbWUgPT0gcHJvcGVydHlOYW1lcy5wcm90b3R5cGUs
CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6
U3RhdGljICYmIG1ldGhvZEluZm8ubmFtZSAmJiAqbWV0aG9kSW5mby5uYW1lID09IHByb3BlcnR5
TmFtZXMucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRp
YyBtZXRob2QgbmFtZWQgJ3Byb3RvdHlwZSciKTsKIAotICAgICAgICAgICAgYm9vbCBpc0NsYXNz
UHJvcGVydHkgPSB0cnVlOwogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKSB7
CiAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbXB1
dGVkUHJvcGVydHlOYW1lLCBtZXRob2QsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4o
UHJvcGVydHlOb2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLAotICAgICAg
ICAgICAgICAgICAgICBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGFsd2F5c1N0cmljdEluc2lkZUNs
YXNzLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgICAg
ICAgICAgICAgUHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcywg
U3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShtZXRob2RJbmZvLm5h
bWUsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwKLSAgICAgICAgICAgICAgICAgICAg
UHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcywgU3VwZXJCaW5k
aW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAg
ICAgICAgICAgICAgICAgUHJvcGVydHlOb2RlOjpVbmtub3duLCBhbHdheXNTdHJpY3RJbnNpZGVD
bGFzcywgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgdGFnKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFRyZWVQcm9wZXJ0eUxpc3QmIHRhaWwg
PSBpc1N0YXRpY01ldGhvZCA/IHN0YXRpY01ldGhvZHNUYWlsIDogaW5zdGFuY2VNZXRob2RzVGFp
bDsKLSAgICAgICAgaWYgKHRhaWwpCi0gICAgICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQ
cm9wZXJ0eUxpc3QobWV0aG9kTG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobWV0aG9k
TG9jYXRpb24sIHByb3BlcnR5KTsKLSAgICAgICAgICAgIGlmIChpc1N0YXRpY01ldGhvZCkKLSAg
ICAgICAgICAgICAgICBzdGF0aWNNZXRob2RzID0gdGFpbDsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBpbnN0YW5jZU1ldGhvZHMgPSB0YWlsOwotICAgICAgICB9CisgICAgICAg
IGlmIChjbGFzc0VsZW1lbnRzVGFpbCkKKyAgICAgICAgICAgIGNsYXNzRWxlbWVudHNUYWlsID0g
Y29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobWV0aG9kTG9jYXRpb24sIHByb3BlcnR5LCBjbGFz
c0VsZW1lbnRzVGFpbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsYXNzRWxlbWVudHMg
PSBjbGFzc0VsZW1lbnRzVGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1ldGhvZExv
Y2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAgfQogCiAgICAgaW5mby5lbmRPZmZzZXQgPSB0b2tlbkxv
Y2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UsICJF
eHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCi0gICAgYXV0byBj
bGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywg
Y2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBh
cmVudENsYXNzLCBpbnN0YW5jZU1ldGhvZHMsIHN0YXRpY01ldGhvZHMpOworICAgIGF1dG8gY2xh
c3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGluZm8sIGNs
YXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9yLCBwYXJl
bnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwgVHJlZUJ1
aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVzc2lv
bjsKIH0KQEAgLTM4OTgsOCArMzg4OCw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5KFRyZWVCCiB7CiAg
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZTsKICAgICBib29sIHdhc0lkZW50ID0gZmFsc2U7Ci0gICAgYm9vbCBpc0NsYXNzUHJvcGVydHkg
PSBmYWxzZTsKLSAgICBib29sIGlzU3RhdGljTWV0aG9kID0gZmFsc2U7CiAKICAgICBpZiAoY29u
c3VtZShUSU1FUykpCiAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yV3JhcHBlck1ldGhvZE1vZGU7CkBAIC0zOTQ4LDEzICszOTM2LDEzIEBAIG5hbWVkUHJvcGVy
dHk6CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Np
b24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgICAgICBjb250ZXh0LnNldEVu
ZE9mZnNldChub2RlLCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgICAgICAgICAgSW5m
ZXJOYW1lIGluZmVyTmFtZSA9IGlkZW50ICYmICppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT51bmRlcnNjb3JlUHJvdG8gPyBJbmZlck5hbWU6OkRpc2FsbG93ZWQgOiBJbmZlck5hbWU6OkFs
bG93ZWQ7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwg
bm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBjb21w
bGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGluZmVyTmFtZSwgaXNDbGFzc1Byb3BlcnR5
KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2Rl
LCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRl
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRUYWc6Ok5v
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7CiAgICAgICAg
ICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwgaWRlbnQsIHBh
cnNlTW9kZSk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwotICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpD
b25zdGFudCwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29tcGxldGUsIFN1cGVyQmluZGlu
Zzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0aG9kLCBQcm9wZXJ0
eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0LCBjb21wbGV0ZSwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpO
byk7CiAgICAgICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZShwYXJzZU1vZGUgIT0gU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlLCAiRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQg
bGlzdCIpOwogCkBAIC0zOTY4LDcgKzM5NTYsNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICAg
ICAgaWYgKGN1cnJlbnRTY29wZSgpLT5pc0Fycm93RnVuY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICBjdXJyZW50U2NvcGUoKS0+c2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlc0V2YWwoKTsKICAgICAg
ICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0ZVJlc29sdmUobG9jYXRp
b24sICppZGVudCwgc3RhcnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwotICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG5vZGUsIHN0YXRpY19jYXN0PFBy
b3BlcnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6
U2hvcnRoYW5kKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgY29tcGxldGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7Cisg
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbm9kZSwgc3Rh
dGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJv
cGVydHlOb2RlOjpTaG9ydGhhbmQpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0LCBjb21wbGV0
ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVt
ZW50VGFnOjpObyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWF0Y2goRVFVQUwpKSAvLyBD
b3ZlckluaXRpYWxpemVkTmFtZSBpcyBleGNsdXNpdmUgdG8gQmluZGluZ1BhdHRlcm4gYW5kIEFz
c2lnbm1lbnRQYXR0ZXJuCkBAIC0zOTgxLDcgKzM5NjksNyBAQCBuYW1lZFByb3BlcnR5OgogICAg
ICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6U2V0dGVyOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgJzonIGZvbGxvd2luZyB0aGUgcHJv
cGVydHkgbmFtZSAnIiwgaWRlbnQtPmltcGwoKSwgIiciKTsKLSAgICAgICAgcmV0dXJuIHBhcnNl
R2V0dGVyU2V0dGVyKGNvbnRleHQsIGNvbXBsZXRlLCB0eXBlLCBnZXR0ZXJPclNldHRlclN0YXJ0
T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGlzQ2xhc3NQcm9wZXJ0eSwgaXNTdGF0aWNN
ZXRob2QpOworICAgICAgICByZXR1cm4gcGFyc2VHZXR0ZXJTZXR0ZXIoY29udGV4dCwgY29tcGxl
dGUsIHR5cGUsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgfQogICAgIGNhc2UgRE9VQkxFOgogICAgIGNh
c2UgSU5URUdFUjogewpAQCAtMzk5Miw3ICszOTgwLDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVy
QXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9k
KGNvbnRleHQsICZpZGVudCwgcGFyc2VNb2RlKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eSgmaWRlbnQsIG1l
dGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBjb21w
bGV0ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgaXNDbGFzc1By
b3BlcnR5KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KCZpZGVu
dCwgbWV0aG9kLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24s
IGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFz
c0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKHBhcnNlTW9k
ZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBhIHBhcmVudGhlc2lz
IGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQwMDAsNyArMzk4OCw3IEBAIG5hbWVkUHJvcGVy
dHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNlIGV4
cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIGNvbnRleHQuc2V0
RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9wYXJzZXJB
cmVuYSwgcHJvcGVydHlOYW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0
eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaXNDbGFz
c1Byb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoY29uc3Rf
Y2FzdDxWTSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIFByb3Bl
cnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2Fz
ZSBPUEVOQlJBQ0tFVDogewogICAgICAgICBuZXh0KCk7CkBAIC00MDExLDcgKzM5OTksNyBAQCBu
YW1lZFByb3BlcnR5OgogICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAg
ICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsICZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgcGFyc2VNb2RlKTsKICAgICAgICAgICAgIHByb3Bh
Z2F0ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShw
cm9wZXJ0eU5hbWUsIG1ldGhvZCwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksIFByb3BlcnR5Tm9k
ZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgaXNDbGFzc1By
b3BlcnR5KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3Bl
cnR5TmFtZSwgbWV0aG9kLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5
Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBDbGFzc0VsZW1lbnRU
YWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKHBhcnNlTW9kZSAhPSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1
bWVudCBsaXN0Iik7CiAKQEAgLTQwMTksNyArNDAwNyw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAg
ICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24g
Zm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0
KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlO
b2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21wdXRl
ZCksIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWUsIG5vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4o
UHJvcGVydHlOb2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLCBQcm9wZXJ0
eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2xhc3NF
bGVtZW50VGFnOjpObyk7CiAgICAgfQogICAgIGNhc2UgRE9URE9URE9UOiB7CiAgICAgICAgIGlm
IChtX3VzZU9iamVjdFJlc3RTcHJlYWQpIHsKQEAgLTQwMzAsNyArNDAxOCw3IEBAIG5hbWVkUHJv
cGVydHk6CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBlbGVtID0gcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbk9yUHJvcGFnYXRlRXJyb3JDbGFzcyhjb250ZXh0KTsKICAgICAgICAgICAgIGZh
aWxJZkZhbHNlKGVsZW0sICJDYW5ub3QgcGFyc2Ugc3ViamVjdCBvZiBhIHNwcmVhZCBvcGVyYXRp
b24iKTsKICAgICAgICAgICAgIGF1dG8gbm9kZSA9IGNvbnRleHQuY3JlYXRlT2JqZWN0U3ByZWFk
RXhwcmVzc2lvbihzcHJlYWRMb2NhdGlvbiwgZWxlbSwgc3RhcnQsIGRpdm90LCBtX2xhc3RUb2tl
bkVuZFBvc2l0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5
KG5vZGUsIFByb3BlcnR5Tm9kZTo6U3ByZWFkLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBs
ZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KG5vZGUsIFByb3BlcnR5Tm9kZTo6U3By
ZWFkLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0KICAgICAgICAgRkFMTFRIUk9V
R0g7CiAgICAgfQpAQCAtNDA1NSw3ICs0MDQzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGgK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcihU
cmVlQnVpbGRlciYgY29udGV4dCwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBl
LCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LAotICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIGJvb2wgaXNDbGFzc1Byb3BlcnR5LCBib29sIGlzU3RhdGljTWV0
aG9kKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIENsYXNzRWxlbWVudFRh
ZyB0YWcpCiB7CiAgICAgY29uc3QgSWRlbnRpZmllciogc3RyaW5nUHJvcGVydHlOYW1lID0gMDsK
ICAgICBkb3VibGUgbnVtZXJpY1Byb3BlcnR5TmFtZSA9IDA7CkBAIC00MDY1LDkgKzQwNTMsOSBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogCiAgICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIo
KSB8fCBtYXRjaChTVFJJTkcpIHx8IG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykg
ewogICAgICAgICBzdHJpbmdQcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKLSAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGlzQ2xhc3NQcm9wZXJ0eSAmJiBpc1N0YXRpY01ldGhv
ZCAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0
YXRpYyAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBtZXRob2QgbmFtZWQg
J3Byb3RvdHlwZSciKTsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGlzQ2xhc3NQcm9wZXJ0
eSAmJiAhaXNTdGF0aWNNZXRob2QgJiYgKnN0cmluZ1Byb3BlcnR5TmFtZSA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwKKyAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmICpzdHJpbmdQcm9wZXJ0eU5hbWUgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsCiAgICAgICAgICAgICAiQ2Fubm90IGRlY2xh
cmUgYSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKICAgICAgICAgbmV4
dCgpOwogICAgIH0gZWxzZSBpZiAobWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VSKSkgewpA
QCAtNDA5MSwxMiArNDA3OSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQ
cm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogICAgIH0KIAog
ICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHR5cGUsIHN0cmljdCwgc3RyaW5nUHJv
cGVydHlOYW1lLCBpbmZvLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGxvY2F0aW9uLCB0eXBlLCBzdHJpY3QsIHN0
cmluZ1Byb3BlcnR5TmFtZSwgaW5mbywgdGFnKTsKIAogICAgIGlmIChjb21wdXRlZFByb3BlcnR5
TmFtZSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0
eShsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVy
dHlOb2RlOjpDb21wdXRlZCksIHN0cmljdCwgY29tcHV0ZWRQcm9wZXJ0eU5hbWUsIGluZm8sIGlz
Q2xhc3NQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkobG9jYXRpb24sIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlw
ZSB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLCBzdHJpY3QsIGNvbXB1dGVkUHJvcGVydHlOYW1l
LCBpbmZvLCB0YWcpOwogCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eShjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGxvY2F0aW9uLCB0
eXBlLCBzdHJpY3QsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIGluZm8sIGlzQ2xhc3NQcm9wZXJ0eSk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdF9j
YXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGxvY2F0aW9uLCB0eXBlLCBzdHJpY3QsIG51
bWVyaWNQcm9wZXJ0eU5hbWUsIGluZm8sIHRhZyk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAwODMxMjFi
NDhjMmMyMTc0MDdmOGI2MThmZTI1M2FiZTE4MWI3MDk2Li5mOTQwZTk2NzdiMzc2NzUwMTg5MWY1
MGMxYThhYTZlY2M3YTFiNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
QEAgLTE1NzAsNyArMTU3MCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlQXJndW1lbnQoVHJlZUJ1
aWxkZXImLCBBcmd1bWVudFR5cGUmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VQcm9w
ZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9k
TmFtZSwgU291cmNlUGFyc2VNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0
LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQs
IENvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0NsYXNzUHJvcGVydHksIGJvb2wgaXNTdGF0aWNNZXRo
b2QpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNl
R2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlw
ZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kLCBD
bGFzc0VsZW1lbnRUYWcpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlT
X0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwg
U3ludGF4Q2hlY2tlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25l
ZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFM
V0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNNZXRob2Qs
IHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0IHsgRm9yTG9v
cENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA4ZjNhZmU2ZDI1NmZhYzk1ZTY5M2Q0MjA0
ODkxN2RmOTVhZDM3MTQxLi45N2NmYWRiMzAyZjc2NTZlMzI0Y2RiYjA3ZmQ0YWY0NDY1NDQzZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAt
MTkxLDcgKzE5MSw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChj
b25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlw
ZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWllbGRFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQXdhaXQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEF3YWl0RXhwcjsgfQotICAgIENsYXNzRXhwcmVz
c2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2Vy
Q2xhc3NJbmZvPFN5bnRheENoZWNrZXI+JiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Np
b25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0
dXJuIENsYXNzRXhwcjsgfQorICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyQ2xhc3NJbmZvPFN5bnRheENoZWNrZXI+
JiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwg
UHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlR2VuZXJhdG9yRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIGNvbnN0
IElkZW50aWZpZXImKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVBc3luY0Z1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQ
YXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7
IH0KQEAgLTIxNCwyNCArMjE0LDI0IEBAIHB1YmxpYzoKIAogICAgIGludCBjcmVhdGVBcmd1bWVu
dHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gQXJndW1lbnRzTGlz
dFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50KSB7IHJldHVybiBBcmd1bWVudHNMaXN0UmVzdWx0OyB9Ci0gICAgUHJv
cGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBib29sIGNvbXBsZXRlLCBT
dXBlckJpbmRpbmcsIEluZmVyTmFtZSwgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQ
cm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wgY29tcGxldGUsIFN1cGVyQmluZGluZywgSW5mZXJO
YW1lLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICBpZiAoIWNvbXBsZXRlKQogICAg
ICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICBBU1NFUlQobmFtZSk7CiAg
ICAgICAgIHJldHVybiBQcm9wZXJ0eShuYW1lLCB0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkg
Y3JlYXRlUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2Rl
OjpQdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcsIGJvb2wpCisgICAgUHJvcGVydHkgY3JlYXRl
UHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRU
eXBlLCBib29sLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAg
IHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVy
dHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBuYW1lLCBpbnQsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wgY29tcGxl
dGUsIFN1cGVyQmluZGluZywgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShWTSog
dm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgZG91YmxlIG5hbWUsIGludCwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCBjb21wbGV0ZSwgU3Vw
ZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICBpZiAoIWNvbXBsZXRl
KQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICByZXR1cm4gUHJv
cGVydHkoJnBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmll
cih2bSwgbmFtZSksIHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShp
bnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwg
Ym9vbCwgU3VwZXJCaW5kaW5nLCBib29sKQorICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGlu
dCwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBi
b29sLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIHJldHVy
biBQcm9wZXJ0eSh0eXBlKTsKICAgICB9CkBAIC0yODUsMTggKzI4NSwxOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhcHBlbmRFeHBvcnRTcGVjaWZpZXIoRXhwb3J0U3BlY2lmaWVyTGlzdCwgRXhwb3J0
U3BlY2lmaWVyKSB7IH0KIAogICAgIGludCBhcHBlbmRDb25zdERlY2woY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRS
ZXN1bHQ7IH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0cmljdCwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENo
ZWNrZXI+JiwgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0
cmljdCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5
bnRheENoZWNrZXI+JiwgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5h
bWUpOwogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0
eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICBQ
cm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sLCBpbnQsIGNvbnN0IFBhcnNlckZ1bmN0
aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIGJvb2wpCisgICAgUHJvcGVydHkgY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgYm9vbCwgaW50LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tl
cj4mLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICByZXR1cm4gUHJvcGVydHkodHlw
ZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0q
IHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29sIHN0cmljdCwgZG91YmxlIG5hbWUsIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIGJvb2wpCisgICAgUHJvcGVydHkgY3Jl
YXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVu
YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wg
c3RyaWN0LCBkb3VibGUgbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNr
ZXI+JiwgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAgICAg
ICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5n
ZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZjNDg3N2I5NmZkNWQ0ODI1NWViNmE1YzRi
Njc1ZWU4NmU1NWVmZGUuLjg1YzgzZWMxZDlmNWUxZDY3NTljZjhmNmZmNzYxN2E1NWZkYmM0Nzkg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTgtMDMtMTIgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlh
LmNvbT4KKworICAgICAgICBbSlNDXSBmaXggb3JkZXIgb2YgZXZhbHVhdGlvbiBmb3IgQ2xhc3NE
ZWZpbml0aW9uRXZhbHVhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgbmVlZCB0byBiZSBldmFsdWF0ZWQg
aW4gc291cmNlIG9yZGVyIGR1cmluZyBjbGFzcworICAgICAgICBkZWZpbml0aW9uIGV2YWx1YXRp
b24sIGFzIGl0J3Mgb2JzZXJ2YWJsZSAoYW5kIHNwZWNpZmllZCB0byB3b3JrIHRoaXMgd2F5KS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBpbXByb3ZlcyBjb21wYXRpYmlsaXR5IHdpdGggQ2hyb21p
dW0uCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3NfZWxlbWVudHMuanM6IEFkZGVkLgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICh0ZXN0LkMucHJvdG90eXBlLmVmZmVjdCk6CisgICAgICAgICh0
ZXN0LkMuZWZmZWN0KToKKyAgICAgICAgKHRlc3QuQy5wcm90b3R5cGUuZ2V0IGVmZmVjdCk6Cisg
ICAgICAgICh0ZXN0LkMucHJvdG90eXBlLnNldCBlZmZlY3QpOgorICAgICAgICAodGVzdC5DKToK
KwogMjAxOC0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbREZHXSBBSSBzaG91bGQgY29udmVydCBDcmVhdGVUaGlzIHRvIE5ld09iamVjdCBp
ZiB0aGUgcHJvdG90eXBlIG9iamVjdCBpcyBwcm92ZWQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzX2VsZW1lbnRzLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3NfZWxlbWVudHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGM5YWNlMzdiZDhlYzUzNGNhMWEzNjQ0ZjIyOTYxMDE1ZWNkZThiNQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzX2VsZW1lbnRzLmpzCkBAIC0wLDAg
KzEsMjQgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisKK2xldCBsb2cgPSBbXTsKK2Z1bmN0aW9uIGVm
ZmVjdChkZXNjKSB7IGxvZy5wdXNoKGRlc2MpOyByZXR1cm4gZGVzYzsgfQorCitjbGFzcyBDIHsK
KyAgW2VmZmVjdCgiaW5zdGFuY2UjMSIpXSgpIHt9CisgIHN0YXRpYyBbZWZmZWN0KCJzdGF0aWMj
MiIpXSgpIHt9CisgIGdldCBbZWZmZWN0KCJpbnN0YW5jZUdldHRlciMzIildKCkge30KKyAgc3Rh
dGljIGdldCBbZWZmZWN0KCJzdGF0aWNHZXR0ZXIjNCIpXSgpIHt9CisgIHNldCBbZWZmZWN0KCJp
bnN0YW5jZVNldHRlciM1IildKHYpIHt9CisgIHN0YXRpYyBbZWZmZWN0KCJzdGF0aWNTZXR0ZXIj
NiIpXSh2KSB7fQorfQorCityZXR1cm4gbG9nWzBdID09PSAiaW5zdGFuY2UjMSIgJiYKKyAgICAg
ICBsb2dbMV0gPT09ICJzdGF0aWMjMiIgJiYKKyAgICAgICBsb2dbMl0gPT09ICJpbnN0YW5jZUdl
dHRlciMzIiAmJgorICAgICAgIGxvZ1szXSA9PT0gInN0YXRpY0dldHRlciM0IiAmJgorICAgICAg
IGxvZ1s0XSA9PT0gImluc3RhbmNlU2V0dGVyIzUiICYmCisgICAgICAgbG9nWzVdID09PSAic3Rh
dGljU2V0dGVyIzYiOworfQorCitpZiAoIXRlc3QoKSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoIlRl
c3QgZmFpbGVkIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335788</attachid>
            <date>2018-03-14 12:40:20 -0700</date>
            <delta_ts>2018-03-14 13:00:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183523-20180314154018.patch</filename>
            <type>text/plain</type>
            <size>47450</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MDlhNDNkOGM0MjczNTdjNzRmMDMzYzA0NWUyYzYzZTE2YTNiNmE5Li5iN2UyODg5MmE3NmY3NjZk
NjMzMTlhZjdmZjYzMDhhYWE3MmZjZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOC0wMy0xNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZpeCBvcmRlciBvZiBldmFsdWF0aW9uIGZvciBDbGFzc0RlZmlu
aXRpb25FdmFsdWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODM1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAg
ICAgICAgQ29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgbmVlZCB0byBiZSBldmFsdWF0ZWQgaW4gc291
cmNlIG9yZGVyIGR1cmluZyBjbGFzcworICAgICAgICBkZWZpbml0aW9uIGV2YWx1YXRpb24sIGFz
IGl0J3Mgb2JzZXJ2YWJsZSAoYW5kIHNwZWNpZmllZCB0byB3b3JrIHRoaXMgd2F5KS4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBpbXByb3ZlcyBjb21wYXRpYmlsaXR5IHdpdGggQ2hyb21pdW0uCisK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVDbGFzc0VsZW1lbnRzKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVDbGFzc0V4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlUHJvcGVydHkpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6
CisgICAgICAgIChKU0M6OlByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q2xhc3NFeHByTm9kZTo6Q2xhc3NFeHByTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6aGFzU3RhdGljYWxseU5hbWVk
UHJvcGVydHkpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eU5vZGU6OmlzQ2xhc3NQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5
Tm9kZTo6aXNTdGF0aWNDbGFzc1Byb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlOb2RlOjppc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIpOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGFzc0V4cHIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorCiAyMDE4LTAzLTE0ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUg
YnVpbGQgYWZ0ZXIgcjIyOTU2NwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDg4MjRhODEyODA5NDhjNzIzYjQ2
MGU0NzE5YzZmZWM3YmQzZTRjMDEuLjFlZjFhZTVjYjAxNjYyNWY4MjViMzdiZWY3MDI2OWIwNDA2
NTdmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUyMSw2ICs1MjEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gZW1pdE5vZGVJblRhaWxQb3NpdGlvbihudWxscHRyLCBuKTsK
ICAgICAgICAgfQogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVDbGFzc0VsZW1lbnRz
KFByb3BlcnR5TGlzdE5vZGUqIG4sIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3RlcklE
KiBwcm90b3R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+
cmVmQ291bnQoKSAmJiBwcm90b3R5cGUtPnJlZkNvdW50KCkpOworICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCFtX3ZtLT5pc1NhZmVUb1JlY3Vyc2UoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobi0+bmVlZHNEZWJ1Z0hvb2soKSkpCisgICAgICAgICAgICAgICAgZW1pdERlYnVn
SG9vayhuKTsKKyAgICAgICAgICAgIHJldHVybiBuLT5lbWl0Qnl0ZWNvZGUoKnRoaXMsIGNvbnN0
cnVjdG9yLCBwcm90b3R5cGUpOworICAgICAgICB9CisKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5vZGVGb3JQcm9wZXJ0eShSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKiBub2RlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAobm9kZS0+aXNTdHJpbmcoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4
IGEyMjhiZDA0ZDUyMWY4YjNiNTk1ZTI0OWNlNzRmY2EyM2JiNzY2ZjcuLjM5ZmY0ODViMWVlZDU0
NzdjMjBiODIzMGQ0ZDQ0Njc0MjdkOThkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTUwOCwxMiArNTA4LDE1IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGZ1bmN0
aW9uLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmhvbWVPYmplY3RQ
cml2YXRlTmFtZSgpLCBob21lT2JqZWN0KTsKIH0KIAotUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK1JlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3RPckNvbnN0cnVjdG9yLCBS
ZWdpc3RlcklEKiBwcm90b3R5cGUpCiB7CiAgICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVz
dCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KICAgICBQcm9wZXJ0eUxpc3ROb2Rl
KiBwID0gdGhpczsKLSAgICBmb3IgKDsgcCAmJiAocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0
eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4dCkKKyAgICBSZWdpc3RlcklEKiBkc3QgPSBu
dWxscHRyOworICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9k
ZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+
aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7
CiAgICAgICAgIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KGdlbmVyYXRvciwgZHN0LCAqcC0+bV9u
b2RlKTsKKyAgICB9CiAKICAgICAvLyBXZXJlIHRoZXJlIGFueSBnZXQvc2V0IHByb3BlcnRpZXM/
CiAgICAgaWYgKHApIHsKQEAgLTUyMyw3ICs1MjYsOCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxp
c3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZQogCiAgICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPFByb3BlcnR5Tm9kZSosIFByb3BlcnR5Tm9k
ZSo+IEdldHRlclNldHRlclBhaXI7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3Ry
aW5nSW1wbCosIEdldHRlclNldHRlclBhaXIsIElkZW50aWZpZXJSZXBIYXNoPiBHZXR0ZXJTZXR0
ZXJNYXA7Ci0gICAgICAgIEdldHRlclNldHRlck1hcCBtYXA7CisgICAgICAgIEdldHRlclNldHRl
ck1hcCBpbnN0YW5jZU1hcDsKKyAgICAgICAgR2V0dGVyU2V0dGVyTWFwIHN0YXRpY01hcDsKIAog
ICAgICAgICAvLyBCdWlsZCBhIG1hcCwgcGFpcmluZyBnZXQvc2V0IHZhbHVlcyB0b2dldGhlci4K
ICAgICAgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBxID0gcDsgcTsgcSA9IHEtPm1fbmV4dCkg
ewpAQCAtNTM4LDYgKzU0Miw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKICAgICAgICAg
ICAgIC8vIER1cGxpY2F0ZXMgYXJlIHBvc3NpYmxlLgogICAgICAgICAgICAgR2V0dGVyU2V0dGVy
UGFpciBwYWlyKG5vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZSo+KG51bGxwdHIpKTsKKyAg
ICAgICAgICAgIEdldHRlclNldHRlck1hcCYgbWFwID0gbm9kZS0+aXNTdGF0aWNDbGFzc1Byb3Bl
cnR5KCkgPyBzdGF0aWNNYXAgOiBpbnN0YW5jZU1hcDsKICAgICAgICAgICAgIEdldHRlclNldHRl
ck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1hcC5hZGQobm9kZS0+bmFtZSgpLT5pbXBsKCksIHBh
aXIpOwogICAgICAgICAgICAgYXV0byYgcmVzdWx0UGFpciA9IHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CkBAIC01NTUsNiArNTYw
LDcgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRo
ZSByZW1haW5pbmcgcHJvcGVydGllcyBpbiB0aGUgbGlzdC4KICAgICAgICAgZm9yICg7IHA7IHAg
PSBwLT5tX25leHQpIHsKICAgICAgICAgICAgIFByb3BlcnR5Tm9kZSogbm9kZSA9IHAtPm1fbm9k
ZTsKKyAgICAgICAgICAgIGRzdCA9IG5vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBw
cm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCiAgICAgICAgICAgICAvLyBIYW5kbGUgcmVn
dWxhciB2YWx1ZXMuCiAgICAgICAgICAgICBpZiAobm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2Rl
OjpDb25zdGFudCkgewpAQCAtNTk1LDYgKzYwMSw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBnZXQvc2V0IHByb3Bl
cnR5IHBhaXIuCisgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAmIG1hcCA9IG5vZGUtPmlzU3Rh
dGljQ2xhc3NQcm9wZXJ0eSgpID8gc3RhdGljTWFwIDogaW5zdGFuY2VNYXA7CiAgICAgICAgICAg
ICBHZXR0ZXJTZXR0ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobm9kZS0+bmFtZSgpLT5p
bXBsKCkpOwogICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1hcC5lbmQoKSk7CiAgICAgICAgICAg
ICBHZXR0ZXJTZXR0ZXJQYWlyJiBwYWlyID0gaXQtPnZhbHVlOwpAQCAtNjM5LDcgKzY0Niw3IEBA
IFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
ZHN0OworICAgIHJldHVybiBkc3RPckNvbnN0cnVjdG9yOwogfQogCiB2b2lkIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQpAQCAtMzk1MSwxMSAr
Mzk1OCw4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb3RvdHlwZU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9w
ZXJ0eU5hbWVzLnByb3RvdHlwZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVy
dHkoY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90
eXBlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCBtX3Bvc2l0aW9uKTsKIAotICAgIGlmICht
X3N0YXRpY01ldGhvZHMpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5n
ZXQoKSwgbV9zdGF0aWNNZXRob2RzKTsKLQotICAgIGlmIChtX2luc3RhbmNlTWV0aG9kcykKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKHByb3RvdHlwZS5nZXQoKSwgbV9pbnN0YW5jZU1ldGhv
ZHMpOworICAgIGlmIChtX2NsYXNzRWxlbWVudHMpCisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVm
aW5lQ2xhc3NFbGVtZW50cyhtX2NsYXNzRWxlbWVudHMsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90
b3R5cGUuZ2V0KCkpOwogCiAgICAgaWYgKCFtX25hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgVmFy
aWFibGUgY2xhc3NOYW1lVmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1fbmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDg2MWYwY2Y3MDZmMDQwYjMx
ODg1MzdhOWFmZWVhMTFiOGJlMzMyZGUuLjVjNmRkMzMxOThjYTJmOTQ1MDUzNThjZGY5NGI2MDVj
OWJlN2U4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC0zOTcsMTAgKzM5NywxMCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgQ2xhc3NFeHByTm9kZSog
Y3JlYXRlQ2xhc3NFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckNsYXNzSW5mbzxBU1RCdWlsZGVyPiYgY2xhc3NJbmZvLCBWYXJpYWJsZUVudmlyb25tZW50
JiBjbGFzc0Vudmlyb25tZW50LCBFeHByZXNzaW9uTm9kZSogY29uc3RydWN0b3IsCi0gICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBwYXJlbnRDbGFzcywgUHJvcGVydHlMaXN0Tm9kZSogaW5zdGFuY2VN
ZXRob2RzLCBQcm9wZXJ0eUxpc3ROb2RlKiBzdGF0aWNNZXRob2RzKQorICAgICAgICBFeHByZXNz
aW9uTm9kZSogcGFyZW50Q2xhc3MsIFByb3BlcnR5TGlzdE5vZGUqIGNsYXNzRWxlbWVudHMpCiAg
ICAgewogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVz
c2lvbihjbGFzc0luZm8uc3RhcnRPZmZzZXQsIGNsYXNzSW5mby5lbmRPZmZzZXQsIGNsYXNzSW5m
by5zdGFydExpbmUsIGNsYXNzSW5mby5zdGFydENvbHVtbik7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIENsYXNzRXhwck5vZGUobG9jYXRpb24sICpjbGFzc0luZm8uY2xhc3NO
YW1lLCBzb3VyY2UsIGNsYXNzRW52aXJvbm1lbnQsIGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywg
aW5zdGFuY2VNZXRob2RzLCBzdGF0aWNNZXRob2RzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgQ2xhc3NFeHByTm9kZShsb2NhdGlvbiwgKmNsYXNzSW5mby5jbGFzc05hbWUs
IHNvdXJjZSwgY2xhc3NFbnZpcm9ubWVudCwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFz
c0VsZW1lbnRzKTsKICAgICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25F
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQpAQCAtNDcwLDcgKzQ3MCw3IEBAIHB1Ymxp
YzoKICAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4cHJlc3Npb25O
b2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXJndW1lbnRMaXN0Tm9kZShs
b2NhdGlvbiwgYXJncywgYXJnKTsgfQogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSog
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlv
bkluZm8sIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywg
Q2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAg
ICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5j
dGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldCk7CkBAIC00NzgsMzAgKzQ3OCwzMCBAQCBwdWJsaWM6CiAgICAgICAgIGZ1bmN0aW9u
SW5mby5ib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwogICAgICAgICBTb3VyY2VDb2RlIHNv
dXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZz
ZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0
aW9uSW5mby5wYXJhbWV0ZXJzU3RhcnRDb2x1bW4pOwogICAgICAgICBNZXRob2REZWZpbml0aW9u
Tm9kZSogbWV0aG9kRGVmID0gbmV3IChtX3BhcnNlckFyZW5hKSBNZXRob2REZWZpbml0aW9uTm9k
ZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGZ1bmN0aW9u
SW5mby5ib2R5LCBzb3VyY2UpOwotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQ
cm9wZXJ0eU5vZGUoKm5hbWUsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3du
LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBtZXRob2REZWYsIHR5cGUs
IFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CiAgICAg
fQogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG5hbWUsIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBib29sIGlzQ2xhc3NQcm9w
ZXJ0eSkKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0
TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlv
bi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgU291cmNl
Q29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0
YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5l
LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyc1N0YXJ0Q29sdW1uKTsKICAgICAgICAgTWV0aG9kRGVm
aW5pdGlvbk5vZGUqIG1ldGhvZERlZiA9IG5ldyAobV9wYXJzZXJBcmVuYSkgTWV0aG9kRGVmaW5p
dGlvbk5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBm
dW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgUHJvcGVydHlOb2RlKG5hbWUsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlOb2RlOjpV
bmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKG5hbWUsIG1ldGhvZERlZiwg
dHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsK
ICAgICB9CiAKICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAg
ICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYg
ZnVuY3Rpb25JbmZvLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICAgICAgZG91YmxlIG5hbWUs
IGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBDbGFz
c0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExv
YyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24u
c3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50ID0gcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVy
aWNJZGVudGlmaWVyKHZtLCBuYW1lKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3Nv
dXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlv
bkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyc1N0YXJ0Q29sdW1uKTsKICAgICAgICAgTWV0aG9kRGVmaW5pdGlvbk5vZGUqIG1ldGhv
ZERlZiA9IG5ldyAobV9wYXJzZXJBcmVuYSkgTWV0aG9kRGVmaW5pdGlvbk5vZGUobG9jYXRpb24s
IHZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgZnVuY3Rpb25JbmZvLmJvZHksIHNv
dXJjZSk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShp
ZGVudCwgbWV0aG9kRGVmLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGlu
Zzo6TmVlZGVkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBQcm9wZXJ0eU5vZGUoaWRlbnQsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlOb2Rl
OjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsKICAgICB9CiAKLSAgICBQcm9w
ZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwg
RXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5v
ZGU6OlB1dFR5cGUgcHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgSW5m
ZXJOYW1lIGluZmVyTmFtZSwgYm9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAgUHJvcGVydHlOb2Rl
KiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Np
b25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRU
eXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIEluZmVyTmFtZSBp
bmZlck5hbWUsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICBpZiAoaW5mZXJO
YW1lID09IEluZmVyTmFtZTo6QWxsb3dlZCkgewogICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmFz
ZUZ1bmNFeHByTm9kZSgpKSB7CkBAIC01MTEsMTcgKzUxMSwxNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzQ2xhc3NFeHByTm9kZSgpKQogICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PENsYXNzRXhwck5vZGUqPihub2RlKS0+c2V0RWNtYU5hbWUoKnByb3BlcnR5
TmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJv
cGVydHlOb2RlKCpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGlu
ZywgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
UHJvcGVydHlOb2RlKCpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmlu
ZGluZywgdGFnKTsKICAgICB9Ci0gICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShFeHBy
ZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6
UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBib29sIGlz
Q2xhc3NQcm9wZXJ0eSkKKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KEV4cHJlc3Np
b25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRU
eXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVu
dFRhZyB0YWcpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9w
ZXJ0eU5vZGUobm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCBpc0NsYXNzUHJvcGVy
dHkpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUobm9k
ZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCB0YWcpOwogICAgIH0KLSAgICBQcm9wZXJ0
eU5vZGUqIGNyZWF0ZVByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBk
b3VibGUgcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpU
eXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRp
bmcgc3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICBQcm9wZXJ0eU5vZGUq
IGNyZWF0ZVByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBkb3VibGUg
cHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVu
YSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgcHJvcGVydHlOYW1lKSwgbm9kZSwgdHlwZSwg
cHV0VHlwZSwgc3VwZXJCaW5kaW5nLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUocGFyc2VyQXJlbmEuaWRlbnRpZmllckFy
ZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBwcm9wZXJ0eU5hbWUpLCBub2RlLCB0eXBl
LCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CiAgICAgfQotICAgIFByb3BlcnR5Tm9kZSog
Y3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5v
ZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUg
cHV0VHlwZSwgYm9vbCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJv
cGVydHkpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHByb3BlcnR5
TmFtZSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCBpc0NsYXNzUHJvcGVydHkp
OyB9CisgICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShFeHByZXNzaW9uTm9kZSogcHJv
cGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3VwZXJC
aW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IFByb3BlcnR5Tm9kZShwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmlu
ZGluZywgdGFnKTsgfQogICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHBy
b3BlcnR5KTsgfQogICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9w
ZXJ0eUxpc3ROb2RlKiB0YWlsKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5
TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDBhMDc5N2U1OGUyNmI5
MDEwNDAxYmUxYTBlZDVlM2QxOTg1YTg0NDEuLmU2ZjAzYjY1Yjc1ZDAwMjUyZjA0M2VjOTkzMWZi
YmE1MDRiOTNjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCkBAIC0yNDIsMzYgKzI0MiwzNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSwgUHV0VHlw
ZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9wZXJ0
eSkKKyAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5
cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAg
ICAgIDogbV9uYW1lKCZuYW1lKQogICAgICAgICAsIG1fYXNzaWduKGFzc2lnbikKICAgICAgICAg
LCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGlu
ZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKICAgICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkK
LSAgICAgICAgLCBtX2lzQ2xhc3NQcm9wZXJ0eShpc0NsYXNzUHJvcGVydHkpCisgICAgICAgICwg
bV9jbGFzc0VsZW1lbnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwg
bV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7CiAgICAgfQogICAgIAotICAg
IGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogYXNzaWdu
LCBUeXBlIHR5cGUsIFB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywg
Ym9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAgaW5saW5lIFByb3BlcnR5Tm9kZTo6UHJvcGVydHlO
b2RlKEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSwgUHV0VHlwZSBwdXRUeXBlLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgICAgICA6
IG1fbmFtZShudWxscHRyKQogICAgICAgICAsIG1fYXNzaWduKGFzc2lnbikKICAgICAgICAgLCBt
X3R5cGUodHlwZSkKICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9
PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKICAgICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKLSAg
ICAgICAgLCBtX2lzQ2xhc3NQcm9wZXJ0eShpc0NsYXNzUHJvcGVydHkpCisgICAgICAgICwgbV9j
bGFzc0VsZW1lbnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwgbV9p
c092ZXJyaWRkZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBuYW1lLCBFeHByZXNz
aW9uTm9kZSogYXNzaWduLCBUeXBlIHR5cGUsIFB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJvcGVydHkpCisgICAgaW5saW5lIFByb3BlcnR5
Tm9kZTo6UHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBuYW1lLCBFeHByZXNzaW9uTm9kZSog
YXNzaWduLCBUeXBlIHR5cGUsIFB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICAgICAgOiBtX25hbWUobnVsbHB0cikKICAg
ICAgICAgLCBtX2V4cHJlc3Npb24obmFtZSkKICAgICAgICAgLCBtX2Fzc2lnbihhc3NpZ24pCiAg
ICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhzdXBl
ckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwgbV9wdXRUeXBlKHB1
dFR5cGUpCi0gICAgICAgICwgbV9pc0NsYXNzUHJvcGVydHkoaXNDbGFzc1Byb3BlcnR5KQorICAg
ICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0YWcpKQogICAg
ICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewogICAgIH0KQEAg
LTk5Myw3ICs5OTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIENsYXNzRXhwck5vZGU6OkNsYXNzRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29kZSYgY2xhc3NT
b3VyY2UsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25O
b2RlKiBjb25zdHJ1Y3RvckV4cHJlc3Npb24sIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0hlcml0YWdl
LCBQcm9wZXJ0eUxpc3ROb2RlKiBpbnN0YW5jZU1ldGhvZHMsIFByb3BlcnR5TGlzdE5vZGUqIHN0
YXRpY01ldGhvZHMpCisgICAgaW5saW5lIENsYXNzRXhwck5vZGU6OkNsYXNzRXhwck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29u
c3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGNsYXNzRW52
aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvckV4cHJlc3Npb24sIEV4cHJlc3Np
b25Ob2RlKiBjbGFzc0hlcml0YWdlLCBQcm9wZXJ0eUxpc3ROb2RlKiBjbGFzc0VsZW1lbnRzKQog
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFZhcmlhYmxlRW52
aXJvbm1lbnROb2RlKGNsYXNzRW52aXJvbm1lbnQpCiAgICAgICAgICwgbV9jbGFzc1NvdXJjZShj
bGFzc1NvdXJjZSkKQEAgLTEwMDEsOCArMTAwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAsIG1fZWNtYU5hbWUoJm5hbWUpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvckV4cHJlc3Npb24o
Y29uc3RydWN0b3JFeHByZXNzaW9uKQogICAgICAgICAsIG1fY2xhc3NIZXJpdGFnZShjbGFzc0hl
cml0YWdlKQotICAgICAgICAsIG1faW5zdGFuY2VNZXRob2RzKGluc3RhbmNlTWV0aG9kcykKLSAg
ICAgICAgLCBtX3N0YXRpY01ldGhvZHMoc3RhdGljTWV0aG9kcykKKyAgICAgICAgLCBtX2NsYXNz
RWxlbWVudHMoY2xhc3NFbGVtZW50cykKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDg1YzMxYTMyY2I5ZDljODg2NmI1MWU2N2U3N2RjYjA4
OTQzMTU4NDYuLjRiYjA1ZjNmZTMyZGFmZTM4NDAyMGY3NDQwNDI0ZjZmZTgxNTRkM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0yNDgsOSArMjQ4LDExIEBAIGJv
b2wgUHJvcGVydHlMaXN0Tm9kZTo6aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHkoY29uc3QgSWRl
bnRpZmllciYgcHJvcE5hbWUpCiB7CiAgICAgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCA9IHRoaXM7
CiAgICAgd2hpbGUgKGxpc3QpIHsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciogY3VycmVudE5v
ZGVOYW1lID0gbGlzdC0+bV9ub2RlLT5uYW1lKCk7Ci0gICAgICAgIGlmIChjdXJyZW50Tm9kZU5h
bWUgJiYgKmN1cnJlbnROb2RlTmFtZSA9PSBwcm9wTmFtZSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc1N0YXRpY0NsYXNzUHJvcGVydHkoKSkg
eworICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogY3VycmVudE5vZGVOYW1lID0gbGlzdC0+
bV9ub2RlLT5uYW1lKCk7CisgICAgICAgICAgICBpZiAoY3VycmVudE5vZGVOYW1lICYmICpjdXJy
ZW50Tm9kZU5hbWUgPT0gcHJvcE5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KICAgICAgICAgbGlzdCA9IGxpc3QtPm1fbmV4dDsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDMyYTYwZWE1NDZh
NjUyMjgxMzg1Mzk3ZDE4OTI2MzA0MWI4ZTQwYTEuLjZjMGYyZGJkMGMxMWFkYjQyYzBkZWM2OWU0
ZDBkZWUxYWRjNzFjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTY5
NSwyMSArNjk1LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fb3B0aW9uYWw7
CiAgICAgfTsKIAorICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIHsgTm8sIEluc3RhbmNl
LCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgOiBwdWJsaWMgUGFy
c2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5cGUgeyBDb25z
dGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5k
ID0gMTYsIFNwcmVhZCA9IDMyIH07CiAgICAgICAgIGVudW0gUHV0VHlwZSB7IFVua25vd24sIEtu
b3duRGlyZWN0IH07CiAKLSAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBF
eHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNz
UHJvcGVydHkpOwotICAgICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQ
dXRUeXBlLCBTdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KTsKLSAgICAgICAgUHJv
cGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiwg
VHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAg
ICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBl
LCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CisgICAgICAgIFByb3Bl
cnR5Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xh
c3NFbGVtZW50VGFnKTsKKyAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBwcm9w
ZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBD
bGFzc0VsZW1lbnRUYWcpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICAgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQogICAgICAgICBi
b29sIG5lZWRzU3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1N1cGVyQmluZGlu
ZzsgfQotICAgICAgICBib29sIGlzQ2xhc3NQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXND
bGFzc1Byb3BlcnR5OyB9CisgICAgICAgIGJvb2wgaXNDbGFzc1Byb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q2xhc3NFbGVtZW50VGFnPihtX2NsYXNzRWxlbWVudFRhZykgIT0g
Q2xhc3NFbGVtZW50VGFnOjpObzsgfQorICAgICAgICBib29sIGlzU3RhdGljQ2xhc3NQcm9wZXJ0
eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENsYXNzRWxlbWVudFRhZz4obV9jbGFzc0Vs
ZW1lbnRUYWcpID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljOyB9CisgICAgICAgIGJvb2wgaXNJ
bnN0YW5jZUNsYXNzUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDbGFzc0Vs
ZW1lbnRUYWc+KG1fY2xhc3NFbGVtZW50VGFnKSA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNl
OyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVy
biBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9CiAgICAgICAgIHZvaWQgc2V0SXNPdmVycmlk
ZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9CiAg
ICAgICAgIFB1dFR5cGUgcHV0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFB1dFR5
cGU+KG1fcHV0VHlwZSk7IH0KQEAgLTcyMiw3ICs3MjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdW5zaWduZWQgbV90eXBlIDogNjsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVy
QmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlwZSA6IDE7Ci0gICAgICAgIHVu
c2lnbmVkIG1faXNDbGFzc1Byb3BlcnR5OiAxOworICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwg
MiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xh
c3NFbGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CisgICAgICAg
IHVuc2lnbmVkIG1fY2xhc3NFbGVtZW50VGFnIDogMjsKICAgICAgICAgdW5zaWduZWQgbV9pc092
ZXJyaWRkZW5CeUR1cGxpY2F0ZTogMTsKICAgICB9OwogCkBAIC03MzMsOCArNzM3LDEzIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHko
Y29uc3QgSWRlbnRpZmllciYgcHJvcE5hbWUpOwogCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKik7CisK
ICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0ID0gbnVsbHB0cikgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVt
aXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCwgbnVsbHB0cik7CisgICAgICAgIH0KICAgICAgICAg
dm9pZCBlbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqLCBQcm9wZXJ0eU5vZGUmKTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUqIG1fbm9kZTsKQEAg
LTIxMzksMTMgKzIxNDgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAg
ICBDbGFzc0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwKICAgICAgICAgICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQmIGNsYXNzRW52aXJvbm1lbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25zdHJ1Y3RvckV4
cHJlc3NzaW9uLAotICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHBhcmVudENsYXNzLCBQcm9w
ZXJ0eUxpc3ROb2RlKiBpbnN0YW5jZU1ldGhvZHMsIFByb3BlcnR5TGlzdE5vZGUqIHN0YXRpY01l
dGhvZHMpOworICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHBhcmVudENsYXNzLCBQcm9wZXJ0
eUxpc3ROb2RlKiBjbGFzc0VsZW1lbnRzKTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGVjbWFO
YW1lKCkgeyByZXR1cm4gbV9lY21hTmFtZSA/ICptX2VjbWFOYW1lIDogbV9uYW1lOyB9CiAgICAg
ICAgIHZvaWQgc2V0RWNtYU5hbWUoY29uc3QgSWRlbnRpZmllciYgbmFtZSkgeyBtX2VjbWFOYW1l
ID0gbV9uYW1lLmlzTnVsbCgpID8gJm5hbWUgOiAmbV9uYW1lOyB9CiAKLSAgICAgICAgYm9vbCBo
YXNTdGF0aWNQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wTmFtZSkgeyByZXR1cm4gbV9z
dGF0aWNNZXRob2RzID8gbV9zdGF0aWNNZXRob2RzLT5oYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0
eShwcm9wTmFtZSkgOiBmYWxzZTsgfQorICAgICAgICBib29sIGhhc1N0YXRpY1Byb3BlcnR5KGNv
bnN0IElkZW50aWZpZXImIHByb3BOYW1lKSB7IHJldHVybiBtX2NsYXNzRWxlbWVudHMgPyBtX2Ns
YXNzRWxlbWVudHMtPmhhc1N0YXRpY2FsbHlOYW1lZFByb3BlcnR5KHByb3BOYW1lKSA6IGZhbHNl
OyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtMjE1Nyw4ICsy
MTY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fZWNt
YU5hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbjsK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fY2xhc3NIZXJpdGFnZTsKLSAgICAgICAgUHJvcGVy
dHlMaXN0Tm9kZSogbV9pbnN0YW5jZU1ldGhvZHM7Ci0gICAgICAgIFByb3BlcnR5TGlzdE5vZGUq
IG1fc3RhdGljTWV0aG9kczsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZSogbV9jbGFzc0VsZW1l
bnRzOwogICAgIH07CiAKICAgICBjbGFzcyBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUgOiBwdWJs
aWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKaW5kZXggNzI1NDNmZDVjNGYwYTU0NTYyZWM1ZDAyZjg5OGIyYzc3YzQwN2QwNC4uNmZh
M2FkMWZhNzYyYzU1MGU5N2ZlN2M0YWE5MjlmODUwNjBmM2JiOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjc5NSwxMCArMjc5NSw4IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDbGFzcyhUCiAgICAgY29uc3VtZU9yRmFpbChPUEVOQlJBQ0UsICJFeHBlY3RlZCBvcGVu
aW5nICd7JyBhdCB0aGUgc3RhcnQgb2YgYSBjbGFzcyBib2R5Iik7CiAKICAgICBUcmVlRXhwcmVz
c2lvbiBjb25zdHJ1Y3RvciA9IDA7Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBzdGF0aWNNZXRob2Rz
ID0gMDsKLSAgICBUcmVlUHJvcGVydHlMaXN0IGluc3RhbmNlTWV0aG9kcyA9IDA7Ci0gICAgVHJl
ZVByb3BlcnR5TGlzdCBpbnN0YW5jZU1ldGhvZHNUYWlsID0gMDsKLSAgICBUcmVlUHJvcGVydHlM
aXN0IHN0YXRpY01ldGhvZHNUYWlsID0gMDsKKyAgICBUcmVlUHJvcGVydHlMaXN0IGNsYXNzRWxl
bWVudHMgPSAwOworICAgIFRyZWVQcm9wZXJ0eUxpc3QgY2xhc3NFbGVtZW50c1RhaWwgPSAwOwog
ICAgIHdoaWxlICghbWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgaWYgKG1hdGNoKFNFTUlD
T0xPTikpIHsKICAgICAgICAgICAgIG5leHQoKTsKQEAgLTI4MDksNyArMjgwNyw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgICAgIHVuc2lnbmVkIG1ldGhvZFN0YXJ0ID0gdG9rZW5T
dGFydCgpOwogCiAgICAgICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgInN0YXRp
YyIgaXMgYSBub24tcmVzZXJ2ZWQga2V5d29yZCBpbiBub24tc3RyaWN0IG1vZGUuCi0gICAgICAg
IGJvb2wgaXNTdGF0aWNNZXRob2QgPSBmYWxzZTsKKyAgICAgICAgQ2xhc3NFbGVtZW50VGFnIHRh
ZyA9IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2U7CiAgICAgICAgIGlmIChtYXRjaChSRVNFUlZF
RF9JRl9TVFJJQ1QpICYmICptX3Rva2VuLm1fZGF0YS5pZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5zdGF0aWNLZXl3b3JkKSB7CiAgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0g
Y3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgICAgICAgICBuZXh0KCk7CkBAIC0yODE3LDcgKzI4MTUs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgICAgICAgICAgICAgIC8vIFJlcGFyc2Ug
InN0YXRpYygpIiBhcyBhIG1ldGhvZCBuYW1lZCAic3RhdGljIi4KICAgICAgICAgICAgICAgICBy
ZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBpc1N0YXRpY01ldGhvZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdGFnID0gQ2xh
c3NFbGVtZW50VGFnOjpTdGF0aWM7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogRmln
dXJlIG91dCBhIHdheSB0byBzaGFyZSBtb3JlIGNvZGUgd2l0aCBwYXJzZVByb3BlcnR5LgpAQCAt
Mjg4MywxMyArMjg4MSwxMiBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgVHJlZVByb3BlcnR5IHBy
b3BlcnR5OwogICAgICAgICBjb25zdCBib29sIGFsd2F5c1N0cmljdEluc2lkZUNsYXNzID0gdHJ1
ZTsKICAgICAgICAgaWYgKGlzR2V0dGVyIHx8IGlzU2V0dGVyKSB7Ci0gICAgICAgICAgICBib29s
IGlzQ2xhc3NQcm9wZXJ0eSA9IHRydWU7CiAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlR2V0
dGVyU2V0dGVyKGNvbnRleHQsIGFsd2F5c1N0cmljdEluc2lkZUNsYXNzLCBpc0dldHRlciA/IFBy
b3BlcnR5Tm9kZTo6R2V0dGVyIDogUHJvcGVydHlOb2RlOjpTZXR0ZXIsCi0gICAgICAgICAgICAg
ICAgbWV0aG9kU3RhcnQsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgaXNDbGFzc1Byb3BlcnR5LCBp
c1N0YXRpY01ldGhvZCk7CisgICAgICAgICAgICAgICAgbWV0aG9kU3RhcnQsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgdGFnKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fu
bm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQ
YXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgICAgICAgICBi
b29sIGlzQ29uc3RydWN0b3IgPSAhaXNTdGF0aWNNZXRob2QgJiYgKmlkZW50ID09IHByb3BlcnR5
TmFtZXMuY29uc3RydWN0b3I7CisgICAgICAgICAgICBib29sIGlzQ29uc3RydWN0b3IgPSB0YWcg
PT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5j
b25zdHJ1Y3RvcjsKICAgICAgICAgICAgIGlmIChpc0FzeW5jTWV0aG9kUGFyc2VNb2RlKHBhcnNl
TW9kZSkgfHwgaXNBc3luY0dlbmVyYXRvck1ldGhvZFBhcnNlTW9kZShwYXJzZU1vZGUpIHx8IGlz
R2VuZXJhdG9yTWV0aG9kUGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKICAgICAgICAgICAgICAgICBp
c0NvbnN0cnVjdG9yID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsICJDYW5ub3QgZGVjbGFy
ZSAiLCBzdHJpbmdBcnRpY2xlRm9yRnVuY3Rpb25Nb2RlKHBhcnNlTW9kZSksIHN0cmluZ0ZvckZ1
bmN0aW9uTW9kZShwYXJzZU1vZGUpLCAiIG5hbWVkICdwcm90b3R5cGUnIik7CkBAIC0yOTA3LDM1
ICsyOTA0LDI4IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAv
LyBGSVhNRTogU3ludGF4IGVycm9yIHdoZW4gc3VwZXIoKSBpcyBjYWxsZWQKLSAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShpc1N0YXRpY01ldGhvZCAmJiBtZXRob2RJbmZvLm5hbWUgJiYg
Km1ldGhvZEluZm8ubmFtZSA9PSBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSwKKyAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMgJiYgbWV0
aG9kSW5mby5uYW1lICYmICptZXRob2RJbmZvLm5hbWUgPT0gcHJvcGVydHlOYW1lcy5wcm90b3R5
cGUsCiAgICAgICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgc3RhdGljIG1ldGhvZCBuYW1l
ZCAncHJvdG90eXBlJyIpOwogCi0gICAgICAgICAgICBib29sIGlzQ2xhc3NQcm9wZXJ0eSA9IHRy
dWU7CiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkoY29tcHV0ZWRQcm9wZXJ0eU5h
bWUsIG1ldGhvZCwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6
OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksCi0gICAgICAgICAgICAgICAgICAg
IFByb3BlcnR5Tm9kZTo6VW5rbm93biwgYWx3YXlzU3RyaWN0SW5zaWRlQ2xhc3MsIFN1cGVyQmlu
ZGluZzo6TmVlZGVkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBQcm9w
ZXJ0eU5vZGU6OlVua25vd24sIGFsd2F5c1N0cmljdEluc2lkZUNsYXNzLCBTdXBlckJpbmRpbmc6
Ok5lZWRlZCwgdGFnKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHJv
cGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KG1ldGhvZEluZm8ubmFtZSwgbWV0aG9kLCBQ
cm9wZXJ0eU5vZGU6OkNvbnN0YW50LAotICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU5vZGU6
OlVua25vd24sIGFsd2F5c1N0cmljdEluc2lkZUNsYXNzLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwg
SW5mZXJOYW1lOjpBbGxvd2VkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICAgICAgICAgICAg
ICBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGFsd2F5c1N0cmljdEluc2lkZUNsYXNzLCBTdXBlckJp
bmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCB0YWcpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKLSAgICAgICAgVHJlZVByb3BlcnR5TGlzdCYgdGFpbCA9IGlzU3RhdGljTWV0
aG9kID8gc3RhdGljTWV0aG9kc1RhaWwgOiBpbnN0YW5jZU1ldGhvZHNUYWlsOwotICAgICAgICBp
ZiAodGFpbCkKLSAgICAgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdCht
ZXRob2RMb2NhdGlvbiwgcHJvcGVydHksIHRhaWwpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtZXRob2RMb2NhdGlvbiwgcHJv
cGVydHkpOwotICAgICAgICAgICAgaWYgKGlzU3RhdGljTWV0aG9kKQotICAgICAgICAgICAgICAg
IHN0YXRpY01ldGhvZHMgPSB0YWlsOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGluc3RhbmNlTWV0aG9kcyA9IHRhaWw7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNsYXNzRWxl
bWVudHNUYWlsKQorICAgICAgICAgICAgY2xhc3NFbGVtZW50c1RhaWwgPSBjb250ZXh0LmNyZWF0
ZVByb3BlcnR5TGlzdChtZXRob2RMb2NhdGlvbiwgcHJvcGVydHksIGNsYXNzRWxlbWVudHNUYWls
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2xhc3NFbGVtZW50cyA9IGNsYXNzRWxlbWVu
dHNUYWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobWV0aG9kTG9jYXRpb24sIHByb3Bl
cnR5KTsKICAgICB9CiAKICAgICBpbmZvLmVuZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRP
ZmZzZXQgLSAxOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xv
c2luZyAnfScgYWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKLSAgICBhdXRvIGNsYXNzRXhwcmVzc2lv
biA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5m
aW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGlu
c3RhbmNlTWV0aG9kcywgc3RhdGljTWV0aG9kcyk7CisgICAgYXV0byBjbGFzc0V4cHJlc3Npb24g
PSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+Zmlu
YWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFz
c0VsZW1lbnRzKTsKICAgICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNG
cmVlVmFyaWFibGVJbmZvKTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwogfQpAQCAtMzg5
OCw4ICszODg4LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkoVHJlZUIKIHsKICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOwogICAgIGJvb2wg
d2FzSWRlbnQgPSBmYWxzZTsKLSAgICBib29sIGlzQ2xhc3NQcm9wZXJ0eSA9IGZhbHNlOwotICAg
IGJvb2wgaXNTdGF0aWNNZXRob2QgPSBmYWxzZTsKIAogICAgIGlmIChjb25zdW1lKFRJTUVTKSkK
ICAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0
aG9kTW9kZTsKQEAgLTM5NDgsMTMgKzM5MzYsMTMgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3IgcHJvcGVy
dHkgZGVjbGFyYXRpb24iKTsKICAgICAgICAgICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KG5vZGUs
IG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgICAgICAgICBJbmZlck5hbWUgaW5mZXJO
YW1lID0gaWRlbnQgJiYgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQ
cm90byA/IEluZmVyTmFtZTo6RGlzYWxsb3dlZCA6IEluZmVyTmFtZTo6QWxsb3dlZDsKLSAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBQcm9wZXJ0
eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1lLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG5vZGUsIFByb3BlcnR5Tm9k
ZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBpbmZlck5hbWUsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgIGF1dG8gbWV0
aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChjb250ZXh0LCBpZGVudCwgcGFyc2VNb2RlKTsKICAg
ICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0aG9kLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0LCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIElu
ZmVyTmFtZTo6QWxsb3dlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5Tm9kZTo6Q29uc3Rh
bnQsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5l
ZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAg
fQogICAgICAgICBmYWlsSWZUcnVlKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhv
ZE1vZGUsICJFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAg
LTM5NjgsNyArMzk1Niw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgICAgICBpZiAoY3VycmVu
dFNjb3BlKCktPmlzQXJyb3dGdW5jdGlvbigpKQogICAgICAgICAgICAgICAgIGN1cnJlbnRTY29w
ZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzRXZhbCgpOwogICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3JlYXRlUmVzb2x2ZShsb2NhdGlvbiwgKmlkZW50LCBz
dGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpU
eXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpTaG9ydGhhbmQpLCBQ
cm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0LCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OlNo
b3J0aGFuZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChtYXRjaChFUVVBTCkpIC8vIENvdmVySW5pdGlhbGl6
ZWROYW1lIGlzIGV4Y2x1c2l2ZSB0byBCaW5kaW5nUGF0dGVybiBhbmQgQXNzaWdubWVudFBhdHRl
cm4KQEAgLTM5ODEsNyArMzk2OSw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgICAgICB0eXBl
ID0gUHJvcGVydHlOb2RlOjpTZXR0ZXI7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZhaWxX
aXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSAnOicgZm9sbG93aW5nIHRoZSBwcm9wZXJ0eSBuYW1lICci
LCBpZGVudC0+aW1wbCgpLCAiJyIpOwotICAgICAgICByZXR1cm4gcGFyc2VHZXR0ZXJTZXR0ZXIo
Y29udGV4dCwgY29tcGxldGUsIHR5cGUsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgaXNDbGFzc1Byb3BlcnR5LCBpc1N0YXRpY01ldGhvZCk7CisgICAg
ICAgIHJldHVybiBwYXJzZUdldHRlclNldHRlcihjb250ZXh0LCBjb21wbGV0ZSwgdHlwZSwgZ2V0
dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBDbGFzc0VsZW1l
bnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2FzZSBET1VCTEU6CiAgICAgY2FzZSBJTlRFR0VSOiB7
CkBAIC0zOTkyLDcgKzM5ODAsNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQgPSBtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VO
dW1lcmljSWRlbnRpZmllcihjb25zdF9jYXN0PFZNKj4obV92bSksIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwgJmlk
ZW50LCBwYXJzZU1vZGUpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KCZpZGVudCwgbWV0aG9kLCBQcm9wZXJ0
eU5vZGU6OkNvbnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIGNvbXBsZXRlLCBTdXBlckJp
bmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBpc0NsYXNzUHJvcGVydHkpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoJmlkZW50LCBtZXRob2QsIFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1
cGVyQmluZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6
Tm8pOwogICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZSwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50
IGxpc3QiKTsKIApAQCAtNDAwMCw3ICszOTg4LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAg
VHJlZUV4cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgICAgIGZhaWxJZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3Ig
cHJvcGVydHkgZGVjbGFyYXRpb24iKTsKICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9k
ZSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlUHJvcGVydHkoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBwcm9wZXJ0
eU5hbWUsIG5vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93
biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBpc0NsYXNzUHJvcGVydHkpOwor
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShjb25zdF9jYXN0PFZNKj4obV92
bSksIG1fcGFyc2VyQXJlbmEsIHByb3BlcnR5TmFtZSwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25z
dGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgIH0KICAgICBjYXNlIE9QRU5CUkFDS0VU
OiB7CiAgICAgICAgIG5leHQoKTsKQEAgLTQwMTEsNyArMzk5OSw3IEBAIG5hbWVkUHJvcGVydHk6
CiAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7CiAgICAgICAgICAgICBhdXRvIG1ldGhv
ZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwgJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyLCBwYXJzZU1vZGUpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsK
LSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwg
bWV0aG9kLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29u
c3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVj
dCwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBpc0NsYXNzUHJvcGVydHkpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkocHJvcGVydHlOYW1lLCBtZXRo
b2QsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFu
dCB8IFByb3BlcnR5Tm9kZTo6Q29tcHV0ZWQpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0LCBj
b21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAg
ICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6
TWV0aG9kTW9kZSwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QiKTsK
IApAQCAtNDAxOSw3ICs0MDA3LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgVHJlZUV4cHJl
c3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAg
IGZhaWxJZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3IgcHJvcGVydHkg
ZGVjbGFyYXRpb24iKTsKICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9kZSwgbV9sZXhl
ci0+Y3VycmVudE9mZnNldCgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVy
dHkocHJvcGVydHlOYW1lLCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlO
b2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGlzQ2xhc3NQ
cm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5
TmFtZSwgbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6
OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksIFByb3BlcnR5Tm9kZTo6VW5rbm93
biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5v
KTsKICAgICB9CiAgICAgY2FzZSBET1RET1RET1Q6IHsKICAgICAgICAgaWYgKG1fdXNlT2JqZWN0
UmVzdFNwcmVhZCkgewpAQCAtNDAzMCw3ICs0MDE4LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAg
ICAgICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uT3JQ
cm9wYWdhdGVFcnJvckNsYXNzKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoZWxl
bSwgIkNhbm5vdCBwYXJzZSBzdWJqZWN0IG9mIGEgc3ByZWFkIG9wZXJhdGlvbiIpOwogICAgICAg
ICAgICAgYXV0byBub2RlID0gY29udGV4dC5jcmVhdGVPYmplY3RTcHJlYWRFeHByZXNzaW9uKHNw
cmVhZExvY2F0aW9uLCBlbGVtLCBzdGFydCwgZGl2b3QsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24p
OwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkobm9kZSwgUHJvcGVy
dHlOb2RlOjpTcHJlYWQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBpc0NsYXNzUHJvcGVydHkpOworICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlUHJvcGVydHkobm9kZSwgUHJvcGVydHlOb2RlOjpTcHJlYWQsIFByb3BlcnR5
Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0Vs
ZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKICAgICB9CkBA
IC00MDU1LDcgKzQwNDMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aAogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJv
cGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCBib29sIHN0cmljdCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIHVuc2lnbmVkIGdl
dHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsCi0gICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgYm9vbCBpc0NsYXNzUHJvcGVydHksIGJvb2wgaXNTdGF0aWNNZXRob2QpCisgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgQ2xhc3NFbGVtZW50VGFnIHRhZykKIHsKICAg
ICBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmdQcm9wZXJ0eU5hbWUgPSAwOwogICAgIGRvdWJsZSBu
dW1lcmljUHJvcGVydHlOYW1lID0gMDsKQEAgLTQwNjUsOSArNDA1Myw5IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
dHRlclNldHRlcihUCiAKICAgICBpZiAobWF0Y2hTcGVjSWRlbnRpZmllcigpIHx8IG1hdGNoKFNU
UklORykgfHwgbV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKSB7CiAgICAgICAgIHN0
cmluZ1Byb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUoaXNDbGFzc1Byb3BlcnR5ICYmIGlzU3RhdGljTWV0aG9kICYmICpzdHJpbmdQ
cm9wZXJ0eU5hbWUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLAorICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljICYmICpzdHJp
bmdQcm9wZXJ0eU5hbWUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLAogICAgICAg
ICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgc3RhdGljIG1ldGhvZCBuYW1lZCAncHJvdG90eXBlJyIp
OwotICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaXNDbGFzc1Byb3BlcnR5ICYmICFpc1N0YXRp
Y01ldGhvZCAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLAorICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVu
dFRhZzo6SW5zdGFuY2UgJiYgKnN0cmluZ1Byb3BlcnR5TmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIGdldHRlciBv
ciBzZXR0ZXIgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogICAgICAgICBuZXh0KCk7CiAgICAgfSBl
bHNlIGlmIChtYXRjaChET1VCTEUpIHx8IG1hdGNoKElOVEVHRVIpKSB7CkBAIC00MDkxLDEyICs0
MDc5LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgfQogCiAgICAgaWYgKHN0cmlu
Z1Byb3BlcnR5TmFtZSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0
ZXJQcm9wZXJ0eShsb2NhdGlvbiwgdHlwZSwgc3RyaWN0LCBzdHJpbmdQcm9wZXJ0eU5hbWUsIGlu
Zm8sIGlzQ2xhc3NQcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkobG9jYXRpb24sIHR5cGUsIHN0cmljdCwgc3RyaW5nUHJvcGVydHlO
YW1lLCBpbmZvLCB0YWcpOwogCiAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKQotICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1
dGVkKSwgc3RyaWN0LCBjb21wdXRlZFByb3BlcnR5TmFtZSwgaW5mbywgaXNDbGFzc1Byb3BlcnR5
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlO
b2RlOjpDb21wdXRlZCksIHN0cmljdCwgY29tcHV0ZWRQcm9wZXJ0eU5hbWUsIGluZm8sIHRhZyk7
CiAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0
X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9wYXJzZXJBcmVuYSwgbG9jYXRpb24sIHR5cGUsIHN0cmljdCwg
bnVtZXJpY1Byb3BlcnR5TmFtZSwgaW5mbywgaXNDbGFzc1Byb3BlcnR5KTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0qPihtX3Zt
KSwgbV9wYXJzZXJBcmVuYSwgbG9jYXRpb24sIHR5cGUsIHN0cmljdCwgbnVtZXJpY1Byb3BlcnR5
TmFtZSwgaW5mbywgdGFnKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDA4MzEyMWI0OGMyYzIxNzQwN2Y4
YjYxOGZlMjUzYWJlMTgxYjcwOTYuLmY5NDBlOTY3N2IzNzY3NTAxODkxZjUwYzFhOGFhNmVjYzdh
MWI2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTU3MCw3ICsx
NTcwLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZ
U19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFyc2VBcmd1bWVudChUcmVlQnVpbGRlciYsIEFyZ3Vt
ZW50VHlwZSYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5
IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBTb3VyY2VQ
YXJzZU1vZGUpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5
IHBhcnNlR2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9k
ZTo6VHlwZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JL
aW5kLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSwgYm9vbCBpc1N0YXRpY01ldGhvZCk7CisgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIo
VHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCwgUHJvcGVydHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBn
ZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQsIENsYXNzRWxlbWVudFRh
Zyk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVG
dW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBTeW50YXhDaGVja2Vy
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVuc2lnbmVkLCBTb3VyY2VQYXJz
ZU1vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBi
b29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFRyZWVGb3JtYWxQYXJhbWV0
ZXJMaXN0LCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc01ldGhvZCwgdW5zaWduZWQmKTsK
ICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFy
RGVjbGFyYXRpb25Db250ZXh0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCmluZGV4IDhmM2FmZTZkMjU2ZmFjOTVlNjkzZDQyMDQ4OTE3ZGY5NWFkMzcx
NDEuLjk3Y2ZhZGIzMDJmNzY1NmUzMjRjZGJiMDdmZDRhZjQ0NjU0NDNmMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xOTEsNyArMTkxLDcg
QEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYpIHsgcmV0dXJuIFlpZWxkRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVlpZWxkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVBd2FpdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gQXdhaXRFeHByOyB9Ci0gICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNs
YXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJDbGFzc0luZm88U3lu
dGF4Q2hlY2tlcj4mLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJl
c3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHBy
OyB9CisgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBQYXJzZXJDbGFzc0luZm88U3ludGF4Q2hlY2tlcj4mLCBWYXJpYWJsZUVu
dmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3Qp
IHsgcmV0dXJuIENsYXNzRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9u
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3lu
dGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVHZW5lcmF0b3JGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JiwgY29uc3QgSWRlbnRpZmllciYp
IHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzeW5j
RnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQpAQCAtMjE0LDI0
ICsyMTQsMjQgQEAgcHVibGljOgogCiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBBcmd1bWVudHNMaXN0UmVzdWx0OyB9CiAg
ICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQpIHsgcmV0dXJuIEFyZ3VtZW50c0xpc3RSZXN1bHQ7IH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVQ
cm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wgY29tcGxldGUsIFN1cGVyQmluZGluZywg
SW5mZXJOYW1lLCBib29sKQorICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50
aWZpZXIqIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6
UHV0VHlwZSwgYm9vbCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nLCBJbmZlck5hbWUsIENsYXNzRWxl
bWVudFRhZykKICAgICB7CiAgICAgICAgIGlmICghY29tcGxldGUpCiAgICAgICAgICAgICByZXR1
cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgcmV0dXJu
IFByb3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJv
b2wsIFN1cGVyQmluZGluZywgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShpbnQs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wsIFN1
cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgcmV0dXJuIFByb3Bl
cnR5KHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShWTSogdm0sIFBh
cnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgZG91YmxlIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpU
eXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCBjb21wbGV0ZSwgU3VwZXJCaW5k
aW5nLCBib29sKQorICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJl
bmEmIHBhcnNlckFyZW5hLCBkb3VibGUgbmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBib29sIGNvbXBsZXRlLCBTdXBlckJpbmRpbmcsIENs
YXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIGlmICghY29tcGxldGUpCiAgICAgICAgICAg
ICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSgmcGFyc2Vy
QXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBuYW1lKSwg
dHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGludCwgaW50LCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBib29sLCBTdXBlckJp
bmRpbmcsIGJvb2wpCisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoaW50LCBpbnQsIFByb3Bl
cnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIGJvb2wsIFN1cGVyQmlu
ZGluZywgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5
cGUpOwogICAgIH0KQEAgLTI4NSwxOCArMjg1LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVu
ZEV4cG9ydFNwZWNpZmllcihFeHBvcnRTcGVjaWZpZXJMaXN0LCBFeHBvcnRTcGVjaWZpZXIpIHsg
fQogCiAgICAgaW50IGFwcGVuZENvbnN0RGVjbChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQs
IGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQotICAg
IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBjb25zdCBJZGVudGlm
aWVyKiBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBib29s
KQorICAgIFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBjb25zdCBJ
ZGVudGlmaWVyKiBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4m
LCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7CiAgICAgICAg
IGlmICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAg
ICByZXR1cm4gUHJvcGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGJvb2wsIGludCwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRh
eENoZWNrZXI+JiwgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3Bl
cnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBib29s
LCBpbnQsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYsIENsYXNzRWxl
bWVudFRhZykKICAgICB7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICB9Ci0g
ICAgUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFy
ZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpU
eXBlIHR5cGUsIGJvb2wgc3RyaWN0LCBkb3VibGUgbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPFN5bnRheENoZWNrZXI+JiwgYm9vbCkKKyAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCBzdHJpY3QsIGRvdWJs
ZSBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mLCBDbGFzc0Vs
ZW1lbnRUYWcpCiAgICAgewogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVy
biBQcm9wZXJ0eSh0eXBlKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNmM0ODc3Yjk2ZmQ1ZDQ4MjU1ZWI2YTVjNGI2NzVlZTg2ZTU1ZWZk
ZS4uMDVmNWQ5ODFmOTU5NWQ0YTEyMWRkMzcyZjdlZTdlYTQ3ZmFmZWQxNyAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxOC0wMy0xNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtKU0NdIGZpeCBvcmRlciBvZiBldmFsdWF0aW9uIGZvciBDbGFzc0RlZmluaXRpb25FdmFs
dWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODM1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAgQ29t
cHV0ZWQgcHJvcGVydHkgbmFtZXMgbmVlZCB0byBiZSBldmFsdWF0ZWQgaW4gc291cmNlIG9yZGVy
IGR1cmluZyBjbGFzcworICAgICAgICBkZWZpbml0aW9uIGV2YWx1YXRpb24sIGFzIGl0J3Mgb2Jz
ZXJ2YWJsZSAoYW5kIHNwZWNpZmllZCB0byB3b3JrIHRoaXMgd2F5KS4KKworICAgICAgICBUaGlz
IGNoYW5nZSBpbXByb3ZlcyBjb21wYXRpYmlsaXR5IHdpdGggQ2hyb21pdW0uCisKKyAgICAgICAg
KiBzdHJlc3MvY2xhc3NfZWxlbWVudHMuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICh0ZXN0LkMucHJvdG90eXBlLmVmZmVjdCk6CisgICAgICAgICh0ZXN0LkMuZWZmZWN0KToK
KyAgICAgICAgKHRlc3QuQy5wcm90b3R5cGUuZ2V0IGVmZmVjdCk6CisgICAgICAgICh0ZXN0LkMu
cHJvdG90eXBlLnNldCBlZmZlY3QpOgorICAgICAgICAodGVzdC5DKToKKwogMjAxOC0wMy0xMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbREZHXSBB
SSBzaG91bGQgY29udmVydCBDcmVhdGVUaGlzIHRvIE5ld09iamVjdCBpZiB0aGUgcHJvdG90eXBl
IG9iamVjdCBpcyBwcm92ZWQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzX2VsZW1l
bnRzLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3NfZWxlbWVudHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM5
YWNlMzdiZDhlYzUzNGNhMWEzNjQ0ZjIyOTYxMDE1ZWNkZThiNQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzX2VsZW1lbnRzLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2Z1bmN0
aW9uIHRlc3QoKSB7CisKK2xldCBsb2cgPSBbXTsKK2Z1bmN0aW9uIGVmZmVjdChkZXNjKSB7IGxv
Zy5wdXNoKGRlc2MpOyByZXR1cm4gZGVzYzsgfQorCitjbGFzcyBDIHsKKyAgW2VmZmVjdCgiaW5z
dGFuY2UjMSIpXSgpIHt9CisgIHN0YXRpYyBbZWZmZWN0KCJzdGF0aWMjMiIpXSgpIHt9CisgIGdl
dCBbZWZmZWN0KCJpbnN0YW5jZUdldHRlciMzIildKCkge30KKyAgc3RhdGljIGdldCBbZWZmZWN0
KCJzdGF0aWNHZXR0ZXIjNCIpXSgpIHt9CisgIHNldCBbZWZmZWN0KCJpbnN0YW5jZVNldHRlciM1
IildKHYpIHt9CisgIHN0YXRpYyBbZWZmZWN0KCJzdGF0aWNTZXR0ZXIjNiIpXSh2KSB7fQorfQor
CityZXR1cm4gbG9nWzBdID09PSAiaW5zdGFuY2UjMSIgJiYKKyAgICAgICBsb2dbMV0gPT09ICJz
dGF0aWMjMiIgJiYKKyAgICAgICBsb2dbMl0gPT09ICJpbnN0YW5jZUdldHRlciMzIiAmJgorICAg
ICAgIGxvZ1szXSA9PT0gInN0YXRpY0dldHRlciM0IiAmJgorICAgICAgIGxvZ1s0XSA9PT0gImlu
c3RhbmNlU2V0dGVyIzUiICYmCisgICAgICAgbG9nWzVdID09PSAic3RhdGljU2V0dGVyIzYiOwor
fQorCitpZiAoIXRlc3QoKSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>