<?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>234390</bug_id>
          
          <creation_ts>2021-12-16 07:22:04 -0800</creation_ts>
          <short_desc>CSP: Include the sample in eval violation reports</short_desc>
          <delta_ts>2021-12-21 00:46:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</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="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>pgriffis</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824751</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-16 07:22:04 -0800</bug_when>
    <thetext>We are not including the sample for eval reports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824752</commentid>
    <comment_count>1</comment_count>
      <attachid>447353</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-16 07:32:03 -0800</bug_when>
    <thetext>Created attachment 447353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825103</commentid>
    <comment_count>2</comment_count>
      <attachid>447353</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-12-17 09:36:52 -0800</bug_when>
    <thetext>Comment on attachment 447353
Patch

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

&gt; Source/JavaScriptCore/runtime/FunctionConstructor.cpp:144
&gt; +        auto codeScope = DECLARE_THROW_SCOPE(vm);

What is the benefit of creating codeScope and using that instead of scope?

&gt; Source/JavaScriptCore/runtime/FunctionConstructor.cpp:147
&gt; +        globalObject-&gt;globalObjectMethodTable()-&gt;reportViolationForUnsafeEval(globalObject, !code.isNull() ? jsNontrivialString(vm, code) : nullptr);

I think this can be WTFMove(code) to avoid a potential copy.

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.h:226
&gt; +    void reportViolation(const String&amp; effectiveViolatedDirective, const ContentSecurityPolicyDirective&amp; violatedDirective, const String&amp; blockedURL, const String&amp; consoleMessage, JSC::JSGlobalObject*, const StringView&amp; sourceContent) const;

Despite the fact that this is done in multiple places in CSP code, I think passing a StringView as a const reference is actually worse for performance, because it&apos;s in the same &quot;complexity category&quot; as int and char* and it&apos;s cost-of-copy does not outweigh the benefits of pass-by-value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825567</commentid>
    <comment_count>3</comment_count>
      <attachid>447353</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-20 03:03:14 -0800</bug_when>
    <thetext>Comment on attachment 447353
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/FunctionConstructor.cpp:144
&gt;&gt; +        auto codeScope = DECLARE_THROW_SCOPE(vm);
&gt; 
&gt; What is the benefit of creating codeScope and using that instead of scope?

I assumed we don&apos;t want to throw an exception in case something fails in stringifyFunction, since we don&apos;t even know if the sample report will be used at this point, and scope is already used to throw the createEvalError. I don&apos;t know what happens in throwException() if the given scope already has an exception thrown.

&gt;&gt; Source/JavaScriptCore/runtime/FunctionConstructor.cpp:147
&gt;&gt; +        globalObject-&gt;globalObjectMethodTable()-&gt;reportViolationForUnsafeEval(globalObject, !code.isNull() ? jsNontrivialString(vm, code) : nullptr);
&gt; 
&gt; I think this can be WTFMove(code) to avoid a potential copy.

Indeed.

&gt;&gt; Source/WebCore/page/csp/ContentSecurityPolicy.h:226
&gt;&gt; +    void reportViolation(const String&amp; effectiveViolatedDirective, const ContentSecurityPolicyDirective&amp; violatedDirective, const String&amp; blockedURL, const String&amp; consoleMessage, JSC::JSGlobalObject*, const StringView&amp; sourceContent) const;
&gt; 
&gt; Despite the fact that this is done in multiple places in CSP code, I think passing a StringView as a const reference is actually worse for performance, because it&apos;s in the same &quot;complexity category&quot; as int and char* and it&apos;s cost-of-copy does not outweigh the benefits of pass-by-value.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825569</commentid>
    <comment_count>4</comment_count>
      <attachid>447593</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-20 03:04:26 -0800</bug_when>
    <thetext>Created attachment 447593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825903</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-21 00:45:53 -0800</bug_when>
    <thetext>Committed r287303 (245455@trunk): &lt;https://commits.webkit.org/245455@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825904</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-21 00:46:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86758157&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447353</attachid>
            <date>2021-12-16 07:32:03 -0800</date>
            <delta_ts>2021-12-20 03:04:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-csp-eval-sample.diff</filename>
            <type>text/plain</type>
            <size>32934</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGNmY2MxNjUxYjM4ZS4uZDVmMTU3ZTA0
ZjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MS0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgQ1NQOiBJbmNsdWRlIHRoZSBzYW1wbGUgaW4gZXZhbCB2aW9sYXRpb24gcmVwb3J0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4
cGVjdGF0aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zZWN1cml0eXBvbGljeXZpb2xhdGlvbi9zY3JpcHQtc2FtcGxlLWV4cGVjdGVk
LnR4dDoKKwogMjAyMS0xMi0xMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIEFic29sdXRlbHkgcG9zaXRpb25lZCBjaGls
ZHJlbiBzaG91bGQgYmUgYWxpZ25lZCB1c2luZyB0aGUgbWFyZ2luIGJveApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zZWN1cml0eXBvbGljeXZpb2xhdGlvbi9zY3JpcHQtc2FtcGxlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvc2VjdXJpdHlwb2xpY3l2aW9sYXRpb24vc2NyaXB0LXNhbXBsZS1l
eHBlY3RlZC50eHQKaW5kZXggZGVjZjAxMTI1MWQzLi5lMTMzYzBiZGZkM2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2VjdXJpdHlwb2xpY3l2aW9sYXRpb24vc2NyaXB0LXNhbXBsZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9zZWN1cml0eXBvbGljeXZpb2xhdGlvbi9zY3JpcHQtc2Ft
cGxlLWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCiBQQVNTIElubGluZSBzY3JpcHQgc2hvdWxkIGhhdmUgYSBzYW1wbGUu
CiBQQVNTIElubGluZSBldmVudCBoYW5kbGVycyBzaG91bGQgaGF2ZSBhIHNhbXBsZS4KIFRJTUVP
VVQgSmF2YVNjcmlwdCBVUkxzIGluIGlmcmFtZXMgc2hvdWxkIGhhdmUgYSBzYW1wbGUuIFRlc3Qg
dGltZWQgb3V0Ci1USU1FT1VUIGV2YWwoKSBzaG91bGQgaGF2ZSBhIHNhbXBsZS4gVGVzdCB0aW1l
ZCBvdXQKLVRJTUVPVVQgc2V0SW50ZXJ2YWwoKSBzaG91bGQgaGF2ZSBhIHNhbXBsZS4gVGVzdCB0
aW1lZCBvdXQKLVRJTUVPVVQgc2V0VGltZW91dCgpIHNob3VsZCBoYXZlIGEgc2FtcGxlLiBUZXN0
IHRpbWVkIG91dAorUEFTUyBldmFsKCkgc2hvdWxkIGhhdmUgYSBzYW1wbGUuCitQQVNTIHNldElu
dGVydmFsKCkgc2hvdWxkIGhhdmUgYSBzYW1wbGUuCitQQVNTIHNldFRpbWVvdXQoKSBzaG91bGQg
aGF2ZSBhIHNhbXBsZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlNTliNjc3MDU2
Li4yODlkODAyNTI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBA
CisyMDIxLTEyLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBDU1A6IEluY2x1ZGUgdGhlIHNhbXBsZSBpbiBldmFsIHZpb2xhdGlvbiByZXBv
cnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQz
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6IFBhc3MgdGhl
IGNvZGUgdG8gcmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbCgpLgorICAgICAgICAqIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5naWZ5RnVuY3Rpb24pOiBIZWxwZXIgZnVu
Y3Rpb24gd2l0aCB0aGUgY29kZSB0byBzdHJpbmdpZnkgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFs
c28gZm9yIHRoZSBjc3AKKyAgICAgICAgdmlvbGF0aW9uIHJlcG9ydC4KKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0RnVuY3Rpb24pOiBDYWxsIHN0cmluZ2lmeUZ1bmN0aW9uKCkgdG8gZ2V0IHRoZSBj
b2RlIGZvciByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKCkuCisgICAgICAgIChKU0M6OmNv
bnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKTogVXNlIHN0cmluZ2lmeUZ1
bmN0aW9uKCkuCisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlSW1wbCk6IFBhc3Mg
dGhlIGNvZGUgdG8gcmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbCgpLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJl
cG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwpOiBBZGQgc3RyaW5nIHBhcmFtZXRlciBmb3IgdGhl
IGNvZGUgc2FtcGxlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOiBQYXNzIHRoZSBj
b2RlIHRvIHJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoKS4KKwogMjAyMS0xMi0xNCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gT3BJ
bnN0YW5jZW9mQ3VzdG9tIHNob3VsZCBiZSBpbiBDb21tb25TbG93UGF0aHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGI5OWRl
ODg0OTJkNS4uMGU5YTkzYjI5NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTk4LDEzICs5OCwxNSBAQCBKU1ZhbHVlIGV2
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVD
TUFNb2RlIGVjbWFNbwogICAgIGlmICghcHJvZ3JhbS5pc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gcHJvZ3JhbTsKIAorICAgIGF1dG8qIHByb2dyYW1TdHJpbmcgPSBhc1N0cmluZyhwcm9ncmFt
KTsKKwogICAgIFRvcENhbGxGcmFtZVNldHRlciB0b3BDYWxsRnJhbWUodm0sIGNhbGxGcmFtZSk7
CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5yZXBvcnRWaW9sYXRpb25Gb3JVbnNh
ZmVFdmFsKGdsb2JhbE9iamVjdCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChnbG9iYWxPYmplY3Qs
IHByb2dyYW1TdHJpbmcpOwogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFdmFsRXJyb3IoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmV2YWxEaXNh
YmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IH0KLSAgICBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShn
bG9iYWxPYmplY3QpOworICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbVN0cmluZy0+
dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNh
bGxlckZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggODI3YjdiOWIxZTMyLi5jYTAwZmIxYzZiNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFs
RXhlY3V0YWJsZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWds
b2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5yZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCwgc291cmNlLnByb3Zp
ZGVyKCkgPyBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2Uo
KS50b1N0cmluZygpKSA6IG51bGxwdHIpOwogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
PmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKaW5kZXggOWE4YmY5NGVkZDBmLi5mMDI1MjE1ODc4NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCkBAIC02NCwyOCArNjQsOCBAQCB2b2lkIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdAogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGZ1
bmN0aW9uUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAK
LS8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU291cmNlT3JpZ2lu
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRp
b24mIHBvc2l0aW9uLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlLCBKU1ZhbHVlIG5ld1RhcmdldCkKK3N0YXRpYyBTdHJpbmcgc3RyaW5naWZ5RnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29u
c3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBUaHJvd1Njb3BlJiBzY29wZSwgc3RkOjpvcHRpb25hbDxp
bnQ+JiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogewotICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJs
ZWQoKSkpIHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5yZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZ2xvYmFsT2JqZWN0LCBh
cmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZU9yaWdpbiwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEs
IGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KSk7Ci19Ci0KLUpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCAKLSAgICBjb25zdCBJZGVu
dGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlv
biwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCi17Ci0gICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQogICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9IG51bGxwdHI7CiAgICAgc3dpdGNoIChm
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpIHsKICAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6RnVuY3Rpb246CkBAIC0xMDUsNTIgKzg1LDgyIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5
IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4K
ICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUw
LgogICAgIFN0cmluZyBwcm9ncmFtOwotICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OworICAgIGZ1bmN0
aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKGFyZ3MuaXNFbXB0eSgpKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZyhwcmVmaXgs
IGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufSIpOwogICAgIGVsc2UgaWYgKGFyZ3Mu
c2l6ZSgpID09IDEpIHsKICAgICAgICAgYXV0byBib2R5ID0gYXJncy5hdCgwKS50b1dURlN0cmlu
ZyhnbG9iYWxPYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAg
cHJvZ3JhbSA9IHRyeU1ha2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIo
KSB7XG4iLCBib2R5LCAiXG59Iik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghcHJvZ3JhbSkpIHsK
ICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcihTdHJp
bmdCdWlsZGVyOjpPdmVyZmxvd0hhbmRsZXI6OlJlY29yZE92ZXJmbG93KTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmQocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICcoJyk7CiAKICAgICAg
ICAgYXV0byoganNTdHJpbmcgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBhdXRvIHZpZXdXaXRoU3RyaW5n
ID0ganNTdHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhnbG9iYWxPYmplY3QpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQodmlld1dp
dGhTdHJpbmcudmlldyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyAhYnVpbGRlci5oYXNP
dmVyZmxvd2VkKCkgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICBh
dXRvKiBqc1N0cmluZyA9IGFyZ3MuYXQoaSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIGF1dG8gdmlld1dp
dGhTdHJpbmcgPSBqc1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiLCAiLCB2aWV3V2l0aFN0cmluZy52aWV3KTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoVU5MSUtFTFkoYnVpbGRlci5oYXNPdmVyZmxvd2VkKCkpKSB7CiAgICAgICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIAog
ICAgICAgICBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gYnVpbGRl
ci5sZW5ndGgoKSArIDE7CiAKICAgICAgICAgYXV0byogYm9keVN0cmluZyA9IGFyZ3MuYXQoYXJn
cy5zaXplKCkgLSAxKS50b1N0cmluZyhnbG9iYWxPYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICAgICAgYXV0byBib2R5ID0gYm9keVN0cmluZy0+dmlld1dpdGhVbmRl
cmx5aW5nU3RyaW5nKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKSB7XG4iLCBib2R5LnZpZXcsICJcbn0iKTsKICAg
ICAgICAgaWYgKFVOTElLRUxZKGJ1aWxkZXIuaGFzT3ZlcmZsb3dlZCgpKSkgewogICAgICAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAg
ICAgICAgIHByb2dyYW0gPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCisgICAgcmV0dXJu
IHByb2dyYW07Cit9CisKKy8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3Rvcgor
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29u
c3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBj
b25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBKU1ZhbHVlIG5ld1RhcmdldCkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaWYgKFVOTElLRUxZKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkp
KSB7CisgICAgICAgIGF1dG8gY29kZVNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uOworICAgICAgICBhdXRvIGNvZGUgPSBzdHJpbmdpZnlGdW5jdGlvbihnbG9iYWxP
YmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBjb2Rl
U2NvcGUsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOworICAgICAg
ICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFZpb2xhdGlv
bkZvclVuc2FmZUV2YWwoZ2xvYmFsT2JqZWN0LCAhY29kZS5pc051bGwoKSA/IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgY29kZSkgOiBudWxscHRyKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFt
ZSwgc291cmNlT3JpZ2luLCBzb3VyY2VVUkwsIHBvc2l0aW9uLCAtMSwgZnVuY3Rpb25Db25zdHJ1
Y3Rpb25Nb2RlLCBuZXdUYXJnZXQpKTsKK30KKworSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
U291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25z
dCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBKU1ZhbHVlIG5ld1Rh
cmdldCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb247CisgICAgYXV0byBwcm9ncmFt
ID0gc3RyaW5naWZ5RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIGZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgc2NvcGUsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24pOworICAgIGlmIChwcm9ncmFtLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKwogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShwcm9ncmFt
LCBzb3VyY2VPcmlnaW4sIHNvdXJjZVVSTCwgcG9zaXRpb24pOwogICAgIEpTT2JqZWN0KiBleGNl
cHRpb24gPSBudWxscHRyOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBGdW5j
dGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgZ2xvYmFsT2JqZWN0
LCBzb3VyY2UsIGV4Y2VwdGlvbiwgb3ZlcnJpZGVMaW5lTnVtYmVyLCBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggMWVhODU2MjMx
ZjRiLi41YmM1ODgyYjAwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIGlu
bGluZSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGVJbXBsKEpTR2xvYmFsT2JqZWN0CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5yZXBvcnRWaW9sYXRp
b25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChnbG9i
YWxPYmplY3QsIHNvdXJjZS5wcm92aWRlcigpID8ganNOb250cml2aWFsU3RyaW5nKHZtLCBzb3Vy
Y2UucHJvdmlkZXIoKS0+c291cmNlKCkudG9TdHJpbmcoKSkgOiBudWxscHRyKTsKICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhOTUyYzk3Yzc1MjguLjAzZWEzYTZjMzE2OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0yNTMsNyArMjUzLDcgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0
eXBlZGVmIFNjcmlwdEV4ZWN1dGlvblN0YXR1cyAoKlNjcmlwdEV4ZWN1dGlvblN0YXR1c1B0ciko
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogc2NyaXB0RXhlY3V0aW9uT3duZXIpOwogICAgIFNj
cmlwdEV4ZWN1dGlvblN0YXR1c1B0ciBzY3JpcHRFeGVjdXRpb25TdGF0dXM7CiAgICAgCi0gICAg
dHlwZWRlZiB2b2lkICgqUmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbFB0cikoSlNHbG9iYWxP
YmplY3QqKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpSZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFs
UHRyKShKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAgICAgUmVwb3J0VmlvbGF0aW9uRm9y
VW5zYWZlRXZhbFB0ciByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsOwogCiAgICAgdHlwZWRl
ZiBTdHJpbmcgKCpEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0cikoKTsKQEAgLTkzMSw3ICs5MzEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb25BdEV2
ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOwogICAgIHN0YXRpYyBKU09iamVj
dCogY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwpIHsg
cmV0dXJuIGdsb2JhbDsgfQogICAgIHN0YXRpYyBTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0
RXhlY3V0aW9uU3RhdHVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSB7IHJldHVybiBTY3Jp
cHRFeGVjdXRpb25TdGF0dXM6OlJ1bm5pbmc7IH0KLSAgICBzdGF0aWMgdm9pZCByZXBvcnRWaW9s
YXRpb25Gb3JVbnNhZmVFdmFsKEpTR2xvYmFsT2JqZWN0KikgeyB9CisgICAgc3RhdGljIHZvaWQg
cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKikg
eyB9CiAKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJQcm90b3R5cGUoQXJyYXlCdWZmZXJTaGFy
aW5nTW9kZSBzaGFyaW5nTW9kZSkgY29uc3QKICAgICB7CkBAIC0xMDgwLDcgKzEwODAsNyBAQCBw
dWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHF1ZXVlTWljcm90YXNrKFJlZjxN
aWNyb3Rhc2s+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZl
RXZhbChjb25zdCBKU0dsb2JhbE9iamVjdCopIHsgfQorICAgIHN0YXRpYyB2b2lkIHJlcG9ydFZp
b2xhdGlvbkZvclVuc2FmZUV2YWwoY29uc3QgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopIHsg
fQogCiAgICAgYm9vbCBldmFsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVuYWJsZWQ7
IH0KICAgICBib29sIHdlYkFzc2VtYmx5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQXNz
ZW1ibHlFbmFibGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggZjk5YjlkZmM1Zjc4Li4yZGM5
YzM1YjU5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTQ3MCwxMyArNDcwLDE1IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXZhbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtCiAgICAgaWYgKCF4LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoeCk7CiAKKworICAgIGF1dG8gY29kZVN0cmluZyA9IGFzU3RyaW5n
KHgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKSB7Ci0gICAgICAgIGds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cmVwb3J0VmlvbGF0aW9uRm9y
VW5zYWZlRXZhbChnbG9iYWxPYmplY3QpOworICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoZ2xvYmFsT2Jq
ZWN0LCBjb2RlU3RyaW5nKTsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlRXZhbEVycm9yKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlz
YWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIFN0cmluZyBzID0gYXNTdHJpbmcoeCktPnZhbHVl
KGdsb2JhbE9iamVjdCk7CisgICAgU3RyaW5nIHMgPSBjb2RlU3RyaW5nLT52YWx1ZShnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgSlNWYWx1ZSBwYXJzZWRPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE3YWY1MTZiMDQ5
Li4xNzMxZjU3NzQ0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0xMi0xNiAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ1NQ
OiBJbmNsdWRlIHRoZSBzYW1wbGUgaW4gZXZhbCB2aW9sYXRpb24gcmVwb3J0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpyZXBv
cnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKTogSGFuZGxlIHRoZSBzb3VyY2UgcGFyYW1ldGVyIGFu
ZCBwYXNzIGl0IHRvIGFsbG93RXZhbCgpLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpyZXBvcnRW
aW9sYXRpb25Gb3JVbnNhZmVFdmFsKTogSGFuZGxlIHRoZSBzb3VyY2UgcGFyYW1ldGVyLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZh
bCk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFz
ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpjb2RlIGNvbnN0KTogUmV0dXJuIHRoZSBjb2RlLgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6c2V0VGltZW91dCk6IFBhc3MgdGhlIGNvZGUgdG8gYWxsb3dFdmFsKCkuCisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnNldEludGVydmFsKTogRGl0dG8uCisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsIGNvbnN0KTogSGFuZGxlIGNvZGVDb250ZW50IHBhcmFt
ZXRlciBhbmQgcGFzcyBpdCB0byByZXBvcnRWaW9sYXRpb24oKS4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uIGNvbnN0KTogRGl0dG8uCisg
ICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9i
YWxTY29wZTo6c2V0VGltZW91dCk6IFBhc3MgdGhlIGNvZGUgdG8gYWxsb3dFdmFsKCkuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOiBEaXR0by4KKwog
MjAyMS0xMi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS11bYTExeV0gQWRkIHN1cHBvcnQgZm9yIGxvYWRpbmcgZXZlbnRzIHdoZW4g
YnVpbGRpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKaW5kZXggZjg5MWU3NmU4NjVjLi5lMWQ3ODE3MGRhYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjU1LDcg
KzI1NSw3IEBAIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIEpTRE9NV2luZG93QmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPCiAgICAgcmV0dXJuIGpzQ2FzdDxKU0Rv
Y3VtZW50Kj4ob3duZXIpLT53cmFwcGVkKCkuanNjU2NyaXB0RXhlY3V0aW9uU3RhdHVzKCk7CiB9
CiAKLXZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpT
R2xvYmFsT2JqZWN0KiBvYmplY3QpCit2b2lkIEpTRE9NV2luZG93QmFzZTo6cmVwb3J0VmlvbGF0
aW9uRm9yVW5zYWZlRXZhbChKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBKU1N0cmluZyogc291cmNl
KQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0
PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7CiAgICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBudWxscHRyOwpAQCAtMjcwLDcgKzI3MCw3IEBA
IHZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpTR2xv
YmFsT2JqZWN0KiBvYmplY3QpCiAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS0+YWxsb3dFdmFsKG9iamVj
dCwgTG9nVG9Db25zb2xlOjpObywgZmFsc2UpOworICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS0+
YWxsb3dFdmFsKG9iamVjdCwgTG9nVG9Db25zb2xlOjpObywgc291cmNlID8gc291cmNlLT50cnlH
ZXRWYWx1ZSgpIDogU3RyaW5nVmlldygpKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6Ondp
bGxSZW1vdmVGcm9tV2luZG93UHJveHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuaAppbmRleCA1MjVkZDk5ZmE0OWEuLjBkOGUyODE3NjQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTgxLDcgKzgx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNrVG9FdmVudExvb3Ao
SlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CiAgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcihKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4
ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVjdCopOwotICAg
IHN0YXRpYyB2b2lkIHJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHN0YXRpYyB2b2lkIHJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNTdHJpbmcqKTsKICAgICAKICAgICB2b2lkIHByaW50
RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggNTM5
YWExZGMxMmFmLi5iOWZhNDkxOGQyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzNCw5ICsxMzQsOSBA
QCBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SgogICAgIHJldHVybiBqc0Nhc3Q8SlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmpz
Y1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpOwogfQogCi12b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVC
YXNlOjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3ZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnJlcG9ydFZpb2xhdGlv
bkZvclVuc2FmZUV2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
U3RyaW5nKiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0OjpyZXBvcnRWaW9s
YXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTR2xvYmFsT2Jq
ZWN0OjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCwgc291cmNlKTsK
IH0KIAogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVNaWNyb3Rhc2tUb0V2ZW50
TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyb3Rhc2s+JiYgdGFzaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5oCmluZGV4IGZlYWNkNTFhODIzZC4uMWUyODExMmJkZDQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2Ny
aXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMg
SlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgcXVldWVNaWNy
b3Rhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90YXNr
PiYmKTsKLSAgICBzdGF0aWMgdm9pZCByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRWaW9sYXRpb25Gb3JVbnNh
ZmVFdmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTU3RyaW5nKik7CiAKIHByb3RlY3Rl
ZDoKICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUq
LCBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggM2RjNTQ5
YzEwMzk1Li4yOTE0MTkzNDJiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTA5LDkgKzEwOSw5IEBA
IEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c2Ny
aXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1dvcmtsZXRHbG9i
YWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmpz
Y1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpOwogfQogCi12b2lkIEpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6cmVwb3J0VmlvbGF0
aW9uRm9yVW5zYWZlRXZhbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNTdHJpbmcqIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6OnJlcG9ydFZp
b2xhdGlvbkZvclVuc2FmZUV2YWwoZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNHbG9iYWxP
YmplY3Q6OnJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoZ2xvYmFsT2JqZWN0LCBzb3VyY2Up
OwogfQogCiBib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNSaWNoU291cmNl
SW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAppbmRleCA1YmQ5OTg0
YTExMjAuLjgxNWVkYTlmYmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNv
bnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRp
b25TdGF0dXMgc2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkpTT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgcXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90YXNrPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
KyAgICBzdGF0aWMgdm9pZCByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkpTU3RyaW5nKik7CiAKIHByb3RlY3RlZDoKICAgICBKU1dvcmtsZXRH
bG9iYWxTY29wZUJhc2UoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmUHRyPFdvcmtsZXRH
bG9iYWxTY29wZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5oCmluZGV4IDA1MWNmNmMwMTQyOS4uZmM0ZjNjOWQ4OTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaApAQCAtNDgsNiArNDgsOCBAQCBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgQ29kZSwgRnVuY3Rpb24gfTsKICAgICBUeXBlIHR5
cGUoKSBjb25zdDsKIAorICAgIFN0cmluZ1ZpZXcgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZTsgfQorCiAgICAgdm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBkZWZjNWQ0OWUxMzkuLjhlZWJi
MGI3NzQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTgwMiw3ICsxODAyLDcg
QEAgRXhjZXB0aW9uT3I8aW50PiBET01XaW5kb3c6OnNldFRpbWVvdXQoc3RkOjp1bmlxdWVfcHRy
PFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLAogCiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGNo
ZWNrIHJlYWxseSBoYXBwZW4gaGVyZT8gT3Igc2hvdWxkIGl0IGhhcHBlbiB3aGVuIGNvZGUgaXMg
YWJvdXQgdG8gZXZhbD8KICAgICBpZiAoYWN0aW9uLT50eXBlKCkgPT0gU2NoZWR1bGVkQWN0aW9u
OjpUeXBlOjpDb2RlKSB7Ci0gICAgICAgIGlmICghY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmFsbG93RXZhbChjb250ZXh0LT5nbG9iYWxPYmplY3QoKSwgTG9nVG9Db25zb2xlOjpZ
ZXMpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d0V2YWwoY29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIExvZ1RvQ29uc29sZTo6WWVzLCBhY3Rpb24t
PmNvZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE4MjcsNyArMTgy
Nyw3IEBAIEV4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRJbnRlcnZhbChzdGQ6OnVuaXF1
ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sCiAKICAgICAvLyBGSVhNRTogU2hvdWxkIHRo
aXMgY2hlY2sgcmVhbGx5IGhhcHBlbiBoZXJlPyBPciBzaG91bGQgaXQgaGFwcGVuIHdoZW4gY29k
ZSBpcyBhYm91dCB0byBldmFsPwogICAgIGlmIChhY3Rpb24tPnR5cGUoKSA9PSBTY2hlZHVsZWRB
Y3Rpb246OlR5cGU6OkNvZGUpIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+YWxsb3dFdmFsKGNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBMb2dUb0NvbnNv
bGU6OlllcykpCisgICAgICAgIGlmICghY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkt
PmFsbG93RXZhbChjb250ZXh0LT5nbG9iYWxPYmplY3QoKSwgTG9nVG9Db25zb2xlOjpZZXMsIGFj
dGlvbi0+Y29kZSgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTdh
Mzg3NWY1OWQ3Li5mOWY5NWY1MjBiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtNTE5LDE0ICs1MTksMTQgQEAgYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMLCBjb25zdCBPcmQKICAgICByZXR1cm4gY2hlY2tIYXNoQW5kUmVwb3J0VmlvbGF0aW9u
KHN0eWxlQ29udGVudC50b1N0cmluZygpLCAmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTdHlsZUVsZW1lbnQsICZDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxl
SGFzaCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzLCBoYW5kbGVWaW9sYXRl
ZERpcmVjdGl2ZSk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0V2YWwo
SlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIExvZ1RvQ29uc29sZSBzaG91bGRMb2dUb0NvbnNv
bGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0Citib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqIHN0YXRlLCBM
b2dUb0NvbnNvbGUgc2hvdWxkTG9nVG9Db25zb2xlLCBTdHJpbmdWaWV3IGNvZGVDb250ZW50LCBi
b29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAogewogICAgIGlmIChvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgYm9v
bCBkaWROb3RpZnlJbnNwZWN0b3IgPSBmYWxzZTsKICAgICBhdXRvIGhhbmRsZVZpb2xhdGVkRGly
ZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xh
dGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IHNob3VsZExv
Z1RvQ29uc29sZSA9PSBMb2dUb0NvbnNvbGU6OlllcyA/IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0
aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsIHZpb2xh
dGVkRGlyZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICIndW5z
YWZlLWV2YWwnIikgOiBTdHJpbmcoKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsIHZpb2xhdGVkRGlyZWN0aXZl
LCAiZXZhbCIsIGNvbnNvbGVNZXNzYWdlLCBzdGF0ZSk7CisgICAgICAgIHJlcG9ydFZpb2xhdGlv
bihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCB2aW9sYXRl
ZERpcmVjdGl2ZSwgImV2YWwiLCBjb25zb2xlTWVzc2FnZSwgc3RhdGUsIGNvZGVDb250ZW50KTsK
ICAgICAgICAgaWYgKCFkaWROb3RpZnlJbnNwZWN0b3IgJiYgIXZpb2xhdGVkRGlyZWN0aXZlLmRp
cmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSkgewogICAgICAgICAgICAgcmVwb3J0QmxvY2tl
ZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKHZpb2xhdGVkRGlyZWN0aXZlLnRleHQoKSk7CiAg
ICAgICAgICAgICBkaWROb3RpZnlJbnNwZWN0b3IgPSB0cnVlOwpAQCAtNzYyLDEwICs3NjIsMTAg
QEAgU3RyaW5nIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y3JlYXRlVVJMRm9yUmVwb3J0aW5nKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcKICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZSh1cmwpLT50b1N0cmluZygpOwogfQogCi12b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUs
IGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNvbnN0Cit2b2lkIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgZWZmZWN0aXZlVmlvbGF0ZWREaXJl
Y3RpdmUsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVz
c2FnZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZ1ZpZXcmIHNvdXJj
ZUNvbnRlbnQpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEV4dHJhY3Qgc291cmNlIGZpbGUsIGNv
bnRlbnQsIGFuZCBwb3NpdGlvbiBmcm9tIEpTQzo6RXhlY1N0YXRlLgotICAgIHJldHVybiByZXBv
cnRWaW9sYXRpb24odmlvbGF0ZWREaXJlY3RpdmUsIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZl
Lm5hbWVGb3JSZXBvcnRpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBlZmZlY3RpdmVW
aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCksIGJsb2NrZWRVUkwsIGNvbnNvbGVNZXNz
YWdlLCBTdHJpbmcoKSwgU3RyaW5nVmlldygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6
YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSksIHN0YXRlKTsKKyAg
ICAvLyBGSVhNRTogRXh0cmFjdCBzb3VyY2UgZmlsZSwgYW5kIHBvc2l0aW9uIGZyb20gSlNDOjpF
eGVjU3RhdGUuCisgICAgcmV0dXJuIHJlcG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2ZSwg
ZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUubmFtZUZvclJlcG9ydGluZygpLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCksIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3Qo
KSwgYmxvY2tlZFVSTCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBzb3VyY2VDb250ZW50LCBU
ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgT3JkaW5hbE51bWJlcjo6
YmVmb3JlRmlyc3QoKSksIHN0YXRlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZl
LCBjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0JiB2aW9sYXRlZERpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmluZyYg
YmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogc3RhdGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oCmluZGV4IDY1NzUwNzQ4MzVhNi4uYTE3NzQ3YzZiMWFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtMTA0
LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93Tm9uUGFyc2VySW5zZXJ0ZWRTY3Jp
cHRzKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZ1ZpZXcmLCBQYXJzZXJJ
bnNlcnRlZCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYg
Y29udGV4dFVSTCwgY29uc3QgT3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFN0cmluZ1ZpZXcg
c3R5bGVDb250ZW50LCBDaGVja1Vuc2FmZUhhc2hlcywgRWxlbWVudCYsIGJvb2wgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7CiAKLSAgICBib29sIGFsbG93RXZh
bChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgTG9nVG9Db25zb2xlLCBib29sIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OworICAgIGJvb2wgYWxsb3dFdmFsKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBMb2dUb0NvbnNvbGUsIFN0cmluZ1ZpZXcgY29kZUNvbnRlbnQsIGJv
b2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBi
b29sIGFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlw
ZUF0dHJpYnV0ZSwgY29uc3QgVVJMJiwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IGZhbHNlKSBjb25zdDsKIApAQCAtMjIzLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgdXNp
bmcgSGFzaEluRW5mb3JjZWRBbmRSZXBvcnRPbmx5UG9saWNpZXNQYWlyID0gc3RkOjpwYWlyPGJv
b2wsIGJvb2w+OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gSGFzaEluRW5mb3Jj
ZWRBbmRSZXBvcnRPbmx5UG9saWNpZXNQYWlyIGZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2llcyhj
b25zdCBQcmVkaWNhdGUmLCBTdHJpbmdWaWV3IGNvbnRlbnQsIE9wdGlvblNldDxDb250ZW50U2Vj
dXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPikgY29uc3QgV0FSTl9VTlVTRURfUkVUVVJOOwogCi0g
ICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERp
cmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERp
cmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVN
ZXNzYWdlLCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgdm9pZCByZXBvcnRWaW9s
YXRpb24oY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgU3Ry
aW5nJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nVmlldyYgc291cmNlQ29udGVudCkgY29uc3Q7CiAgICAg
dm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVj
dGl2ZSwgY29uc3QgU3RyaW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdCYsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSTCwgY29uc3Qg
U3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogPSBudWxscHRyKSBj
b25zdDsKICAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZp
b2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZp
b2xhdGVkRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYg
Y29uc29sZU1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJpbmdWaWV3
JiBzb3VyY2VDb250ZW50LCBjb25zdCBUZXh0UG9zaXRpb24mIHNvdXJjZVBvc2l0aW9uLCBjb25z
dCBVUkwmIHByZVJlZGlyZWN0VVJMID0gVVJMKCksIEpTQzo6SlNHbG9iYWxPYmplY3QqID0gbnVs
bHB0ciwgRWxlbWVudCogPSBudWxscHRyKSBjb25zdDsKICAgICB2b2lkIHJlcG9ydFZpb2xhdGlv
bihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcm
IHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0JiB2aW9sYXRlZERpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSTCwgY29u
c3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFN0cmluZ1ZpZXcmIHNvdXJjZUNvbnRlbnQsIGNvbnN0IFRleHRQb3NpdGlvbiYgc291cmNlUG9z
aXRpb24sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBVUkwmIHByZVJlZGlyZWN0VVJMID0g
VVJMKCksIEVsZW1lbnQqID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDIyNTE5NmEzYmYxMy4uNDcwZWZhMTgzNjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
MzA2LDcgKzMwNiw3IEBAIEV4Y2VwdGlvbk9yPGludD4gV29ya2VyR2xvYmFsU2NvcGU6OnNldFRp
bWVvdXQoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4KIHsKICAgICAvLyBGSVhNRTog
U2hvdWxkIHRoaXMgY2hlY2sgcmVhbGx5IGhhcHBlbiBoZXJlPyBPciBzaG91bGQgaXQgaGFwcGVu
IHdoZW4gY29kZSBpcyBhYm91dCB0byBldmFsPwogICAgIGlmIChhY3Rpb24tPnR5cGUoKSA9PSBT
Y2hlZHVsZWRBY3Rpb246OlR5cGU6OkNvZGUpIHsKLSAgICAgICAgaWYgKCFjb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+YWxsb3dFdmFsKGdsb2JhbE9iamVjdCgpLCBMb2dUb0NvbnNvbGU6Olllcykp
CisgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93RXZhbChnbG9iYWxP
YmplY3QoKSwgTG9nVG9Db25zb2xlOjpZZXMsIGFjdGlvbi0+Y29kZSgpKSkKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIApAQCAtMzI0LDcgKzMyNCw3IEBAIEV4Y2VwdGlvbk9yPGludD4g
V29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRB
Y3Rpb24+CiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGNoZWNrIHJlYWxseSBoYXBwZW4g
aGVyZT8gT3Igc2hvdWxkIGl0IGhhcHBlbiB3aGVuIGNvZGUgaXMgYWJvdXQgdG8gZXZhbD8KICAg
ICBpZiAoYWN0aW9uLT50eXBlKCkgPT0gU2NoZWR1bGVkQWN0aW9uOjpUeXBlOjpDb2RlKSB7Ci0g
ICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93RXZhbChnbG9iYWxPYmpl
Y3QoKSwgTG9nVG9Db25zb2xlOjpZZXMpKQorICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5hbGxvd0V2YWwoZ2xvYmFsT2JqZWN0KCksIExvZ1RvQ29uc29sZTo6WWVzLCBhY3Rp
b24tPmNvZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447593</attachid>
            <date>2021-12-20 03:04:26 -0800</date>
            <delta_ts>2021-12-20 08:37:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-csp-eval-sample.diff</filename>
            <type>text/plain</type>
            <size>32929</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGNmY2MxNjUxYjM4ZS4uZDVmMTU3ZTA0
ZjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MS0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgQ1NQOiBJbmNsdWRlIHRoZSBzYW1wbGUgaW4gZXZhbCB2aW9sYXRpb24gcmVwb3J0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4
cGVjdGF0aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zZWN1cml0eXBvbGljeXZpb2xhdGlvbi9zY3JpcHQtc2FtcGxlLWV4cGVjdGVk
LnR4dDoKKwogMjAyMS0xMi0xMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIEFic29sdXRlbHkgcG9zaXRpb25lZCBjaGls
ZHJlbiBzaG91bGQgYmUgYWxpZ25lZCB1c2luZyB0aGUgbWFyZ2luIGJveApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9zZWN1cml0eXBvbGljeXZpb2xhdGlvbi9zY3JpcHQtc2FtcGxlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvc2VjdXJpdHlwb2xpY3l2aW9sYXRpb24vc2NyaXB0LXNhbXBsZS1l
eHBlY3RlZC50eHQKaW5kZXggZGVjZjAxMTI1MWQzLi5lMTMzYzBiZGZkM2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1
cml0eS1wb2xpY3kvc2VjdXJpdHlwb2xpY3l2aW9sYXRpb24vc2NyaXB0LXNhbXBsZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9zZWN1cml0eXBvbGljeXZpb2xhdGlvbi9zY3JpcHQtc2Ft
cGxlLWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgSGFybmVzcyBFcnJvciAoVElNRU9VVCks
IG1lc3NhZ2UgPSBudWxsCiBQQVNTIElubGluZSBzY3JpcHQgc2hvdWxkIGhhdmUgYSBzYW1wbGUu
CiBQQVNTIElubGluZSBldmVudCBoYW5kbGVycyBzaG91bGQgaGF2ZSBhIHNhbXBsZS4KIFRJTUVP
VVQgSmF2YVNjcmlwdCBVUkxzIGluIGlmcmFtZXMgc2hvdWxkIGhhdmUgYSBzYW1wbGUuIFRlc3Qg
dGltZWQgb3V0Ci1USU1FT1VUIGV2YWwoKSBzaG91bGQgaGF2ZSBhIHNhbXBsZS4gVGVzdCB0aW1l
ZCBvdXQKLVRJTUVPVVQgc2V0SW50ZXJ2YWwoKSBzaG91bGQgaGF2ZSBhIHNhbXBsZS4gVGVzdCB0
aW1lZCBvdXQKLVRJTUVPVVQgc2V0VGltZW91dCgpIHNob3VsZCBoYXZlIGEgc2FtcGxlLiBUZXN0
IHRpbWVkIG91dAorUEFTUyBldmFsKCkgc2hvdWxkIGhhdmUgYSBzYW1wbGUuCitQQVNTIHNldElu
dGVydmFsKCkgc2hvdWxkIGhhdmUgYSBzYW1wbGUuCitQQVNTIHNldFRpbWVvdXQoKSBzaG91bGQg
aGF2ZSBhIHNhbXBsZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlNTliNjc3MDU2
Li4yODlkODAyNTI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBA
CisyMDIxLTEyLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBDU1A6IEluY2x1ZGUgdGhlIHNhbXBsZSBpbiBldmFsIHZpb2xhdGlvbiByZXBv
cnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQz
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6IFBhc3MgdGhl
IGNvZGUgdG8gcmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbCgpLgorICAgICAgICAqIHJ1bnRp
bWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5naWZ5RnVuY3Rpb24pOiBIZWxwZXIgZnVu
Y3Rpb24gd2l0aCB0aGUgY29kZSB0byBzdHJpbmdpZnkgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFs
c28gZm9yIHRoZSBjc3AKKyAgICAgICAgdmlvbGF0aW9uIHJlcG9ydC4KKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0RnVuY3Rpb24pOiBDYWxsIHN0cmluZ2lmeUZ1bmN0aW9uKCkgdG8gZ2V0IHRoZSBj
b2RlIGZvciByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKCkuCisgICAgICAgIChKU0M6OmNv
bnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKTogVXNlIHN0cmluZ2lmeUZ1
bmN0aW9uKCkuCisgICAgICAgICogcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6SW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlSW1wbCk6IFBhc3Mg
dGhlIGNvZGUgdG8gcmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbCgpLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJl
cG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwpOiBBZGQgc3RyaW5nIHBhcmFtZXRlciBmb3IgdGhl
IGNvZGUgc2FtcGxlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOiBQYXNzIHRoZSBj
b2RlIHRvIHJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoKS4KKwogMjAyMS0xMi0xNCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gT3BJ
bnN0YW5jZW9mQ3VzdG9tIHNob3VsZCBiZSBpbiBDb21tb25TbG93UGF0aHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGI5OWRl
ODg0OTJkNS4uMGU5YTkzYjI5NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTk4LDEzICs5OCwxNSBAQCBKU1ZhbHVlIGV2
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVD
TUFNb2RlIGVjbWFNbwogICAgIGlmICghcHJvZ3JhbS5pc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gcHJvZ3JhbTsKIAorICAgIGF1dG8qIHByb2dyYW1TdHJpbmcgPSBhc1N0cmluZyhwcm9ncmFt
KTsKKwogICAgIFRvcENhbGxGcmFtZVNldHRlciB0b3BDYWxsRnJhbWUodm0sIGNhbGxGcmFtZSk7
CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5yZXBvcnRWaW9sYXRpb25Gb3JVbnNh
ZmVFdmFsKGdsb2JhbE9iamVjdCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUoKS0+cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChnbG9iYWxPYmplY3Qs
IHByb2dyYW1TdHJpbmcpOwogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFdmFsRXJyb3IoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmV2YWxEaXNh
YmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IH0KLSAgICBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShn
bG9iYWxPYmplY3QpOworICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbVN0cmluZy0+
dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsRnJhbWUtPmNh
bGxlckZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
aXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggODI3YjdiOWIxZTMyLi5jYTAwZmIxYzZiNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFs
RXhlY3V0YWJsZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgRGlyZWN0RXZhbEV4ZWN1dGFibGUqIERp
cmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWds
b2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5yZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCwgc291cmNlLnByb3Zp
ZGVyKCkgPyBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2Uo
KS50b1N0cmluZygpKSA6IG51bGxwdHIpOwogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
PmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKaW5kZXggOWE4YmY5NGVkZDBmLi4xNjVlN2E3ZjdlNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCkBAIC02NCwyOCArNjQsOCBAQCB2b2lkIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdAogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGZ1
bmN0aW9uUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAK
LS8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU291cmNlT3JpZ2lu
JiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRp
b24mIHBvc2l0aW9uLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlLCBKU1ZhbHVlIG5ld1RhcmdldCkKK3N0YXRpYyBTdHJpbmcgc3RyaW5naWZ5RnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29u
c3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBUaHJvd1Njb3BlJiBzY29wZSwgc3RkOjpvcHRpb25hbDxp
bnQ+JiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogewotICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJs
ZWQoKSkpIHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5yZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZ2xvYmFsT2JqZWN0LCBh
cmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZU9yaWdpbiwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEs
IGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KSk7Ci19Ci0KLUpTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCAKLSAgICBjb25zdCBJZGVu
dGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCi0gICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlv
biwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCi17Ci0gICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQogICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9IG51bGxwdHI7CiAgICAgc3dpdGNoIChm
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpIHsKICAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6RnVuY3Rpb246CkBAIC0xMDUsNTIgKzg1LDgyIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5
IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4K
ICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUw
LgogICAgIFN0cmluZyBwcm9ncmFtOwotICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OworICAgIGZ1bmN0
aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKGFyZ3MuaXNFbXB0eSgpKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZyhwcmVmaXgs
IGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufSIpOwogICAgIGVsc2UgaWYgKGFyZ3Mu
c2l6ZSgpID09IDEpIHsKICAgICAgICAgYXV0byBib2R5ID0gYXJncy5hdCgwKS50b1dURlN0cmlu
ZyhnbG9iYWxPYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAg
cHJvZ3JhbSA9IHRyeU1ha2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIo
KSB7XG4iLCBib2R5LCAiXG59Iik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghcHJvZ3JhbSkpIHsK
ICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcihTdHJp
bmdCdWlsZGVyOjpPdmVyZmxvd0hhbmRsZXI6OlJlY29yZE92ZXJmbG93KTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmQocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICcoJyk7CiAKICAgICAg
ICAgYXV0byoganNTdHJpbmcgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBhdXRvIHZpZXdXaXRoU3RyaW5n
ID0ganNTdHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhnbG9iYWxPYmplY3QpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQodmlld1dp
dGhTdHJpbmcudmlldyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyAhYnVpbGRlci5oYXNP
dmVyZmxvd2VkKCkgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICBh
dXRvKiBqc1N0cmluZyA9IGFyZ3MuYXQoaSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIGF1dG8gdmlld1dp
dGhTdHJpbmcgPSBqc1N0cmluZy0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiLCAiLCB2aWV3V2l0aFN0cmluZy52aWV3KTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoVU5MSUtFTFkoYnVpbGRlci5oYXNPdmVyZmxvd2VkKCkpKSB7CiAgICAgICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIAog
ICAgICAgICBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gYnVpbGRl
ci5sZW5ndGgoKSArIDE7CiAKICAgICAgICAgYXV0byogYm9keVN0cmluZyA9IGFyZ3MuYXQoYXJn
cy5zaXplKCkgLSAxKS50b1N0cmluZyhnbG9iYWxPYmplY3QpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICAgICAgYXV0byBib2R5ID0gYm9keVN0cmluZy0+dmlld1dpdGhVbmRl
cmx5aW5nU3RyaW5nKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKSB7XG4iLCBib2R5LnZpZXcsICJcbn0iKTsKICAg
ICAgICAgaWYgKFVOTElLRUxZKGJ1aWxkZXIuaGFzT3ZlcmZsb3dlZCgpKSkgewogICAgICAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAg
ICAgICAgIHByb2dyYW0gPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCisgICAgcmV0dXJu
IHByb2dyYW07Cit9CisKKy8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3Rvcgor
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29u
c3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBj
b25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBKU1ZhbHVlIG5ld1RhcmdldCkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaWYgKFVOTElLRUxZKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkp
KSB7CisgICAgICAgIGF1dG8gY29kZVNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uOworICAgICAgICBhdXRvIGNvZGUgPSBzdHJpbmdpZnlGdW5jdGlvbihnbG9iYWxP
YmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBjb2Rl
U2NvcGUsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOworICAgICAg
ICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFZpb2xhdGlv
bkZvclVuc2FmZUV2YWwoZ2xvYmFsT2JqZWN0LCAhY29kZS5pc051bGwoKSA/IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgV1RGTW92ZShjb2RlKSkgOiBudWxscHRyKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1
bmN0aW9uTmFtZSwgc291cmNlT3JpZ2luLCBzb3VyY2VVUkwsIHBvc2l0aW9uLCAtMSwgZnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlLCBuZXdUYXJnZXQpKTsKK30KKworSlNPYmplY3QqIGNvbnN0cnVj
dEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVy
LCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBKU1Zh
bHVlIG5ld1RhcmdldCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb247CisgICAgYXV0
byBwcm9ncmFtID0gc3RyaW5naWZ5RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlv
bk5hbWUsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgc2NvcGUsIGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOworICAgIGlmIChwcm9ncmFtLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJj
ZShwcm9ncmFtLCBzb3VyY2VPcmlnaW4sIHNvdXJjZVVSTCwgcG9zaXRpb24pOwogICAgIEpTT2Jq
ZWN0KiBleGNlcHRpb24gPSBudWxscHRyOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgZ2xv
YmFsT2JqZWN0LCBzb3VyY2UsIGV4Y2VwdGlvbiwgb3ZlcnJpZGVMaW5lTnVtYmVyLCBmdW5jdGlv
bkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXgg
MWVhODU2MjMxZjRiLi41YmM1ODgyYjAwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIGlubGluZSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGVJbXBsKEpTR2xvYmFsT2JqZWN0CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkp
IHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5yZXBv
cnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCk7CisgICAgICAgIGdsb2JhbE9i
amVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZl
RXZhbChnbG9iYWxPYmplY3QsIHNvdXJjZS5wcm92aWRlcigpID8ganNOb250cml2aWFsU3RyaW5n
KHZtLCBzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkudG9TdHJpbmcoKSkgOiBudWxscHRyKTsK
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXZhbEVy
cm9yKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2Uo
KSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhOTUyYzk3Yzc1MjguLjAzZWEz
YTZjMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IHsKICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGlvblN0YXR1cyAoKlNjcmlwdEV4ZWN1dGlvblN0
YXR1c1B0cikoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogc2NyaXB0RXhlY3V0aW9uT3duZXIp
OwogICAgIFNjcmlwdEV4ZWN1dGlvblN0YXR1c1B0ciBzY3JpcHRFeGVjdXRpb25TdGF0dXM7CiAg
ICAgCi0gICAgdHlwZWRlZiB2b2lkICgqUmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbFB0ciko
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpSZXBvcnRWaW9sYXRpb25Gb3JV
bnNhZmVFdmFsUHRyKShKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAgICAgUmVwb3J0Vmlv
bGF0aW9uRm9yVW5zYWZlRXZhbFB0ciByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsOwogCiAg
ICAgdHlwZWRlZiBTdHJpbmcgKCpEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0cikoKTsKQEAgLTkz
MSw3ICs5MzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVwb3J0VW5jYXVnaHRFeGNl
cHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopOwogICAgIHN0YXRp
YyBKU09iamVjdCogY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwpIHsgcmV0dXJuIGdsb2JhbDsgfQogICAgIHN0YXRpYyBTY3JpcHRFeGVjdXRpb25TdGF0
dXMgc2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSB7IHJl
dHVybiBTY3JpcHRFeGVjdXRpb25TdGF0dXM6OlJ1bm5pbmc7IH0KLSAgICBzdGF0aWMgdm9pZCBy
ZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpTR2xvYmFsT2JqZWN0KikgeyB9CisgICAgc3Rh
dGljIHZvaWQgcmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChKU0dsb2JhbE9iamVjdCosIEpT
U3RyaW5nKikgeyB9CiAKICAgICBKU09iamVjdCogYXJyYXlCdWZmZXJQcm90b3R5cGUoQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkgY29uc3QKICAgICB7CkBAIC0xMDgwLDcgKzEw
ODAsNyBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHF1ZXVlTWljcm90
YXNrKFJlZjxNaWNyb3Rhc2s+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgcmVwb3J0VmlvbGF0aW9u
Rm9yVW5zYWZlRXZhbChjb25zdCBKU0dsb2JhbE9iamVjdCopIHsgfQorICAgIHN0YXRpYyB2b2lk
IHJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoY29uc3QgSlNHbG9iYWxPYmplY3QqLCBKU1N0
cmluZyopIHsgfQogCiAgICAgYm9vbCBldmFsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZh
bEVuYWJsZWQ7IH0KICAgICBib29sIHdlYkFzc2VtYmx5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViQXNzZW1ibHlFbmFibGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggZjk5YjlkZmM1
Zjc4Li4yZGM5YzM1YjU5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTQ3MCwxMyArNDcwLDE1
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXZhbCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtCiAgICAgaWYgKCF4LmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoeCk7CiAKKworICAgIGF1dG8gY29kZVN0cmluZyA9
IGFzU3RyaW5nKHgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cmVwb3J0Vmlv
bGF0aW9uRm9yVW5zYWZlRXZhbChnbG9iYWxPYmplY3QpOworICAgICAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwo
Z2xvYmFsT2JqZWN0LCBjb2RlU3RyaW5nKTsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIFN0cmluZyBzID0gYXNTdHJpbmco
eCktPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgU3RyaW5nIHMgPSBjb2RlU3RyaW5nLT52YWx1
ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBwYXJzZWRPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE3
YWY1MTZiMDQ5Li4xNzMxZjU3NzQ0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAy
MS0xMi0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgQ1NQOiBJbmNsdWRlIHRoZSBzYW1wbGUgaW4gZXZhbCB2aW9sYXRpb24gcmVwb3J0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKTogSGFuZGxlIHRoZSBzb3VyY2UgcGFy
YW1ldGVyIGFuZCBwYXNzIGl0IHRvIGFsbG93RXZhbCgpLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFs
U2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNl
OjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKTogSGFuZGxlIHRoZSBzb3VyY2UgcGFyYW1l
dGVyLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6cmVwb3J0VmlvbGF0aW9uRm9y
VW5zYWZlRXZhbCk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2xldEdsb2Jh
bFNjb3BlQmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpjb2RlIGNvbnN0KTogUmV0dXJuIHRo
ZSBjb2RlLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6c2V0VGltZW91dCk6IFBhc3MgdGhlIGNvZGUgdG8gYWxsb3dFdmFsKCkuCisg
ICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldEludGVydmFsKTogRGl0dG8uCisgICAgICAg
ICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsIGNvbnN0KTogSGFuZGxlIGNvZGVDb250
ZW50IHBhcmFtZXRlciBhbmQgcGFzcyBpdCB0byByZXBvcnRWaW9sYXRpb24oKS4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uIGNvbnN0KTog
RGl0dG8uCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dCk6IFBhc3MgdGhlIGNvZGUgdG8gYWxsb3dFdmFs
KCkuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOiBE
aXR0by4KKwogMjAyMS0xMi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIHN1cHBvcnQgZm9yIGxvYWRpbmcgZXZl
bnRzIHdoZW4gYnVpbGRpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZjg5MWU3NmU4NjVjLi5lMWQ3ODE3MGRhYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApA
QCAtMjU1LDcgKzI1NSw3IEBAIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIEpTRE9NV2luZG93
QmFzZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPCiAgICAgcmV0dXJuIGpz
Q2FzdDxKU0RvY3VtZW50Kj4ob3duZXIpLT53cmFwcGVkKCkuanNjU2NyaXB0RXhlY3V0aW9uU3Rh
dHVzKCk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNh
ZmVFdmFsKEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCit2b2lkIEpTRE9NV2luZG93QmFzZTo6cmVw
b3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChKU0dsb2JhbE9iamVjdCogb2JqZWN0LCBKU1N0cmlu
Zyogc291cmNlKQogewogICAgIGNvbnN0IEpTRE9NV2luZG93QmFzZSogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93QmFzZSo+KG9iamVjdCk7CiAgICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBudWxscHRyOwpAQCAtMjcwLDcg
KzI3MCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVF
dmFsKEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xp
Y3kpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeS0+YWxsb3dF
dmFsKG9iamVjdCwgTG9nVG9Db25zb2xlOjpObywgZmFsc2UpOworICAgIGNvbnRlbnRTZWN1cml0
eVBvbGljeS0+YWxsb3dFdmFsKG9iamVjdCwgTG9nVG9Db25zb2xlOjpObywgc291cmNlID8gc291
cmNlLT50cnlHZXRWYWx1ZSgpIDogU3RyaW5nVmlldygpKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRv
d0Jhc2U6OndpbGxSZW1vdmVGcm9tV2luZG93UHJveHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCA1MjVkZDk5ZmE0OWEuLjBkOGUyODE3NjQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAg
LTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHF1ZXVlTWljcm90YXNrVG9F
dmVudExvb3AoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZjxKU0M6Ok1pY3JvdGFzaz4mJik7CiAg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGN1cnJlbnRTY3JpcHRFeGVjdXRpb25Pd25lcihKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVz
IHNjcmlwdEV4ZWN1dGlvblN0YXR1cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU09iamVj
dCopOwotICAgIHN0YXRpYyB2b2lkIHJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoSlNDOjpK
U0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIHJlcG9ydFZpb2xhdGlvbkZvclVuc2Fm
ZUV2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNTdHJpbmcqKTsKICAgICAKICAgICB2
b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAK
aW5kZXggNTM5YWExZGMxMmFmLi5iOWZhNDkxOGQyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzNCw5
ICsxMzQsOSBAQCBKU0M6OlNjcmlwdEV4ZWN1dGlvblN0YXR1cyBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SgogICAgIHJldHVybiBqc0Nhc3Q8SlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpOwogfQogCi12b2lkIEpTV29ya2VyR2xv
YmFsU2NvcGVCYXNlOjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnJlcG9y
dFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTU3RyaW5nKiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIEpTR2xvYmFsT2JqZWN0Ojpy
ZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpT
R2xvYmFsT2JqZWN0OjpyZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKGdsb2JhbE9iamVjdCwg
c291cmNlKTsKIH0KIAogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVNaWNyb3Rh
c2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyb3Rhc2s+
JiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5oCmluZGV4IGZlYWNkNTFhODIzZC4uMWUyODExMmJkZDQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFn
cyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAg
ICBzdGF0aWMgSlNDOjpTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0aW9uU3RhdHVz
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQg
cXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6
TWljcm90YXNrPiYmKTsKLSAgICBzdGF0aWMgdm9pZCByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVF
dmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRWaW9sYXRp
b25Gb3JVbnNhZmVFdmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTU3RyaW5nKik7CiAK
IHByb3RlY3RlZDoKICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZShKU0M6OlZNJiwgSlNDOjpT
dHJ1Y3R1cmUqLCBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKaW5k
ZXggM2RjNTQ5YzEwMzk1Li4yOTE0MTkzNDJiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2xldEdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTA5LDkg
KzEwOSw5IEBAIEpTQzo6U2NyaXB0RXhlY3V0aW9uU3RhdHVzIEpTV29ya2xldEdsb2JhbFNjb3Bl
QmFzZTo6c2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6CiAgICAgcmV0dXJuIGpzQ2FzdDxKU1dv
cmtsZXRHbG9iYWxTY29wZUJhc2UqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmpzY1NjcmlwdEV4ZWN1dGlvblN0YXR1cygpOwogfQogCi12b2lkIEpTV29ya2xldEds
b2JhbFNjb3BlQmFzZTo6cmVwb3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6cmVw
b3J0VmlvbGF0aW9uRm9yVW5zYWZlRXZhbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNTdHJpbmcqIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gSlNHbG9iYWxPYmplY3Q6
OnJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
SlNHbG9iYWxPYmplY3Q6OnJlcG9ydFZpb2xhdGlvbkZvclVuc2FmZUV2YWwoZ2xvYmFsT2JqZWN0
LCBzb3VyY2UpOwogfQogCiBib29sIEpTV29ya2xldEdsb2JhbFNjb3BlQmFzZTo6c3VwcG9ydHNS
aWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtsZXRHbG9iYWxTY29wZUJhc2UuaAppbmRl
eCA1YmQ5OTg0YTExMjAuLjgxNWVkYTlmYmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrbGV0R2xvYmFsU2NvcGVCYXNlLmgKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OlJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVudGlt
ZUZsYWdzKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpTY3Jp
cHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgcXVldWVNaWNyb3Rhc2tUb0V2
ZW50TG9vcChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmPEpTQzo6TWljcm90YXNrPiYmKTsKLSAg
ICBzdGF0aWMgdm9pZCByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRWaW9sYXRpb25Gb3JVbnNhZmVFdmFsKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTU3RyaW5nKik7CiAKIHByb3RlY3RlZDoKICAgICBK
U1dvcmtsZXRHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmUHRy
PFdvcmtsZXRHbG9iYWxTY29wZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5oCmluZGV4IDA1MWNmNmMwMTQyOS4uZmM0ZjNjOWQ4OTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaApAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgQ29kZSwgRnVuY3Rpb24gfTsKICAg
ICBUeXBlIHR5cGUoKSBjb25zdDsKIAorICAgIFN0cmluZ1ZpZXcgY29kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZTsgfQorCiAgICAgdm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBkZWZjNWQ0OWUx
MzkuLjhlZWJiMGI3NzQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTgwMiw3
ICsxODAyLDcgQEAgRXhjZXB0aW9uT3I8aW50PiBET01XaW5kb3c6OnNldFRpbWVvdXQoc3RkOjp1
bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLAogCiAgICAgLy8gRklYTUU6IFNob3Vs
ZCB0aGlzIGNoZWNrIHJlYWxseSBoYXBwZW4gaGVyZT8gT3Igc2hvdWxkIGl0IGhhcHBlbiB3aGVu
IGNvZGUgaXMgYWJvdXQgdG8gZXZhbD8KICAgICBpZiAoYWN0aW9uLT50eXBlKCkgPT0gU2NoZWR1
bGVkQWN0aW9uOjpUeXBlOjpDb2RlKSB7Ci0gICAgICAgIGlmICghY29udGV4dC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93RXZhbChjb250ZXh0LT5nbG9iYWxPYmplY3QoKSwgTG9nVG9D
b25zb2xlOjpZZXMpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd0V2YWwoY29udGV4dC0+Z2xvYmFsT2JqZWN0KCksIExvZ1RvQ29uc29sZTo6WWVz
LCBhY3Rpb24tPmNvZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE4
MjcsNyArMTgyNyw3IEBAIEV4Y2VwdGlvbk9yPGludD4gRE9NV2luZG93OjpzZXRJbnRlcnZhbChz
dGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sCiAKICAgICAvLyBGSVhNRTog
U2hvdWxkIHRoaXMgY2hlY2sgcmVhbGx5IGhhcHBlbiBoZXJlPyBPciBzaG91bGQgaXQgaGFwcGVu
IHdoZW4gY29kZSBpcyBhYm91dCB0byBldmFsPwogICAgIGlmIChhY3Rpb24tPnR5cGUoKSA9PSBT
Y2hlZHVsZWRBY3Rpb246OlR5cGU6OkNvZGUpIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dFdmFsKGNvbnRleHQtPmdsb2JhbE9iamVjdCgpLCBM
b2dUb0NvbnNvbGU6OlllcykpCisgICAgICAgIGlmICghY29udGV4dC0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCktPmFsbG93RXZhbChjb250ZXh0LT5nbG9iYWxPYmplY3QoKSwgTG9nVG9Db25zb2xl
OjpZZXMsIGFjdGlvbi0+Y29kZSgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
aW5kZXggNTdhMzg3NWY1OWQ3Li42OGMwYjFkNGU4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtNTE5LDE0ICs1MTksMTQg
QEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3Ry
aW5nJiBjb250ZXh0VVJMLCBjb25zdCBPcmQKICAgICByZXR1cm4gY2hlY2tIYXNoQW5kUmVwb3J0
VmlvbGF0aW9uKHN0eWxlQ29udGVudC50b1N0cmluZygpLCAmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTdHlsZUVsZW1l
bnQsICZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2
ZUZvclN0eWxlSGFzaCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzLCBoYW5k
bGVWaW9sYXRlZERpcmVjdGl2ZSk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd0V2YWwoSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIExvZ1RvQ29uc29sZSBzaG91bGRM
b2dUb0NvbnNvbGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0Citi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IHN0YXRlLCBMb2dUb0NvbnNvbGUgc2hvdWxkTG9nVG9Db25zb2xlLCBTdHJpbmdWaWV3IGNvZGVD
b250ZW50LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAogewogICAg
IGlmIChvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgYm9vbCBkaWROb3RpZnlJbnNwZWN0b3IgPSBmYWxzZTsKICAgICBhdXRvIGhhbmRsZVZp
b2xhdGVkRGlyZWN0aXZlID0gWyZdIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUmIHZpb2xhdGVkRGlyZWN0aXZlKSB7CiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9
IHNob3VsZExvZ1RvQ29uc29sZSA9PSBMb2dUb0NvbnNvbGU6OlllcyA/IGNvbnNvbGVNZXNzYWdl
Rm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRT
cmMsIHZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlw
dCIsICIndW5zYWZlLWV2YWwnIikgOiBTdHJpbmcoKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9u
KENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsIHZpb2xhdGVk
RGlyZWN0aXZlLCAiZXZhbCIsIGNvbnNvbGVNZXNzYWdlLCBzdGF0ZSk7CisgICAgICAgIHJlcG9y
dFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3Jj
LCB2aW9sYXRlZERpcmVjdGl2ZSwgImV2YWwiLCBjb25zb2xlTWVzc2FnZSwgc3RhdGUsIGNvZGVD
b250ZW50KTsKICAgICAgICAgaWYgKCFkaWROb3RpZnlJbnNwZWN0b3IgJiYgIXZpb2xhdGVkRGly
ZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSkgewogICAgICAgICAgICAgcmVw
b3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKHZpb2xhdGVkRGlyZWN0aXZlLnRl
eHQoKSk7CiAgICAgICAgICAgICBkaWROb3RpZnlJbnNwZWN0b3IgPSB0cnVlOwpAQCAtNzYyLDEw
ICs3NjIsMTAgQEAgU3RyaW5nIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y3JlYXRlVVJMRm9yUmVw
b3J0aW5nKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcKICAgICByZXR1cm4gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmwpLT50b1N0cmluZygpOwogfQogCi12b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgZWZmZWN0aXZlVmlvbGF0ZWRE
aXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xl
TWVzc2FnZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNvbnN0Cit2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJl
Y3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgZWZmZWN0aXZlVmlv
bGF0ZWREaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBj
b25zb2xlTWVzc2FnZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIFN0cmluZ1ZpZXcgc291
cmNlQ29udGVudCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogRXh0cmFjdCBzb3VyY2UgZmlsZSwg
Y29udGVudCwgYW5kIHBvc2l0aW9uIGZyb20gSlNDOjpFeGVjU3RhdGUuCi0gICAgcmV0dXJuIHJl
cG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2ZSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3Rp
dmUubmFtZUZvclJlcG9ydGluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIGVmZmVjdGl2
ZVZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKSwgYmxvY2tlZFVSTCwgY29uc29sZU1l
c3NhZ2UsIFN0cmluZygpLCBTdHJpbmdWaWV3KCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
OjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKSwgc3RhdGUpOwor
ICAgIC8vIEZJWE1FOiBFeHRyYWN0IHNvdXJjZSBmaWxlLCBhbmQgcG9zaXRpb24gZnJvbSBKU0M6
OkV4ZWNTdGF0ZS4KKyAgICByZXR1cm4gcmVwb3J0VmlvbGF0aW9uKHZpb2xhdGVkRGlyZWN0aXZl
LCBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZS5uYW1lRm9yUmVwb3J0aW5nKCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUuZGlyZWN0aXZlTGlz
dCgpLCBibG9ja2VkVVJMLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIHNvdXJjZUNvbnRlbnQs
IFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVtYmVy
OjpiZWZvcmVGaXJzdCgpKSwgc3RhdGUpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3Rp
dmUsIGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QmIHZpb2xhdGVkRGlyZWN0aXZlTGlzdCwgY29uc3QgU3RyaW5n
JiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBzdGF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgKaW5kZXggNjU3NTA3NDgzNWE2Li40YTljYjRlODkzYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC0x
MDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dOb25QYXJzZXJJbnNlcnRlZFNj
cmlwdHMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nVmlldyYsIFBhcnNl
ckluc2VydGVkKSBjb25zdDsKICAgICBib29sIGFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMLCBjb25zdCBPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgU3RyaW5nVmll
dyBzdHlsZUNvbnRlbnQsIENoZWNrVW5zYWZlSGFzaGVzLCBFbGVtZW50JiwgYm9vbCBvdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKIAotICAgIGJvb2wgYWxsb3dF
dmFsKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBMb2dUb0NvbnNvbGUsIGJvb2wgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0V2YWwoSlND
OjpKU0dsb2JhbE9iamVjdCosIExvZ1RvQ29uc29sZSwgU3RyaW5nVmlldyBjb2RlQ29udGVudCwg
Ym9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKIAogICAg
IGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0
eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5ID0gZmFsc2UpIGNvbnN0OwogCkBAIC0yMjMsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB1
c2luZyBIYXNoSW5FbmZvcmNlZEFuZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgPSBzdGQ6OnBhaXI8
Ym9vbCwgYm9vbD47CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPiBIYXNoSW5FbmZv
cmNlZEFuZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KGNvbnN0IFByZWRpY2F0ZSYsIFN0cmluZ1ZpZXcgY29udGVudCwgT3B0aW9uU2V0PENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+KSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CiAK
LSAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVk
RGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVk
RGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29s
ZU1lc3NhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICB2b2lkIHJlcG9ydFZp
b2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBT
dHJpbmcmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBTdHJpbmdWaWV3IHNvdXJjZUNvbnRlbnQpIGNvbnN0OwogICAgIHZvaWQg
cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUs
IGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QmLCBjb25zdCBTdHJpbmcmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmlu
ZyYgY29uc29sZU1lc3NhZ2UsIEpTQzo6SlNHbG9iYWxPYmplY3QqID0gbnVsbHB0cikgY29uc3Q7
CiAgICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRl
ZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRl
ZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNv
bGVNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgU3RyaW5nVmlldyYgc291
cmNlQ29udGVudCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzb3VyY2VQb3NpdGlvbiwgY29uc3QgVVJM
JiBwcmVSZWRpcmVjdFVSTCA9IFVSTCgpLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiA9IG51bGxwdHIs
IEVsZW1lbnQqID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29u
c3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiB2aW9s
YXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYg
dmlvbGF0ZWREaXJlY3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIGJsb2NrZWRVUkwsIGNvbnN0IFN0
cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJp
bmdWaWV3JiBzb3VyY2VDb250ZW50LCBjb25zdCBUZXh0UG9zaXRpb24mIHNvdXJjZVBvc2l0aW9u
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVJMJiBwcmVSZWRpcmVjdFVSTCA9IFVSTCgp
LCBFbGVtZW50KiA9IG51bGxwdHIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAyMjUxOTZhM2JmMTMuLjQ3MGVmYTE4MzY2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTMwNiw3
ICszMDYsNyBAQCBFeGNlcHRpb25PcjxpbnQ+IFdvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0
KHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+CiB7CiAgICAgLy8gRklYTUU6IFNob3Vs
ZCB0aGlzIGNoZWNrIHJlYWxseSBoYXBwZW4gaGVyZT8gT3Igc2hvdWxkIGl0IGhhcHBlbiB3aGVu
IGNvZGUgaXMgYWJvdXQgdG8gZXZhbD8KICAgICBpZiAoYWN0aW9uLT50eXBlKCkgPT0gU2NoZWR1
bGVkQWN0aW9uOjpUeXBlOjpDb2RlKSB7Ci0gICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmFsbG93RXZhbChnbG9iYWxPYmplY3QoKSwgTG9nVG9Db25zb2xlOjpZZXMpKQorICAg
ICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0V2YWwoZ2xvYmFsT2JqZWN0
KCksIExvZ1RvQ29uc29sZTo6WWVzLCBhY3Rpb24tPmNvZGUoKSkpCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKQEAgLTMyNCw3ICszMjQsNyBAQCBFeGNlcHRpb25PcjxpbnQ+IFdvcmtl
ckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9u
PgogewogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBjaGVjayByZWFsbHkgaGFwcGVuIGhlcmU/
IE9yIHNob3VsZCBpdCBoYXBwZW4gd2hlbiBjb2RlIGlzIGFib3V0IHRvIGV2YWw/CiAgICAgaWYg
KGFjdGlvbi0+dHlwZSgpID09IFNjaGVkdWxlZEFjdGlvbjo6VHlwZTo6Q29kZSkgewotICAgICAg
ICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0V2YWwoZ2xvYmFsT2JqZWN0KCks
IExvZ1RvQ29uc29sZTo6WWVzKSkKKyAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+YWxsb3dFdmFsKGdsb2JhbE9iamVjdCgpLCBMb2dUb0NvbnNvbGU6OlllcywgYWN0aW9uLT5j
b2RlKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="473271"
          type_id="1"
          status="+"
          setter="katherine_cheney"
    />
          </attachment>
      

    </bug>

</bugzilla>