<?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>217362</bug_id>
          
          <creation_ts>2020-10-05 21:13:21 -0700</creation_ts>
          <short_desc>[JSC] More consistent PtrTagging for code types</short_desc>
          <delta_ts>2020-10-06 15:05:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</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>1695017</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-05 21:13:21 -0700</bug_when>
    <thetext>[JSC] More consistent PtrTagging for code types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695019</commentid>
    <comment_count>1</comment_count>
      <attachid>410608</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-05 21:14:50 -0700</bug_when>
    <thetext>Created attachment 410608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695032</commentid>
    <comment_count>2</comment_count>
      <attachid>410612</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-05 22:22:45 -0700</bug_when>
    <thetext>Created attachment 410612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695297</commentid>
    <comment_count>3</comment_count>
      <attachid>410612</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-10-06 13:51:06 -0700</bug_when>
    <thetext>Comment on attachment 410612
Patch

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

r=me with fixes.

&gt; Source/JavaScriptCore/llint/LLIntExceptions.cpp:76
&gt; +MacroAssemblerCodeRef&lt;ExceptionHandlerPtrTag&gt; catcher(OpcodeSize size)

Can we call this handleCatch (verb) instead of catcher (noun)?

&gt; Source/JavaScriptCore/llint/LLIntExceptions.cpp:80
&gt; +        return catcherThunk(size);

Ditto: handleCatchThunk?

&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:152
&gt; +            codeRef.construct(generateThunkWithJumpTo&lt;JITThunkPtrTag&gt;(wasm_function_prologue, &quot;function for call&quot;));

Is there any reason this shouldn&apos;t also be using JSEntryPtrTag (and obsoleting JITThunkPtrTag)?  Looks like this is the last use of it.  We used to use JITThunkPtrTag for certain pointers based on where they point to.  Now, you&apos;ve changed this to based on where the pointers will be used.  Based on where the pointer is used, it sounds like wasm_function_prologue should be using JSEntryPtrTag too.

You don&apos;t have to do this in this patch, but maybe it warrants a look later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695324</commentid>
    <comment_count>4</comment_count>
      <attachid>410612</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-06 14:55:30 -0700</bug_when>
    <thetext>Comment on attachment 410612
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/llint/LLIntExceptions.cpp:76
&gt;&gt; +MacroAssemblerCodeRef&lt;ExceptionHandlerPtrTag&gt; catcher(OpcodeSize size)
&gt; 
&gt; Can we call this handleCatch (verb) instead of catcher (noun)?

Changed.

&gt;&gt; Source/JavaScriptCore/llint/LLIntExceptions.cpp:80
&gt;&gt; +        return catcherThunk(size);
&gt; 
&gt; Ditto: handleCatchThunk?

Changed.

&gt;&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:152
&gt;&gt; +            codeRef.construct(generateThunkWithJumpTo&lt;JITThunkPtrTag&gt;(wasm_function_prologue, &quot;function for call&quot;));
&gt; 
&gt; Is there any reason this shouldn&apos;t also be using JSEntryPtrTag (and obsoleting JITThunkPtrTag)?  Looks like this is the last use of it.  We used to use JITThunkPtrTag for certain pointers based on where they point to.  Now, you&apos;ve changed this to based on where the pointers will be used.  Based on where the pointer is used, it sounds like wasm_function_prologue should be using JSEntryPtrTag too.
&gt; 
&gt; You don&apos;t have to do this in this patch, but maybe it warrants a look later.

wasmFunctionEntryThunk&apos;s code is used for jump target. So this I not JSEntry. I think JITThunkPtrTag is the right tag for this thunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695332</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-06 15:04:46 -0700</bug_when>
    <thetext>Committed r268077: &lt;https://trac.webkit.org/changeset/268077&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695335</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-06 15:05:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/70019125&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410608</attachid>
            <date>2020-10-05 21:14:50 -0700</date>
            <delta_ts>2020-10-05 22:22:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217362-20201005211449.patch</filename>
            <type>text/plain</type>
            <size>51152</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzgzMTU3NWMxYjE5NDE1ZmYyMTEzMzU0NTUzMGQzMDU4YjMwNDQyLi41NWRjMzI5NzlmZTYyMDg5
NDY4NWFmYTM1NjI2OTY4NzE3ZWUwNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAyMC0xMC0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE1vcmUgY29uc2lzdGVudCBQdHJUYWdnaW5nIGZvciBjb2RlIHR5
cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcz
NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBB
dm9pZCB0YWdnaW5nIEpJVCBjb2RlIHdpdGggT3BlcmF0aW9uUHRyVGFnLiBPcGVyYXRpb25QdHJU
YWcgc2hvdWxkIGJlIHVzZWQgb25seSBmb3Igb3BlcmF0aW9ucyAoQysrIGNvZGUpLgorICAgICAg
ICAyLiBBdm9pZCBtaXhpbmcgSklUIGFuZCBDKysgY29kZSBmb3IgdGhlIHNhbWUgdGFnZ2VkIHBv
aW50ZXJzLiBGb3IgZXhjZXB0aW9uIHRyYW1wb2xpbmUsIGluIEpJVCBtb2RlLCB3ZSBzaG91bGQg
aGF2ZQorICAgICAgICAgICBKSVQgdHJhbXBvbGluZSB0aHVuayB3aGljaCBnb2VzIHRvIExMSW50
IGJ5dGVjb2RlIGhhbmRsZXIgY29kZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxl
RXhjZXB0aW9uSGFuZGxlcnMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMpOgorICAg
ICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5r
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkNhbGxSZWNvcmQ6OkNhbGxSZWNv
cmQpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKiBqaXQvSklURXhj
ZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ha2VkTmVhckNhbGwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXROYWtlZE5lYXJUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdE5ha2VkQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5h
a2VkVGFpbENhbGwpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZCk6Cisg
ICAgICAgICogaml0L1Nsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpKSVRTbG93UGF0aENh
bGw6OmNhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgorICAgICAgICAoSlNDOjpM
TEludDo6Z2V0V2lkZTE2Q29kZVJlZik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJD
b2RlUmVmKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHIpOgorICAgICAgICAoSlND
OjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyKToKKyAgICAgICAgKiBsbGludC9MTElu
dEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0RnVuY3Rpb25FbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAo
SlNDOjpMTEludDo6aGFuZGxlVW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpMTElu
dDo6Y2F0Y2hlcik6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmspOgorICAgICAgICAo
SlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAgIChKU0M6
OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpldmFsRW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9ncmFt
RW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojptb2R1bGVQcm9ncmFtRW50cnlUaHVu
ayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtRnVuY3Rpb25FbnRyeVRodW5rKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmNhbGxUb1Rocm93VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6
aGFuZGxlVW5jYXVnaHRFeGNlcHRpb25UaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYXRj
aGVyVGh1bmspOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3Rh
Y2tUcmFjZXMpOgorICAgICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorCiAyMDIwLTEwLTA1ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZld2VkLCBmaXgg
Y3Jhc2ggZm9yIEFTYW4gZGVidWcgYnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBiZDgyZjcxMDZlOWMwOGRiNDViMTNhZTM0NDVj
NmIyOWI3NGU1Njg0Li4yZmVkMTgyZTQ1N2Y3NDY2MjY1ZjY1YjE0YzU5NDMxZjIzZTg0YWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAg
LTE0MDUsNyArMTQwNSw3IEBACiBvcCA6Y2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lCiBv
cCA6ZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludAogb3AgOmxsaW50X2dldF9ob3N0
X2NhbGxfcmV0dXJuX3ZhbHVlCi1vcCA6aGFuZGxlVW5jYXVnaHRFeGNlcHRpb24KK29wIDpsbGlu
dF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uCiBvcCA6b3BfY2FsbF9yZXR1cm5fbG9jYXRpb24K
IG9wIDpvcF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfY2FsbF92YXJhcmdzX3Ns
b3dfcmV0dXJuX2xvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGZmMmFkZWNmZjI1Y2Y1MTU5Mjk0YzVhYTJkZDAxZjQ4YjY3OTViNjAu
LjY0Zjg4OTE3OWI3YTNiODEwODBjMmUzZDAxNDcxN2IyMWQ1OTViZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC02NCw2ICs2NCw3IEBACiAj
aW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKKyNpbmNsdWRlICJMTEludEV4Y2Vw
dGlvbnMuaCIKICNpbmNsdWRlICJMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaCIKICNpbmNsdWRlICJNZXRhZGF0YVRhYmxlLmgiCiAjaW5jbHVkZSAiTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5oIgpAQCAtNDMxLDggKzQzMiw3IEBAIGJvb2wgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAgICAgICAgICAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBtX3JhcmVEYXRh
LT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgICAgICAg
ICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSAqaW5zdHJ1Y3Rpb25zKCkuYXQodW5saW5rZWRIYW5kbGVy
LnRhcmdldCkucHRyKCk7Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEJ5
dGVjb2RlUHRyVGFnPiBjb2RlUHRyID0gTExJbnQ6OmdldENvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+
KGluc3RydWN0aW9uKTsKLSAgICAgICAgICAgICAgICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5r
ZWRIYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihjb2Rl
UHRyLnJldGFnZ2VkPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KCkpKTsKKyAgICAgICAgICAgICAg
ICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5rZWRIYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbDxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Y2F0Y2hlcihpbnN0cnVjdGlvbi53aWR0aCgp
KS5jb2RlKCkpKTsKICNlbHNlCiAgICAgICAgICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVu
bGlua2VkSGFuZGxlcik7CiAjZW5kaWYKQEAgLTE1MDIsOCArMTUwMiw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEhhbmRsZXIgPSBtX3VubGlu
a2VkQ29kZS0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEhh
bmRsZXJJbmZvJiBoYW5kbGVyID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9uID0gKmluc3RydWN0aW9u
cygpLmF0KHVubGlua2VkSGFuZGxlci50YXJnZXQpLnB0cigpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnPiBjb2RlUHRyID0gTExJ
bnQ6OmdldENvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+KGluc3RydWN0aW9uKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIsIENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGNvZGVQdHIucmV0YWdnZWQ8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4oKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5p
bml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4oTExJbnQ6OmNhdGNoZXIoaW5zdHJ1Y3Rpb24ud2lkdGgoKSkuY29kZSgpKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICB1bmxpbmtJbmNv
bWluZ0NhbGxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKaW5kZXggZWE3YjJmMmY4ZjE3YTFmNDk0Y2UzYWNjZmNhMzU1MzVjZDJjZmY4OS4uZDE1
MDNiZjAzODQ3YTY0ODUzMzkxMTI3NzY4ZDcwMjUwZTg5YTUzOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzE3LDkgKzMxNyw5IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9j
YWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1
Y3RfdHJhbXBvbGluZToKICAgICBjYXNlIGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJuX3ZhbHVl
OgorICAgIGNhc2UgbGxpbnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbjoKICAgICBjYXNlIGNo
ZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNl
IGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKLSAgICBjYXNlIGhhbmRsZVVuY2F1Z2h0
RXhjZXB0aW9uOgogICAgIGNhc2UgZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludDoK
ICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGM2MWY5OTc5YzJkNThlM2YxZWQ3ZmZhYjUyNWFi
MTczZWI1NmIzZmMuLmQ4NmFjYTQxZDZjNDlkZmI2YTYxYzFjNThjMzUzMWVmMWRlNjcwMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC0xNDEs
NyArMTQxLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkK
ICAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7CiAgICAgICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIobV9ncmFwaC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcikp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0g
ICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFn
KSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25I
YW5kbGVyRnJvbUNhbGxlckZyYW1lKSkpOworICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxv
b2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwogCiAgICAgICAgIGp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0oKSk7CiAgICAgfQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgSklU
Q29tcGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCiAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIHByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKCkpOwogCi0gICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVj
b3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSkpOworICAgICAgICBhcHBlbmRDYWxsKG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpOwogCiAgICAgICAgIGp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIodm0oKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA5MjUzMzg2MmVmNjA4ZTc2NDg0ODRmZjk5NmY4ZDUz
NWRkZTA4ZTIyLi40NTNlMTU2YjBlNDI0ZTE2NWRkOTVlMmYwNzE2YzMxYjFmMTkwMmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
NDUyNiw3ICs0NTI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2Rl
KiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGFkZElDR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJl
cGF0Y2gpCi0gICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4ocmVw
YXRjaGluZ0Z1bmN0aW9uKSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwor
ICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRy
KG1hdGhJQykpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFkZElDR2VuZXJh
dGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5j
dGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJl
Z3MsIGlubmVyUmlnaHRSZWdzKTsKIApAQCAtNTE0NCw3ICs1MTQ0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRVbmFyeU1hdGhJQzxHZW5lcmF0
b3I+KiBtYXRoSUMKICAgICAgICAgICAgIHNpbGVudFNwaWxsKHNhdmVQbGFucyk7CiAKICAgICAg
ICAgICAgIGlmIChpY0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNoKQotICAg
ICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSk1pYz4ocmVwYXRjaGluZ0Z1bmN0aW9u
KSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncywgVHJ1
c3RlZEltbVB0cihtYXRoSUMpKTsKKyAgICAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihyZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MsIFRydXN0ZWRJbW1QdHIo
bWF0aElDKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9u
U3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1bmN0aW9u
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCBjOGQ0MTI5OGI5NzA4OGI2MmM3ZTdl
MzVkMjYwZThlZTAyZmQ2MzQ0Li45YzJlZTE5MzRlMGVkY2IzODhhMzQ2OTQ2ZWNhYzExZGVmZjFl
MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNTMsNyArNTMsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdlbmVyaWNJbikgXAogICAgIG1hY3JvKE9wZXJhdGlv
bkluQnlJZCkgXAotICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZEdlbmVyaWMpIFwKICAgICBtYWNy
byhPcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRT
dHJpY3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KSBcCkBAIC02NSw4
ICs2NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJl
Y3ROb25TdHJpY3RPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRTdHJpY3RC
dWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0
KSBcCi0gICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAot
ICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwKICAg
ICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRp
bWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRGaWVsZFN0
cmljdE9wdGltaXplKSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA5YWQyZjNiZGUyYWVkYjk2NDAxYmVmMGViMmQyYzYy
M2ZkZmQ3ZmE1Li5jZTg3Yzg3NjQ3NzVmYWZiMGM4NzlmNTllOWY5NGEzOTA4Zjg2Y2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAg
ICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBicmFuY2hUZXN0MzIoWmVybywgcmV0dXJu
VmFsdWVHUFIpLmxpbmtUbyhiZWdpbkxhYmVsLCB0aGlzKTsKICAgICAgICAgbW92ZShyZXR1cm5W
YWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgZW1pdE5ha2VkQ2FsbCht
X3ZtLT5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CisgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKG1fdm0tPmdldENUSVN0dWIoYXJpdHlG
aXh1cEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgoKTsgLy8gUmVz
ZXQgdGhpcywgaW4gb3JkZXIgdG8gZ3VhcmQgaXRzIHVzZSB3aXRoIEFTU0VSVHMuCkBAIC04ODIs
NyArODgyLDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgIGhhbmRs
ZXIubmF0aXZlQ29kZSA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4obV9sYWJlbHNbaGFuZGxlci50YXJnZXRdKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8m
IHJlY29yZCA6IG1fY2FsbHMpIHsKKworICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9uZWFyQ2Fs
bHMpIHsKKyAgICAgICAgaWYgKHJlY29yZC5jYWxsZWUpCisgICAgICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKHJlY29yZC5mcm9tLCByZWNvcmQuY2FsbGVlKTsKKyAgICB9CisgICAgZm9yIChhdXRv
JiByZWNvcmQgOiBtX2ZhckNhbGxzKSB7CiAgICAgICAgIGlmIChyZWNvcmQuY2FsbGVlKQogICAg
ICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhyZWNvcmQuZnJvbSwgcmVjb3JkLmNhbGxlZSk7CiAg
ICAgfQpAQCAtOTk2LDcgKzEwMDEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRp
b25IYW5kbGVycygpCiAgICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJG
cm9tQ2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAg
ICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1fY2FsbHMuYXBwZW5kKENh
bGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBCeXRlY29kZUluZGV4KCksIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21D
YWxsZXJGcmFtZSkpKTsKKyAgICAgICAgbV9mYXJDYWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChj
YWxsKE9wZXJhdGlvblB0clRhZyksIEJ5dGVjb2RlSW5kZXgoKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1l
KSkpOwogICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwogICAgIH0KIApAQCAt
MTAwOSw3ICsxMDE0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxl
cnMoKQogICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3Nl
ZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0o
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKCkpOwotICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9u
UHRyVGFnKSwgQnl0ZWNvZGVJbmRleCgpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKSk7CisgICAgICAgIG1fZmFyQ2FsbHMuYXBw
ZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBCeXRlY29kZUluZGV4KCks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlcikpKTsKICAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmODNmNmYxODU2Yzg2ZDBmOWE1NDgyYWRlZWQz
YmNhNzI3NDkyYmMyLi43OGU3OTE4NGVhM2RjM2QwMzE0ZGQ0ZjMwZWMzZTMwNDRkMzQ4ZTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTc0LDE2ICs3NCwxNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBzdHJ1Y3QgT3BQdXRQcml2YXRlTmFtZTsKICAgICBzdHJ1Y3QgT3BQdXRUb1Njb3Bl
OwogCisgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAgICBzdHJ1Y3QgQ2FsbFJlY29yZCB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZyb207CiAgICAgICAgIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleDsKLSAgICAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxs
ZWU7CisgICAgICAgIEZ1bmN0aW9uUHRyPHRhZz4gY2FsbGVlOwogCiAgICAgICAgIENhbGxSZWNv
cmQoKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBDYWxsUmVjb3JkKE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGZyb20sIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxsZWUpCisgICAgICAgIENhbGxSZWNvcmQoTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgZnJvbSwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBGdW5jdGlvblB0
cjx0YWc+IGNhbGxlZSkKICAgICAgICAgICAgIDogZnJvbShmcm9tKQogICAgICAgICAgICAgLCBi
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAsIGNhbGxlZShjYWxsZWUp
CkBAIC05MSw2ICs5Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgfTsKIAor
ICAgIHVzaW5nIEZhckNhbGxSZWNvcmQgPSBDYWxsUmVjb3JkPE9wZXJhdGlvblB0clRhZz47Cisg
ICAgdXNpbmcgTmVhckNhbGxSZWNvcmQgPSBDYWxsUmVjb3JkPEpTSW50ZXJuYWxQdHJUYWc+Owor
CiAgICAgc3RydWN0IEp1bXBUYWJsZSB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZy
b207CiAgICAgICAgIHVuc2lnbmVkIHRvQnl0ZWNvZGVPZmZzZXQ7CkBAIC0yODYsNyArMjkwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CiAgICAgICAgICAgICBD
YWxsIGZ1bmN0aW9uQ2FsbCA9IGNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICAgICAgICAgIG1f
Y2FsbHMuYXBwZW5kKENhbGxSZWNvcmQoZnVuY3Rpb25DYWxsLCBtX2J5dGVjb2RlSW5kZXgsIGZ1
bmN0aW9uLnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKSkpOworICAgICAgICAgICAgbV9mYXJD
YWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChmdW5jdGlvbkNhbGwsIG1fYnl0ZWNvZGVJbmRleCwg
ZnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKSk7CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb25DYWxsOwogICAgICAgICB9CiAKQEAgLTI5NCw3ICsyOTgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgQ2FsbCBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShj
b25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CiAg
ICAgICAgICAgICBDYWxsIGZ1bmN0aW9uQ2FsbCA9IGNhbGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBl
KE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3Jk
KGZ1bmN0aW9uQ2FsbCwgbV9ieXRlY29kZUluZGV4LCBmdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRp
b25QdHJUYWc+KCkpKTsKKyAgICAgICAgICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNv
cmQoZnVuY3Rpb25DYWxsLCBtX2J5dGVjb2RlSW5kZXgsIGZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJh
dGlvblB0clRhZz4oKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICAg
ICAgfQogI2VuZGlmCkBAIC05MDAsOCArOTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKIAotICAgICAgICBDYWxsIGVtaXROYWtlZENh
bGwoQ29kZVB0cjxOb1B0clRhZz4gZnVuY3Rpb24gPSBDb2RlUHRyPE5vUHRyVGFnPigpKTsKLSAg
ICAgICAgQ2FsbCBlbWl0TmFrZWRUYWlsQ2FsbChDb2RlUHRyPE5vUHRyVGFnPiBmdW5jdGlvbiA9
IENvZGVQdHI8Tm9QdHJUYWc+KCkpOworICAgICAgICBDYWxsIGVtaXROYWtlZE5lYXJDYWxsKENv
ZGVQdHI8Tm9QdHJUYWc+IGZ1bmN0aW9uID0gQ29kZVB0cjxOb1B0clRhZz4oKSk7CisgICAgICAg
IENhbGwgZW1pdE5ha2VkTmVhclRhaWxDYWxsKENvZGVQdHI8Tm9QdHJUYWc+IGZ1bmN0aW9uID0g
Q29kZVB0cjxOb1B0clRhZz4oKSk7CiAKICAgICAgICAgLy8gTG9hZHMgdGhlIGNoYXJhY3RlciB2
YWx1ZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5nIGludG8gZHN0LgogICAgICAgICB2b2lk
IGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwg
SnVtcExpc3QmIGZhaWx1cmVzKTsKQEAgLTk2MSw3ICs5NjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKIAotICAgICAgICBWZWN0b3I8
Q2FsbFJlY29yZD4gbV9jYWxsczsKKyAgICAgICAgVmVjdG9yPEZhckNhbGxSZWNvcmQ+IG1fZmFy
Q2FsbHM7CisgICAgICAgIFZlY3RvcjxOZWFyQ2FsbFJlY29yZD4gbV9uZWFyQ2FsbHM7CiAgICAg
ICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7CiAgICAgICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRl
eCwgTGFiZWw+IG1fY2hlY2twb2ludExhYmVsczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRH
ZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApp
bmRleCBmNWNmYmQ5NjhiNzc4NTc4MDY5NmFlNDVlMzEwZWY2NWRiOTBmMmUwLi4xOGQzYjVlM2U0
MmNhNGJlYTcxY2FlY2IxMmEyMzQ1ZDkzMmZlZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxs
KGNvbnN0IE9wVGFpbENhbGwmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qIGluZm8sIHVuc2lnbgog
ICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2NvZGVCbG9jayk7CiAg
ICAgaW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAgQ2FsbEZyYW1l
U2h1ZmZsZXIoKnRoaXMsIHNodWZmbGVEYXRhKS5wcmVwYXJlRm9yVGFpbENhbGwoKTsKLSAgICBt
X2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVt
aXROYWtlZFRhaWxDYWxsKCk7CisgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5m
b0luZGV4XS5ob3RQYXRoT3RoZXIgPSBlbWl0TmFrZWROZWFyVGFpbENhbGwoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMjQ5LDExICsyNDksMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENh
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9J
bmQKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQg
PT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSB7CiAgICAgICAgIGVtaXRSZXN0b3Jl
Q2FsbGVlU2F2ZXMoKTsKICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwotICAgICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9
IGVtaXROYWtlZFRhaWxDYWxsKCk7CisgICAgICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxs
TGlua0luZm9JbmRleF0uaG90UGF0aE90aGVyID0gZW1pdE5ha2VkTmVhclRhaWxDYWxsKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExp
bmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVtaXROYWtlZENhbGwoKTsKKyAgICBtX2NhbGxD
b21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVtaXROYWtl
ZE5lYXJDYWxsKCk7CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNl
dEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgp
OwpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2Fs
bExpbmtJbmZvKSwgcmVnVDIpOwogCiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5r
SW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPQotICAgICAgICBlbWl0TmFrZWRDYWxsKG1f
dm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKKyAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwobV92bS0+Z2V0Q1RJU3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgaWYg
KG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFy
YXJncykgewogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAppbmRleCBmOTEx
NjU0N2FlOWEwY2UzY2IwNzU0ZDJkYzVlYjc0NmQxODllN2RiLi4zNGU3N2M5ZWVlZTdhNTBmNzUx
NGEyYjc2MmM0MDQ0NDgwMjgwMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwCkBAIC0zMjQsMTEgKzMyNCwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2Fs
bChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0lu
ZAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAgICAgaWYgKG9wY29kZUlEID09
IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpIHsKICAgICAgICAgcHJlcGFy
ZUZvclRhaWxDYWxsU2xvdygpOwotICAgICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExp
bmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVtaXROYWtlZFRhaWxDYWxsKCk7CisgICAgICAg
IG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uaG90UGF0aE90aGVyID0g
ZW1pdE5ha2VkTmVhclRhaWxDYWxsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVt
aXROYWtlZENhbGwoKTsKKyAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5k
ZXhdLmhvdFBhdGhPdGhlciA9IGVtaXROYWtlZE5lYXJDYWxsKCk7CiAKICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBj
aGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFCiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAot
ICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxv
Y2F0aW9uID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisgICAgbV9jYWxsQ29tcGlsYXRpb25J
bmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWROZWFy
Q2FsbChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJlYXNv
bihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURXhjZXB0aW9ucy5jcHAKaW5kZXggM2NjMjMxNmZkNDdkOWEwMTBkMzZhMmUxNzRlZTk2YTNk
MTEzOWI5Mi4uYmE4MDU3Njc1NzQxMTkyYmZiMGNjNzljMmZiYjk3NWRiMDE4ZTY4MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5o
IgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNs
dWRlICJWTUlubGluZXMuaCIKQEAgLTc3LDcgKzc4LDcgQEAgdm9pZCBnZW5lcmljVW53aW5kKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBM
TEludDo6Z2V0Q29kZVB0cihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPm9wY29kZUlEKCkpOwogI2Vu
ZGlmCiAgICAgfSBlbHNlCi0gICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRDb2RlUHRy
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6aGFuZGxlVW5jYXVn
aHRFeGNlcHRpb24odm0pLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogCiAgICAgQVNTRVJU
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxGcmFtZSkgPCBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90Pih2bS50b3BFbnRyeUZyYW1lKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggZDhlNWRhMTJhMzBjYzYyOTlkMTBiMzExZjNlZGM4MDVkNGZjNTQ4Zi4uNjY2
M2VlNmIxZDZiZGI4M2UyMTFmYzAxNmE0Njk1Mjg1YmE1ZjhmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTg5LDE5ICs4OSwxOSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkc3QsCiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpJVDo6Q2Fs
bCBKSVQ6OmVtaXROYWtlZENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQorQUxXQVlTX0lO
TElORSBKSVQ6OkNhbGwgSklUOjplbWl0TmFrZWROZWFyQ2FsbChDb2RlUHRyPE5vUHRyVGFnPiB0
YXJnZXQpCiB7CiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCk7IC8vIFRoaXMgbWV0aG9kIHNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0
aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQuCiAgICAgQ2FsbCBuYWtlZENhbGwgPSBuZWFyQ2Fs
bCgpOwotICAgIG1fY2FsbHMuYXBwZW5kKENhbGxSZWNvcmQobmFrZWRDYWxsLCBtX2J5dGVjb2Rl
SW5kZXgsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0LnJldGFnZ2VkPE9wZXJh
dGlvblB0clRhZz4oKSkpKTsKKyAgICBtX25lYXJDYWxscy5hcHBlbmQoTmVhckNhbGxSZWNvcmQo
bmFrZWRDYWxsLCBtX2J5dGVjb2RlSW5kZXgsIEZ1bmN0aW9uUHRyPEpTSW50ZXJuYWxQdHJUYWc+
KHRhcmdldC5yZXRhZ2dlZDxKU0ludGVybmFsUHRyVGFnPigpKSkpOwogICAgIHJldHVybiBuYWtl
ZENhbGw7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpDYWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENh
bGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQorQUxXQVlTX0lOTElORSBKSVQ6OkNhbGwgSklU
OjplbWl0TmFrZWROZWFyVGFpbENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQogewogICAg
IEFTU0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBj
YWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2Rl
SW5kZXggaXMgc2V0LgogICAgIENhbGwgbmFrZWRDYWxsID0gbmVhclRhaWxDYWxsKCk7Ci0gICAg
bV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChuYWtlZENhbGwsIG1fYnl0ZWNvZGVJbmRleCwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFn
PigpKSkpOworICAgIG1fbmVhckNhbGxzLmFwcGVuZChOZWFyQ2FsbFJlY29yZChuYWtlZENhbGws
IG1fYnl0ZWNvZGVJbmRleCwgRnVuY3Rpb25QdHI8SlNJbnRlcm5hbFB0clRhZz4odGFyZ2V0LnJl
dGFnZ2VkPEpTSW50ZXJuYWxQdHJUYWc+KCkpKSk7CiAgICAgcmV0dXJuIG5ha2VkQ2FsbDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApp
bmRleCA2ZTY4ZWI2ZWIwNTNmOTk0NTU5MmJjZmJlODYzY2U3ZDI2Mzc4NWM4Li4xZjVlODNmYWY2
MjQyNjBmZTlmZTI1N2VmNzNlMzcyZjk3NDViMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTQ5MSw4ICsxNDkxLDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
QnlWYWxJbmZvKiBieVZhbEluZm8KICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYXNlcywgYnlW
YWxJbmZvLT5zbG93UGF0aFRhcmdldCk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBieVZh
bEluZm8tPmRvbmVUYXJnZXQpOwogICAgIGlmIChuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIpIHsK
LSAgICAgICAgQVNTRVJUKHJlbW92ZUNvZGVQdHJUYWcobV9jYWxscy5sYXN0KCkuY2FsbGVlLmV4
ZWN1dGFibGVBZGRyZXNzKCkpID09IHJlbW92ZUNvZGVQdHJUYWcob3BlcmF0aW9uV3JpdGVCYXJy
aWVyU2xvd1BhdGgpKTsKLSAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2NhbGxzLmxhc3QoKS5m
cm9tLCBtX2NhbGxzLmxhc3QoKS5jYWxsZWUpOworICAgICAgICBBU1NFUlQocmVtb3ZlQ29kZVB0
clRhZyhtX2ZhckNhbGxzLmxhc3QoKS5jYWxsZWUuZXhlY3V0YWJsZUFkZHJlc3MoKSkgPT0gcmVt
b3ZlQ29kZVB0clRhZyhvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCkpOworICAgICAgICBw
YXRjaEJ1ZmZlci5saW5rKG1fZmFyQ2FsbHMubGFzdCgpLmZyb20sIG1fZmFyQ2FsbHMubGFzdCgp
LmNhbGxlZSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNEaXJlY3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CkBAIC0xNTMxLDcgKzE1
MzEsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVk
SWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkEKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hl
Y2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3Ms
IGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFuZGxlcik7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNh
bGxTaXRlIDogbV9jYWxscykgeworICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBtX25l
YXJDYWxscykgeworICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9mYXJDYWxscykgewogICAgICAgICBpZiAo
Y2FsbFNpdGUuY2FsbGVlKQogICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5m
cm9tLCBjYWxsU2l0ZS5jYWxsZWUpOwogICAgIH0KQEAgLTE1NjUsNyArMTU2OSwxMSBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFs
SW5mbywgUmV0dXJuQWRkcmVzcwogICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkK
ICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgYnlWYWxJbmZvLT5l
eGNlcHRpb25IYW5kbGVyKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBtX2Nh
bGxzKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBjYWxsU2l0ZSA6IG1fbmVhckNhbGxzKSB7Cisg
ICAgICAgIGlmIChjYWxsU2l0ZS5jYWxsZWUpCisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KGNhbGxTaXRlLmZyb20sIGNhbGxTaXRlLmNhbGxlZSk7CisgICAgfQorICAgIGZvciAoY29uc3Qg
YXV0byYgY2FsbFNpdGUgOiBtX2ZhckNhbGxzKSB7CiAgICAgICAgIGlmIChjYWxsU2l0ZS5jYWxs
ZWUpCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxTaXRlLmZyb20sIGNhbGxTaXRl
LmNhbGxlZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
bG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgK
aW5kZXggOGVjMWE0ZTYyMzIwMzY3MmI1NjZkZmU0M2YzMDQwNDlhMDM3ZjUzZS4uNmU3ZjgxY2I0
Y2ZiYjg5Y2E0ODc4OWNmNWUzNWI4MDQxZjI4OTZkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1Nsb3dQYXRoQ2FsbC5oCkBAIC01OCw4ICs1OCw3IEBAIGNsYXNzIEpJVFNsb3dQYXRoQ2Fs
bCB7CiAgICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJn
dW1lbnRHUFIwKTsKICAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMp
LCBKSVQ6OmFyZ3VtZW50R1BSMSk7CiAjZW5kaWYKLSAgICAgICAgSklUOjpDYWxsIGNhbGwgPSBt
X2ppdC0+Y2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICBtX2ppdC0+bV9jYWxscy5hcHBl
bmQoQ2FsbFJlY29yZChjYWxsLCBtX2ppdC0+bV9ieXRlY29kZUluZGV4LCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KG1fc2xvd1BhdGhGdW5jdGlvbikpKTsKKyAgICAgICAgSklUOjpDYWxs
IGNhbGwgPSBtX2ppdC0+YXBwZW5kQ2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24pOwogCiAjaWYgQ1BV
KFg4Nl82NCkgJiYgT1MoV0lORE9XUykKICAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QwKTsg
Ly8gdlBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNGZmZjg0
ZGJhOGY3ZDhjYjg5MzYxODhhMWMzYjc0MDQ0MzFhN2NhNi4uY2I0NDVmNWU5MmNlNTI2NGUyNzM2
NTljZDA4NzA1NDYzZTNkYzA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuaApAQCAtMTYxLDExICsxNjEsMjIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8dGFnPiBnZXRDb2RlUmVmKE9wY29kZUlEIG9wY29kZUlEKQogICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8dGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGdldENvZGVQ
dHI8dGFnPihvcGNvZGVJRCkpOwogfQogCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZXRXaWRlMTZDb2RlUmVmKE9wY29kZUlE
IG9wY29kZUlEKQoreworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJRCkpOwor
fQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8dGFnPiBnZXRXaWRlMzJDb2RlUmVmKE9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KGdldFdpZGUzMkNvZGVQdHI8dGFnPihvcGNvZGVJRCkpOworfQorCiAjaWYgRU5BQkxFKEpJVCkK
IHRlbXBsYXRlPFB0clRhZyB0YWc+CiBBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRDb2RlRnVu
Y3Rpb25QdHIoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgQVNTRVJUKG9wY29kZUlEID49IE5V
TUJFUl9PRl9CWVRFQ09ERV9JRFMpOwogI2lmIENPTVBJTEVSKE1TVkMpCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4ob3Bjb2RlSUQpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpOwogI2Vsc2UKQEAgLTE3Myw2ICsxODQsMjYgQEAgQUxXQVlTX0lOTElO
RSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKE9wY29kZUlEIG9wY29kZUlEKQogI2VuZGlm
CiB9CiAKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRX
aWRlMTZDb2RlRnVuY3Rpb25QdHIoT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIo
TVNWQykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNv
ZGVQdHI8dGFnPihvcGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTE2Q29kZVB0cjx0YWc+KG9w
Y29kZUlEKS50ZW1wbGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBMTEludENvZGUgZ2V0V2lkZTMyQ29kZUZ1
bmN0aW9uUHRyKE9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMzJDb2RlUHRyPHRhZz4o
b3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihvcGNvZGVJRCkudGVt
cGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwogI2Vsc2UKIEFMV0FZU19J
TkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNWM2MDkxYzIzYjg4YmI0
MmU0YmI2YzUyYzVlY2M2YTE4ZjZiNGVhMS4uNmQ2ZDI0OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFh
M2YyYjlmMTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludC5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRy
eXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICAgICAgc3RhdGljIERpcmVjdEpJ
VENvZGUqIGppdENvZGU7CiAgICAgICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBjYWxsUmVmID0gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpLnJldGFnZ2Vk
PEpTRW50cnlQdHJUYWc+KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBjYWxsQXJpdHlDaGVja1Jl
ZiA9IGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuaygpLnJldGFnZ2VkQ29kZTxKU0VudHJ5
UHRyVGFnPigpOwotICAgICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShj
YWxsUmVmLCBjYWxsQXJpdHlDaGVja1JlZiwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklU
Q29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisgICAgICAgICAgICAgICAgYXV0byBjYWxs
UmVmID0gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpOworICAgICAgICAgICAgICAgIGF1dG8g
Y2FsbEFyaXR5Q2hlY2tSZWYgPSBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmsoKTsKKyAg
ICAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoY2FsbFJlZiwgY2FsbEFy
aXR5Q2hlY2tSZWYuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBj
b2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwpAQCAtNTgsOSArNTgsOSBA
QCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgICAgIHN0YXRpYyBEaXJlY3RKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsKLSAgICAgICAgICAgIGF1dG8gY29uc3RydWN0UmVmID0gZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RFbnRyeVRodW5rKCkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKLSAgICAgICAgICAgIGF1
dG8gY29uc3RydWN0QXJpdHlDaGVja1JlZiA9IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rKCkucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCk7Ci0gICAgICAgICAgICBqaXRD
b2RlID0gbmV3IERpcmVjdEpJVENvZGUoY29uc3RydWN0UmVmLCBjb25zdHJ1Y3RBcml0eUNoZWNr
UmVmLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6
U2hhcmVkKTsKKyAgICAgICAgICAgIGF1dG8gY29uc3RydWN0UmVmID0gZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RFbnRyeVRodW5rKCk7CisgICAgICAgICAgICBhdXRvIGNvbnN0cnVjdEFyaXR5Q2hlY2tS
ZWYgPSBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuaygpOworICAgICAgICAgICAg
aml0Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGNvbnN0cnVjdFJlZiwgY29uc3RydWN0QXJpdHlD
aGVja1JlZi5jb2RlKCksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJl
QXR0cmlidXRlOjpTaGFyZWQpOwogICAgICAgICB9KTsKIAogICAgICAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3RhdGlj
IE5hdGl2ZUpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGNvZGVSZWYgPSBldmFsRW50
cnlUaHVuaygpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29kZVJlZiA9IGV2YWxFbnRyeVRodW5rKCk7
CiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoY29kZVJlZiwgSklUVHlw
ZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hh
cmVBdHRyaWJ1dGU6OlNoYXJlZCk7CiAgICAgICAgIH0pOwogICAgICAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2
b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICBz
dGF0aWMgTmF0aXZlSklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29kZVJlZiA9IHBy
b2dyYW1FbnRyeVRodW5rKCkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBjb2RlUmVmID0gcHJvZ3JhbUVu
dHJ5VGh1bmsoKTsKICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShjb2Rl
UmVmLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBK
SVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAgICAgfSk7CiAgICAgICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7CkBAIC0xMzgsNyArMTM4LDcg
QEAgc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiAgICAgICAgIHN0YXRpYyBOYXRpdmVKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBjb2RlUmVmID0gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKS5yZXRhZ2dlZDxKU0VudHJ5
UHRyVGFnPigpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+IGNvZGVSZWYgPSBtb2R1bGVQcm9ncmFtRW50cnlUaHVuaygpOwogICAgICAgICAgICAgaml0
Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGNvZGVSZWYsIEpJVFR5cGU6OkludGVycHJldGVyVGh1
bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFy
ZWQpOwogICAgICAgICB9KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYo
KmppdENvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5jcHAKaW5kZXggMmExMWM1NjVlMjBjMWRhOGZmN2IyMGRhODYxZmRhMTc3YTNmNTJjZC4u
YjdmMDBkNzAwNWVkZDhlM2QzYzU0NzUzYjBhMjg2MGZiNDU5MjFjMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mIHZtKQogICAgIHJldHVybiBMTEludDo6
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiB9CiAKLXZvaWQqIGNhbGxUb1Rocm93KFZNJiB2bSkK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJv
dyhWTSYgdm0pCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNpZiBMTElOVF9UUkFDSU5HCkBA
IC01Nyw3ICs1NywzNiBAQCB2b2lkKiBjYWxsVG9UaHJvdyhWTSYgdm0pCiAgICAgICAgIGRhdGFM
b2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCBKU1ZhbHVlKHNjb3BlLmV4Y2VwdGlvbigpKSwgIiAo
Y2FsbFRvVGhyb3cpLlxuIik7CiAgICAgfQogI2VuZGlmCi0gICAgcmV0dXJuIExMSW50OjpnZXRD
b2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAo
T3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgIHJldHVybiBMTEludDo6Y2FsbFRvVGhyb3dUaHVu
aygpOworI2VuZGlmCisgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+KGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlVW5jYXVnaHRF
eGNlcHRpb24oVk0mKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VCgpKQorICAgICAgICByZXR1cm4gaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25UaHVuaygpOworI2Vu
ZGlmCisgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
KGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24pOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2F0Y2hlcihPcGNvZGVTaXplIHNpemUpCit7
CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgIHJl
dHVybiBjYXRjaGVyVGh1bmsoc2l6ZSk7CisjZW5kaWYKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAg
ICBjYXNlIE9wY29kZVNpemU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2Rl
UmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KG9wX2NhdGNoKTsKKyAgICBjYXNlIE9wY29kZVNp
emU6OldpZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWc+KG9wX2NhdGNoKTsKKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUz
MjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+KG9wX2NhdGNoKTsKKyAgICB9CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCmlu
ZGV4IGNhOGNmNTk2MjBlMTEzYmE0MzlmNTYwODMxYWZmZTg0YjI4ZWMzZGUuLjExYTRkNjdjOTIx
NTk2OTA4NGMwNzE4YTA2MDhkNjRkOWQ3ODkzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKQEAgLTQxLDYgKzQxLDkgQEAgbmFtZXNwYWNlIExM
SW50IHsKIEluc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KFZNJik7CiAKIC8vIFVzZSB0aGlzIHdo
ZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KLXZvaWQqIGNhbGxUb1Rocm93KFZN
Jik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRv
VGhyb3coVk0mKTsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWc+IGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uKFZNJik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2F0Y2hlcihPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAppbmRleCAzMWU1NDIxYmVmYTAxMDVjZmY4OTlkYzc5MTYxM2ExNWM4ODgy
MTk0Li40ODA4NjU5YjcyN2Q2NDk3ZTBjNjg0NWQ0ZjVhMTQzZTM4ODVjZTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE2MCwxNCAr
MTYwLDE0IEBAIGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7IHJldHVyCiAjZGVmaW5lIExMSU5UX0NBTExfVEhS
T1coZ2xvYmFsT2JqZWN0LCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIF9fY3RfZ2xvYmFsT2JqZWN0ID0gKGdsb2JhbE9i
amVjdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdGhyb3dF
eGNlcHRpb24oX19jdF9nbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvblRvVGhyb3cp
OyAgICAgICAgXAotICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKG51bGxwdHIsIGNhbGxUb1Ro
cm93KHZtKSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7ICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0NBTExfRU5EX0lNUEwobnVsbHB0ciwgY2FsbFRvVGhyb3codm0pLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsgICAgICAgICAgICAg
ICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VY
Q0VQVElPTihnbG9iYWxPYmplY3QpIGRvIHsgICAgICAgICAgICAgICBcCiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBfX2NjZV9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGRvRXhjZXB0aW9uRnV6emluZ0lmRW5h
YmxlZChfX2NjZV9nbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJMTEludFNsb3dQYXRocy9jYWxs
IiwgbnVsbHB0cik7IFwKICAgICAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIExMSU5UX0NBTExf
RU5EX0lNUEwobnVsbHB0ciwgY2FsbFRvVGhyb3codm0pLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFn
KTsgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChudWxscHRyLCBjYWxsVG9UaHJv
dyh2bSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcp
OyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZ2xv
YmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgZG8geyBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAppbmRleCBjNTkz
YzA3MjhjNDE2NmViMzRlY2Q1ZWJjMWQ0YTZhZDJjY2FjZTQ2Li45MWI2OGIyY2U2NjFmZWRkNTRk
OTVkOGE1YzhiMWIwMjMwMmU0YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5jcHAKQEAgLTQ3LDEyICs0NywxMSBAQCBuYW1lc3BhY2UgTExJbnQgewogLy8g
Zml0cyBvbiAzMi1iaXRzLCBhbmQgdGhhdCdzIG5vdCB0aGUgY2FzZSBvZiBnZXRDb2RlUmVmKGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKQogLy8gYW5kIG90aGVycyBMTEludEVudHJ5
cG9pbnRzLgogCi1zdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1
bmtLaW5kKQordGVtcGxhdGU8UHRyVGFnIHRhZz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25zdCBj
aGFyICp0aHVua0tpbmQpCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0OwogCi0gICAgLy8gRklY
TUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEkn
bSBub3Qgc3VyZSBJIGNhcmUuCi0gICAgTExJbnRDb2RlIHRhcmdldCA9IExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3Bjb2RlSUQpOwogICAgIGFzc2VydElzVGFnZ2Vk
V2l0aCh0YXJnZXQsIEpTRW50cnlQdHJUYWcpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpA
QCAtNjQsNzUgKzYzLDgxIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKE9wY29kZUlEIG9wCiAgICAgaml0LmZhckp1
bXAoc2NyYXRjaCwgSlNFbnRyeVB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgSklUVGh1bmtQdHJUYWcsICJMTEludCAlcyBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2lu
ZCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVz
IHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rKCkKK3RlbXBsYXRlPFB0
clRhZyB0YWc+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8oT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsK
LSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4+IGNvZGVSZWY7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
PHRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihvcGNvZGVJRCks
IHRodW5rS2luZCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBm
dW5jdGlvbkZvckNhbGxFbnRyeVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikp
OworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0Vu
dHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZv
ciBjYWxsIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVu
aygpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RFbnRyeVRodW5rKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNv
ZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgImZ1
bmN0aW9uIGZvciBjb25zdHJ1Y3QiKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IikpOwogICAgIH0pOwogICAg
IHJldHVybiBjb2RlUmVmOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuaygpCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKCkKIHsKLSAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8obGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5
IGNoZWNrIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywg
ImZ1bmN0aW9uIGZvciBjYWxsIHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGNvZGVSZWY7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmsoKQorTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKCkK
IHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZd
IHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8obGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25z
dHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBj
aGVjayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KIAotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBldmFsRW50cnlUaHVuaygpCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZXZhbEVudHJ5VGh1bmsoKQogewotICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhsbGludF9ldmFsX3Byb2xvZ3Vl
LCAiZXZhbCIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpT
RW50cnlQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4+IGNvZGVSZWY7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInBy
b2dyYW0iKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9ncmFtIikpOwog
ICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCkKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKU0VudHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50cnlUaHVuaygpCiB7Ci0gICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAg
ICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CisgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xNDQsOSArMTQ5LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCkKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
ewogICAgICAgICBpZiAoV2FzbTo6Q29udGV4dDo6dXNlRmFzdFRMUygpKQotICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8od2FzbV9mdW5jdGlvbl9w
cm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdhc21fZnVuY3Rp
b25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8od2FzbV9mdW5j
dGlvbl9wcm9sb2d1ZV9ub190bHMsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpJVFRodW5rUHRyVGFn
Pih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOwog
ICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTg1LDYgKzE5MCw1NiBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVRo
dW5rKCkKICAgICByZXR1cm4gY29kZVJlZjsKIH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGNhbGxUb1Rocm93VGh1bmsoKQoreworICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGxsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUsICJMTEludDo6Y2FsbFRvVGhyb3cgdGh1bmsiKSk7
CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvblRodW5rKCkK
K3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPihsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uLCAiaGFuZGxlX3VuY2F1Z2h0
X2V4Y2VwdGlvbiIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGNhdGNoZXJUaHVuayhPcGNv
ZGVTaXplIHNpemUpCit7CisgICAgc3dpdGNoIChzaXplKSB7CisgICAgY2FzZSBPcGNvZGVTaXpl
OjpOYXJyb3c6IHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxKU0VudHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaCIpKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybiBjb2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUx
NjogeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
bzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRy
PEpTRW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMTYiKSk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRl
MzI6IHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0
cjxKU0VudHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaDMyIikpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgTExJbnQKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCmluZGV4IDNlN2JjZTVhYzAzYzU3ZWE5ZmY4NTI3YzhhMjc1MjE0
YTk4NDViNmYuLjk1NDQ1ZmQxZjY0MGNjMDE3NGMzNTMyNWE0ZWFhZGJiYjVkYTIzYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCkBAIC01MCwxNSArNTAsMTkg
QEAgaW5saW5lIEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb1dhc20odm9pZCogY29kZSwgVk0qIHZt
LCBQcm90b0NhbGxGcmFtZSogZnJhbWUpCiAKIG5hbWVzcGFjZSBMTEludCB7CiAKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygp
OwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0
cnVjdEVudHJ5VGh1bmsoKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKCk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKCk7Ci1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCk7Ci1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCk7
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRy
eVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25G
b3JDYWxsRW50cnlUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuaygpOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1RodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZXZhbEVu
dHJ5VGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBwcm9ncmFt
RW50cnlUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVs
ZVByb2dyYW1FbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVRodW5rKCk7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJvd1RodW5rKCk7CitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlVW5jYXVnaHRFeGNlcHRp
b25UaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
IGNhdGNoZXJUaHVuayhPcGNvZGVTaXplKTsKKwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2FzbUZ1bmN0aW9uRW50cnlUaHVu
aygpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXgg
MDFhMWE5YTkxNDFjODlmMDI2YTAxOTJmY2I5NjU5YmZiNDY2NDEwZS4uNjI2YTQ2ODE3YjE1M2Iz
ZDU0NjQ3YzNkODJjMWI0NzQ5ZmU2MjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTM5MCw3ICsz
OTAsNyBAQCBtYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUs
IHRlbXAxLCB0ZW1wMikKICAgICBlbmQKIGVuZAogCi1vcChoYW5kbGVVbmNhdWdodEV4Y2VwdGlv
biwgbWFjcm8oKQorb3AobGxpbnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiwgbWFjcm8oKQog
ICAgIGxvYWRwIENhbGxlZSArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDMKICAgICBjb252ZXJ0Q2Fs
bGVlVG9WTSh0MykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVl
U2F2ZXNCdWZmZXIodDMsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhYTIzZWM2M2EzMDkzOTAzMDM1MGY2
MDhiMGI2ZmE0Mjk4NzNkNTdjLi5kNjUzMmZiOWRhOGZmMmM0OTc4Zjc1ODg2ZjY4ZWI1NjgxNmFj
MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMzMxLDcgKzMzMSw3IEBAIG1hY3JvIG1ha2VIb3N0RnVuY3Rp
b25DYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgIGVuZAogZW5k
CiAKLW9wKGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uLCBtYWNybyAoKQorb3AobGxpbnRfaGFuZGxl
X3VuY2F1Z2h0X2V4Y2VwdGlvbiwgbWFjcm8gKCkKICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDMK
ICAgICBjb252ZXJ0Q2FsbGVlVG9WTSh0MykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodDMsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCA4YTg5YmUzZjAyYmM2
MzE3ZjIwZWMwMTdjOTdlNjIxMjBjNDQ4OWE0Li4yOTVhMjYxM2Y0NzYyNTBhYzA4YzIwYzZiZWNk
OWZjY2Y2OTY0Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgU2FtcGxpbmdQcm9m
aWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyhjb25zdCBBYnN0cmFjdExvY2tlciYp
CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBtaWdodCBhbHNvIGJlIGZhbHNlIGZvciB2YXJpb3Vz
IHJlYXNvbnMgKGtub3duIGFuZCB1bmtub3duKSwgZXZlbiB0aG91Z2gKICAgICAgICAgICAgICAg
ICAvLyBpdCdzIHN1cGVyIHVubGlrZWx5LiBPbmUgcmVhc29uIHRoYXQgdGhpcyBjYW4gYmUgZmFs
c2UgaXMgd2hlbiB3ZSB0aHJvdyBmcm9tIGEgREZHIGZyYW1lLAogICAgICAgICAgICAgICAgIC8v
IGFuZCB3ZSBlbmQgdXAgaGF2aW5nIHRvIHVud2luZCBwYXN0IGFuIEVudHJ5RnJhbWUsIHdlIHdp
bGwgZW5kIHVwIGV4ZWN1dGluZwotICAgICAgICAgICAgICAgIC8vIGluc2lkZSB0aGUgTExJbnQn
cyBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvbi4gU28gd2UganVzdCBwcm90ZWN0IGFnYWluc3QgdGhp
cworICAgICAgICAgICAgICAgIC8vIGluc2lkZSB0aGUgTExJbnQncyBsbGludF9oYW5kbGVfdWNh
dWdodF9leGNlcHRpb24uIFNvIHdlIGp1c3QgcHJvdGVjdCBhZ2FpbnN0IHRoaXMKICAgICAgICAg
ICAgICAgICAvLyBieSBpZ25vcmluZyBpdC4KICAgICAgICAgICAgICAgICBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KDApOwogICAgICAgICAgICAgICAgIGlmICh0
b3BDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rIHx8IHRv
cENvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKaW5kZXggNzAzYmJkMWYz
NGZjYjE3MmY0NGMxNWM2YjJlMWM3ZWE4OGQ3ODUyZS4uMTgwMTM0Y2NiYWRkMjI4Y2I5ZTA1MmZh
NWQ1NDNmMDRlZTk5MzJhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmNwcApAQCAtNzY0LDcgKzc2NCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25XYXNtVG9KU0V4Y2VwdGlvbiwgdm9pZCosIChDYWxsRnJhbWUqIGNhbGxGcmFt
CiAgICAgQVNTRVJUKCEhdm0uY2FsbEZyYW1lRm9yQ2F0Y2gpOwogICAgIEFTU0VSVCghIXZtLnRh
cmdldE1hY2hpbmVQQ0ZvclRocm93KTsKICAgICAvLyBGSVhNRTogV2UgY291bGQgbWFrZSB0aGlz
IGJldHRlcjoKLSAgICAvLyBUaGlzIGlzIGEgdG90YWwgaGFjaywgYnV0IHRoZSBsbGludCAoYm90
aCBvcF9jYXRjaCBhbmQgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb24pCisgICAgLy8gVGhpcyBpcyBh
IHRvdGFsIGhhY2ssIGJ1dCB0aGUgbGxpbnQgKGJvdGggb3BfY2F0Y2ggYW5kIGxsaW50X2hhbmRs
ZV91bmNhdWdodF9leGNlcHRpb24pCiAgICAgLy8gcmVxdWlyZSBhIGNlbGwgaW4gdGhlIGNhbGxl
ZSBmaWVsZCB0byBsb2FkIHRoZSBWTS4gKFRoZSBiYXNlbGluZSBKSVQgZG9lcyBub3QgcmVxdWly
ZQogICAgIC8vIHRoaXMgc2luY2UgaXQgaXMgY29tcGlsZWQgd2l0aCBhIGNvbnN0YW50IFZNIHBv
aW50ZXIuKSBXZSBjb3VsZCBtYWtlIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24KICAgICAvLyBmb3Ig
ZXhjZXB0aW9ucyBmaXJzdCBsb2FkIGNhbGxGcmFtZUZvckNhdGNoIGluZm8gY2FsbCBmcmFtZSBy
ZWdpc3RlciBiZWZvcmUganVtcGluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410612</attachid>
            <date>2020-10-05 22:22:45 -0700</date>
            <delta_ts>2020-10-06 13:51:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217362-20201005222244.patch</filename>
            <type>text/plain</type>
            <size>51255</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzgzMTU3NWMxYjE5NDE1ZmYyMTEzMzU0NTUzMGQzMDU4YjMwNDQyLi41NWRjMzI5NzlmZTYyMDg5
NDY4NWFmYTM1NjI2OTY4NzE3ZWUwNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAyMC0xMC0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE1vcmUgY29uc2lzdGVudCBQdHJUYWdnaW5nIGZvciBjb2RlIHR5
cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcz
NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBB
dm9pZCB0YWdnaW5nIEpJVCBjb2RlIHdpdGggT3BlcmF0aW9uUHRyVGFnLiBPcGVyYXRpb25QdHJU
YWcgc2hvdWxkIGJlIHVzZWQgb25seSBmb3Igb3BlcmF0aW9ucyAoQysrIGNvZGUpLgorICAgICAg
ICAyLiBBdm9pZCBtaXhpbmcgSklUIGFuZCBDKysgY29kZSBmb3IgdGhlIHNhbWUgdGFnZ2VkIHBv
aW50ZXJzLiBGb3IgZXhjZXB0aW9uIHRyYW1wb2xpbmUsIGluIEpJVCBtb2RlLCB3ZSBzaG91bGQg
aGF2ZQorICAgICAgICAgICBKSVQgdHJhbXBvbGluZSB0aHVuayB3aGljaCBnb2VzIHRvIExMSW50
IGJ5dGVjb2RlIGhhbmRsZXIgY29kZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxl
RXhjZXB0aW9uSGFuZGxlcnMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMpOgorICAg
ICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5r
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKToK
KyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OkNhbGxSZWNvcmQ6OkNhbGxSZWNv
cmQpOgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21w
aWxlVGFpbENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZSk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKToKKyAgICAgICAgKiBqaXQvSklURXhj
ZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyaWNVbndpbmQpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ha2VkTmVhckNhbGwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXROYWtlZE5lYXJUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdE5ha2VkQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5h
a2VkVGFpbENhbGwpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZCk6Cisg
ICAgICAgICogaml0L1Nsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpKSVRTbG93UGF0aENh
bGw6OmNhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgorICAgICAgICAoSlNDOjpM
TEludDo6Z2V0V2lkZTE2Q29kZVJlZik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJD
b2RlUmVmKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHIpOgorICAgICAgICAoSlND
OjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyKToKKyAgICAgICAgKiBsbGludC9MTElu
dEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0RnVuY3Rpb25FbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAo
SlNDOjpMTEludDo6aGFuZGxlVW5jYXVnaHRFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpMTElu
dDo6Y2F0Y2hlcik6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmspOgorICAgICAgICAo
SlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAgIChKU0M6
OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpldmFsRW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9ncmFt
RW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojptb2R1bGVQcm9ncmFtRW50cnlUaHVu
ayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtRnVuY3Rpb25FbnRyeVRodW5rKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmNhbGxUb1Rocm93VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6
aGFuZGxlVW5jYXVnaHRFeGNlcHRpb25UaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYXRj
aGVyVGh1bmspOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3Rh
Y2tUcmFjZXMpOgorICAgICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorCiAyMDIwLTEwLTA1ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZld2VkLCBmaXgg
Y3Jhc2ggZm9yIEFTYW4gZGVidWcgYnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBiZDgyZjcxMDZlOWMwOGRiNDViMTNhZTM0NDVj
NmIyOWI3NGU1Njg0Li4yZmVkMTgyZTQ1N2Y3NDY2MjY1ZjY1YjE0YzU5NDMxZjIzZTg0YWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAg
LTE0MDUsNyArMTQwNSw3IEBACiBvcCA6Y2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lCiBv
cCA6ZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludAogb3AgOmxsaW50X2dldF9ob3N0
X2NhbGxfcmV0dXJuX3ZhbHVlCi1vcCA6aGFuZGxlVW5jYXVnaHRFeGNlcHRpb24KK29wIDpsbGlu
dF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uCiBvcCA6b3BfY2FsbF9yZXR1cm5fbG9jYXRpb24K
IG9wIDpvcF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfY2FsbF92YXJhcmdzX3Ns
b3dfcmV0dXJuX2xvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGZmMmFkZWNmZjI1Y2Y1MTU5Mjk0YzVhYTJkZDAxZjQ4YjY3OTViNjAu
LjY0Zjg4OTE3OWI3YTNiODEwODBjMmUzZDAxNDcxN2IyMWQ1OTViZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC02NCw2ICs2NCw3IEBACiAj
aW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKKyNpbmNsdWRlICJMTEludEV4Y2Vw
dGlvbnMuaCIKICNpbmNsdWRlICJMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaCIKICNpbmNsdWRlICJNZXRhZGF0YVRhYmxlLmgiCiAjaW5jbHVkZSAiTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5oIgpAQCAtNDMxLDggKzQzMiw3IEBAIGJvb2wgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAgICAgICAgICAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBtX3JhcmVEYXRh
LT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldOwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgICAgICAg
ICAgYXV0byYgaW5zdHJ1Y3Rpb24gPSAqaW5zdHJ1Y3Rpb25zKCkuYXQodW5saW5rZWRIYW5kbGVy
LnRhcmdldCkucHRyKCk7Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEJ5
dGVjb2RlUHRyVGFnPiBjb2RlUHRyID0gTExJbnQ6OmdldENvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+
KGluc3RydWN0aW9uKTsKLSAgICAgICAgICAgICAgICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5r
ZWRIYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihjb2Rl
UHRyLnJldGFnZ2VkPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KCkpKTsKKyAgICAgICAgICAgICAg
ICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5rZWRIYW5kbGVyLCBDb2RlTG9jYXRpb25MYWJlbDxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Y2F0Y2hlcihpbnN0cnVjdGlvbi53aWR0aCgp
KS5jb2RlKCkpKTsKICNlbHNlCiAgICAgICAgICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVu
bGlua2VkSGFuZGxlcik7CiAjZW5kaWYKQEAgLTE1MDIsOCArMTUwMiw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEhhbmRsZXIgPSBtX3VubGlu
a2VkQ29kZS0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEhh
bmRsZXJJbmZvJiBoYW5kbGVyID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyc1tpXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9uID0gKmluc3RydWN0aW9u
cygpLmF0KHVubGlua2VkSGFuZGxlci50YXJnZXQpLnB0cigpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnPiBjb2RlUHRyID0gTExJ
bnQ6OmdldENvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+KGluc3RydWN0aW9uKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIsIENvZGVMb2Nh
dGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGNvZGVQdHIucmV0YWdnZWQ8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4oKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5p
bml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4oTExJbnQ6OmNhdGNoZXIoaW5zdHJ1Y3Rpb24ud2lkdGgoKSkuY29kZSgpKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICB1bmxpbmtJbmNv
bWluZ0NhbGxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKaW5kZXggZWE3YjJmMmY4ZjE3YTFmNDk0Y2UzYWNjZmNhMzU1MzVjZDJjZmY4OS4uZDE1
MDNiZjAzODQ3YTY0ODUzMzkxMTI3NzY4ZDcwMjUwZTg5YTUzOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzE3LDkgKzMxNyw5IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSBsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9j
YWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1
Y3RfdHJhbXBvbGluZToKICAgICBjYXNlIGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJuX3ZhbHVl
OgorICAgIGNhc2UgbGxpbnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbjoKICAgICBjYXNlIGNo
ZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNl
IGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKLSAgICBjYXNlIGhhbmRsZVVuY2F1Z2h0
RXhjZXB0aW9uOgogICAgIGNhc2UgZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludDoK
ICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3Bf
aXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGM2MWY5OTc5YzJkNThlM2YxZWQ3ZmZhYjUyNWFi
MTczZWI1NmIzZmMuLmQ4NmFjYTQxZDZjNDlkZmI2YTYxYzFjNThjMzUzMWVmMWRlNjcwMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC0xNDEs
NyArMTQxLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkK
ICAgICAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7CiAgICAgICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIobV9ncmFwaC5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcikp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0g
ICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVjb3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFn
KSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25I
YW5kbGVyRnJvbUNhbGxlckZyYW1lKSkpOworICAgICAgICBhcHBlbmRDYWxsKG9wZXJhdGlvbkxv
b2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUpOwogCiAgICAgICAgIGp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0oKSk7CiAgICAgfQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgSklU
Q29tcGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCiAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cigmdm0oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIHByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKCkpOwogCi0gICAgICAgIG1fY2FsbHMuYXBwZW5kKENhbGxMaW5rUmVj
b3JkKGNhbGwoT3BlcmF0aW9uUHRyVGFnKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSkpOworICAgICAgICBhcHBlbmRDYWxsKG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpOwogCiAgICAgICAgIGp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIodm0oKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA5MjUzMzg2MmVmNjA4ZTc2NDg0ODRmZjk5NmY4ZDUz
NWRkZTA4ZTIyLi40NTNlMTU2YjBlNDI0ZTE2NWRkOTVlMmYwNzE2YzMxYjFmMTkwMmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
NDUyNiw3ICs0NTI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2Rl
KiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGFkZElDR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJl
cGF0Y2gpCi0gICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oYml0d2lzZV9jYXN0PEpfSklUT3BlcmF0aW9uX0dKSk1pYz4ocmVw
YXRjaGluZ0Z1bmN0aW9uKSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwor
ICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRy
KG1hdGhJQykpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFkZElDR2VuZXJh
dGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5j
dGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJl
Z3MsIGlubmVyUmlnaHRSZWdzKTsKIApAQCAtNTE0NCw3ICs1MTQ0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRVbmFyeU1hdGhJQzxHZW5lcmF0
b3I+KiBtYXRoSUMKICAgICAgICAgICAgIHNpbGVudFNwaWxsKHNhdmVQbGFucyk7CiAKICAgICAg
ICAgICAgIGlmIChpY0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNoKQotICAg
ICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKGJpdHdpc2VfY2FzdDxKX0pJVE9wZXJhdGlvbl9HSk1pYz4ocmVwYXRjaGluZ0Z1bmN0aW9u
KSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncywgVHJ1
c3RlZEltbVB0cihtYXRoSUMpKTsKKyAgICAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+
c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihyZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MsIFRydXN0ZWRJbW1QdHIo
bWF0aElDKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9u
U3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1bmN0aW9u
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCBjOGQ0MTI5OGI5NzA4OGI2MmM3ZTdl
MzVkMjYwZThlZTAyZmQ2MzQ0Li45YzJlZTE5MzRlMGVkY2IzODhhMzQ2OTQ2ZWNhYzExZGVmZjFl
MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNTMsNyArNTMsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdlbmVyaWNJbikgXAogICAgIG1hY3JvKE9wZXJhdGlv
bkluQnlJZCkgXAotICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZEdlbmVyaWMpIFwKICAgICBtYWNy
byhPcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRT
dHJpY3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KSBcCkBAIC02NSw4
ICs2NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJl
Y3ROb25TdHJpY3RPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRTdHJpY3RC
dWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0
KSBcCi0gICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAot
ICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwKICAg
ICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRp
bWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRGaWVsZFN0
cmljdE9wdGltaXplKSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA5YWQyZjNiZGUyYWVkYjk2NDAxYmVmMGViMmQyYzYy
M2ZkZmQ3ZmE1Li5jZTg3Yzg3NjQ3NzVmYWZiMGM4NzlmNTllOWY5NGEzOTA4Zjg2Y2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAg
ICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBicmFuY2hUZXN0MzIoWmVybywgcmV0dXJu
VmFsdWVHUFIpLmxpbmtUbyhiZWdpbkxhYmVsLCB0aGlzKTsKICAgICAgICAgbW92ZShyZXR1cm5W
YWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgZW1pdE5ha2VkQ2FsbCht
X3ZtLT5nZXRDVElTdHViKGFyaXR5Rml4dXBHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CisgICAgICAgIGVtaXROYWtlZE5lYXJDYWxsKG1fdm0tPmdldENUSVN0dWIoYXJpdHlG
aXh1cEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgoKTsgLy8gUmVz
ZXQgdGhpcywgaW4gb3JkZXIgdG8gZ3VhcmQgaXRzIHVzZSB3aXRoIEFTU0VSVHMuCkBAIC04ODIs
NyArODgyLDEyIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgIGhhbmRs
ZXIubmF0aXZlQ29kZSA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4obV9sYWJlbHNbaGFuZGxlci50YXJnZXRdKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8m
IHJlY29yZCA6IG1fY2FsbHMpIHsKKworICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9uZWFyQ2Fs
bHMpIHsKKyAgICAgICAgaWYgKHJlY29yZC5jYWxsZWUpCisgICAgICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKHJlY29yZC5mcm9tLCByZWNvcmQuY2FsbGVlKTsKKyAgICB9CisgICAgZm9yIChhdXRv
JiByZWNvcmQgOiBtX2ZhckNhbGxzKSB7CiAgICAgICAgIGlmIChyZWNvcmQuY2FsbGVlKQogICAg
ICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhyZWNvcmQuZnJvbSwgcmVjb3JkLmNhbGxlZSk7CiAg
ICAgfQpAQCAtOTk2LDcgKzEwMDEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRp
b25IYW5kbGVycygpCiAgICAgICAgIC8vIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJG
cm9tQ2FsbGVyRnJhbWUgaXMgcGFzc2VkIG9uZSBhcmd1bWVudCwgdGhlIFZNKi4KICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAg
ICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0oKSk7Ci0gICAgICAgIG1fY2FsbHMuYXBwZW5kKENh
bGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBCeXRlY29kZUluZGV4KCksIEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21D
YWxsZXJGcmFtZSkpKTsKKyAgICAgICAgbV9mYXJDYWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChj
YWxsKE9wZXJhdGlvblB0clRhZyksIEJ5dGVjb2RlSW5kZXgoKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1l
KSkpOwogICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwogICAgIH0KIApAQCAt
MTAwOSw3ICsxMDE0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxl
cnMoKQogICAgICAgICAvLyBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3Nl
ZCBvbmUgYXJndW1lbnQsIHRoZSBWTSouCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigmdm0o
KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIHByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKCkpOwotICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGNhbGwoT3BlcmF0aW9u
UHRyVGFnKSwgQnl0ZWNvZGVJbmRleCgpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKSk7CisgICAgICAgIG1fZmFyQ2FsbHMuYXBw
ZW5kKEZhckNhbGxSZWNvcmQoY2FsbChPcGVyYXRpb25QdHJUYWcpLCBCeXRlY29kZUluZGV4KCks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlcikpKTsKICAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmODNmNmYxODU2Yzg2ZDBmOWE1NDgyYWRlZWQz
YmNhNzI3NDkyYmMyLi43OGU3OTE4NGVhM2RjM2QwMzE0ZGQ0ZjMwZWMzZTMwNDRkMzQ4ZTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTc0LDE2ICs3NCwxNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBzdHJ1Y3QgT3BQdXRQcml2YXRlTmFtZTsKICAgICBzdHJ1Y3QgT3BQdXRUb1Njb3Bl
OwogCisgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAgICBzdHJ1Y3QgQ2FsbFJlY29yZCB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZyb207CiAgICAgICAgIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleDsKLSAgICAgICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxs
ZWU7CisgICAgICAgIEZ1bmN0aW9uUHRyPHRhZz4gY2FsbGVlOwogCiAgICAgICAgIENhbGxSZWNv
cmQoKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBDYWxsUmVjb3JkKE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGZyb20sIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBjYWxsZWUpCisgICAgICAgIENhbGxSZWNvcmQoTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgZnJvbSwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBGdW5jdGlvblB0
cjx0YWc+IGNhbGxlZSkKICAgICAgICAgICAgIDogZnJvbShmcm9tKQogICAgICAgICAgICAgLCBi
eXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAsIGNhbGxlZShjYWxsZWUp
CkBAIC05MSw2ICs5Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgfTsKIAor
ICAgIHVzaW5nIEZhckNhbGxSZWNvcmQgPSBDYWxsUmVjb3JkPE9wZXJhdGlvblB0clRhZz47Cisg
ICAgdXNpbmcgTmVhckNhbGxSZWNvcmQgPSBDYWxsUmVjb3JkPEpTSW50ZXJuYWxQdHJUYWc+Owor
CiAgICAgc3RydWN0IEp1bXBUYWJsZSB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZy
b207CiAgICAgICAgIHVuc2lnbmVkIHRvQnl0ZWNvZGVPZmZzZXQ7CkBAIC0yODYsNyArMjkwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENhbGwgYXBwZW5kQ2FsbChjb25zdCBGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CiAgICAgICAgICAgICBD
YWxsIGZ1bmN0aW9uQ2FsbCA9IGNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKLSAgICAgICAgICAgIG1f
Y2FsbHMuYXBwZW5kKENhbGxSZWNvcmQoZnVuY3Rpb25DYWxsLCBtX2J5dGVjb2RlSW5kZXgsIGZ1
bmN0aW9uLnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKSkpOworICAgICAgICAgICAgbV9mYXJD
YWxscy5hcHBlbmQoRmFyQ2FsbFJlY29yZChmdW5jdGlvbkNhbGwsIG1fYnl0ZWNvZGVJbmRleCwg
ZnVuY3Rpb24ucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKSk7CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb25DYWxsOwogICAgICAgICB9CiAKQEAgLTI5NCw3ICsyOTgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgQ2FsbCBhcHBlbmRDYWxsV2l0aFNsb3dQYXRoUmV0dXJuVHlwZShj
b25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQogICAgICAgICB7CiAg
ICAgICAgICAgICBDYWxsIGZ1bmN0aW9uQ2FsbCA9IGNhbGxXaXRoU2xvd1BhdGhSZXR1cm5UeXBl
KE9wZXJhdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3Jk
KGZ1bmN0aW9uQ2FsbCwgbV9ieXRlY29kZUluZGV4LCBmdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRp
b25QdHJUYWc+KCkpKTsKKyAgICAgICAgICAgIG1fZmFyQ2FsbHMuYXBwZW5kKEZhckNhbGxSZWNv
cmQoZnVuY3Rpb25DYWxsLCBtX2J5dGVjb2RlSW5kZXgsIGZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJh
dGlvblB0clRhZz4oKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uQ2FsbDsKICAgICAg
ICAgfQogI2VuZGlmCkBAIC05MDAsOCArOTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKIAotICAgICAgICBDYWxsIGVtaXROYWtlZENh
bGwoQ29kZVB0cjxOb1B0clRhZz4gZnVuY3Rpb24gPSBDb2RlUHRyPE5vUHRyVGFnPigpKTsKLSAg
ICAgICAgQ2FsbCBlbWl0TmFrZWRUYWlsQ2FsbChDb2RlUHRyPE5vUHRyVGFnPiBmdW5jdGlvbiA9
IENvZGVQdHI8Tm9QdHJUYWc+KCkpOworICAgICAgICBDYWxsIGVtaXROYWtlZE5lYXJDYWxsKENv
ZGVQdHI8Tm9QdHJUYWc+IGZ1bmN0aW9uID0gQ29kZVB0cjxOb1B0clRhZz4oKSk7CisgICAgICAg
IENhbGwgZW1pdE5ha2VkTmVhclRhaWxDYWxsKENvZGVQdHI8Tm9QdHJUYWc+IGZ1bmN0aW9uID0g
Q29kZVB0cjxOb1B0clRhZz4oKSk7CiAKICAgICAgICAgLy8gTG9hZHMgdGhlIGNoYXJhY3RlciB2
YWx1ZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5nIGludG8gZHN0LgogICAgICAgICB2b2lk
IGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwg
SnVtcExpc3QmIGZhaWx1cmVzKTsKQEAgLTk2MSw3ICs5NjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKIAotICAgICAgICBWZWN0b3I8
Q2FsbFJlY29yZD4gbV9jYWxsczsKKyAgICAgICAgVmVjdG9yPEZhckNhbGxSZWNvcmQ+IG1fZmFy
Q2FsbHM7CisgICAgICAgIFZlY3RvcjxOZWFyQ2FsbFJlY29yZD4gbV9uZWFyQ2FsbHM7CiAgICAg
ICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7CiAgICAgICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRl
eCwgTGFiZWw+IG1fY2hlY2twb2ludExhYmVsczsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRH
ZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApp
bmRleCBmNWNmYmQ5NjhiNzc4NTc4MDY5NmFlNDVlMzEwZWY2NWRiOTBmMmUwLi4xOGQzYjVlM2U0
MmNhNGJlYTcxY2FlY2IxMmEyMzQ1ZDkzMmZlZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxs
KGNvbnN0IE9wVGFpbENhbGwmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qIGluZm8sIHVuc2lnbgog
ICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhtX2NvZGVCbG9jayk7CiAg
ICAgaW5mby0+c2V0RnJhbWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CiAgICAgQ2FsbEZyYW1l
U2h1ZmZsZXIoKnRoaXMsIHNodWZmbGVEYXRhKS5wcmVwYXJlRm9yVGFpbENhbGwoKTsKLSAgICBt
X2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVt
aXROYWtlZFRhaWxDYWxsKCk7CisgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5m
b0luZGV4XS5ob3RQYXRoT3RoZXIgPSBlbWl0TmFrZWROZWFyVGFpbENhbGwoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMjQ5LDExICsyNDksMTEgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENh
bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9J
bmQKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQg
PT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKSB7CiAgICAgICAgIGVtaXRSZXN0b3Jl
Q2FsbGVlU2F2ZXMoKTsKICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOwotICAgICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9
IGVtaXROYWtlZFRhaWxDYWxsKCk7CisgICAgICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxs
TGlua0luZm9JbmRleF0uaG90UGF0aE90aGVyID0gZW1pdE5ha2VkTmVhclRhaWxDYWxsKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExp
bmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVtaXROYWtlZENhbGwoKTsKKyAgICBtX2NhbGxD
b21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVtaXROYWtl
ZE5lYXJDYWxsKCk7CiAKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNl
dEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgp
OwpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2Fs
bExpbmtJbmZvKSwgcmVnVDIpOwogCiAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5r
SW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPQotICAgICAgICBlbWl0TmFrZWRDYWxsKG1f
dm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRy
VGFnPigpKTsKKyAgICAgICAgZW1pdE5ha2VkTmVhckNhbGwobV92bS0+Z2V0Q1RJU3R1YihsaW5r
Q2FsbFRodW5rR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOwogCiAgICAgaWYg
KG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFy
YXJncykgewogICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAppbmRleCBmOTEx
NjU0N2FlOWEwY2UzY2IwNzU0ZDJkYzVlYjc0NmQxODllN2RiLi4zNGU3N2M5ZWVlZTdhNTBmNzUx
NGEyYjc2MmM0MDQ0NDgwMjgwMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwCkBAIC0zMjQsMTEgKzMyNCwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2Fs
bChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0lu
ZAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAgICAgaWYgKG9wY29kZUlEID09
IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpIHsKICAgICAgICAgcHJlcGFy
ZUZvclRhaWxDYWxsU2xvdygpOwotICAgICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExp
bmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVtaXROYWtlZFRhaWxDYWxsKCk7CisgICAgICAg
IG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uaG90UGF0aE90aGVyID0g
ZW1pdE5ha2VkTmVhclRhaWxDYWxsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmhvdFBhdGhPdGhlciA9IGVt
aXROYWtlZENhbGwoKTsKKyAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5k
ZXhdLmhvdFBhdGhPdGhlciA9IGVtaXROYWtlZE5lYXJDYWxsKCk7CiAKICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBj
aGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgSklU
Ojpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFCiAgICAgaWYgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKIAot
ICAgIG1fY2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uY2FsbFJldHVybkxv
Y2F0aW9uID0gZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5l
cmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisgICAgbV9jYWxsQ29tcGlsYXRpb25J
bmZvW2NhbGxMaW5rSW5mb0luZGV4XS5jYWxsUmV0dXJuTG9jYXRpb24gPSBlbWl0TmFrZWROZWFy
Q2FsbChtX3ZtLT5nZXRDVElTdHViKGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9w
Y29kZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzKSB7CiAgICAgICAgIGFib3J0V2l0aFJlYXNv
bihKSVREaWRSZXR1cm5Gcm9tVGFpbENhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURXhjZXB0aW9ucy5jcHAKaW5kZXggM2NjMjMxNmZkNDdkOWEwMTBkMzZhMmUxNzRlZTk2YTNk
MTEzOWI5Mi4uYmE4MDU3Njc1NzQxMTkyYmZiMGNjNzljMmZiYjk3NWRiMDE4ZTY4MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5o
IgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNs
dWRlICJWTUlubGluZXMuaCIKQEAgLTc3LDcgKzc4LDcgQEAgdm9pZCBnZW5lcmljVW53aW5kKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgICAgICBjYXRjaFJvdXRpbmUgPSBM
TEludDo6Z2V0Q29kZVB0cihjYXRjaFBDRm9ySW50ZXJwcmV0ZXItPm9wY29kZUlEKCkpOwogI2Vu
ZGlmCiAgICAgfSBlbHNlCi0gICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRDb2RlUHRy
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTEludDo6aGFuZGxlVW5jYXVn
aHRFeGNlcHRpb24odm0pLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogCiAgICAgQVNTRVJU
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxGcmFtZSkgPCBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90Pih2bS50b3BFbnRyeUZyYW1lKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggZDhlNWRhMTJhMzBjYzYyOTlkMTBiMzExZjNlZGM4MDVkNGZjNTQ4Zi4uNjY2
M2VlNmIxZDZiZGI4M2UyMTFmYzAxNmE0Njk1Mjg1YmE1ZjhmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTg5LDE5ICs4OSwxOSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkc3QsCiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpJVDo6Q2Fs
bCBKSVQ6OmVtaXROYWtlZENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQorQUxXQVlTX0lO
TElORSBKSVQ6OkNhbGwgSklUOjplbWl0TmFrZWROZWFyQ2FsbChDb2RlUHRyPE5vUHRyVGFnPiB0
YXJnZXQpCiB7CiAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleCk7IC8vIFRoaXMgbWV0aG9kIHNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgaG90L2NvbGQgcGF0aCBnZW5lcmF0aW9uLCBzbyB0
aGF0IG1fYnl0ZWNvZGVJbmRleCBpcyBzZXQuCiAgICAgQ2FsbCBuYWtlZENhbGwgPSBuZWFyQ2Fs
bCgpOwotICAgIG1fY2FsbHMuYXBwZW5kKENhbGxSZWNvcmQobmFrZWRDYWxsLCBtX2J5dGVjb2Rl
SW5kZXgsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0LnJldGFnZ2VkPE9wZXJh
dGlvblB0clRhZz4oKSkpKTsKKyAgICBtX25lYXJDYWxscy5hcHBlbmQoTmVhckNhbGxSZWNvcmQo
bmFrZWRDYWxsLCBtX2J5dGVjb2RlSW5kZXgsIEZ1bmN0aW9uUHRyPEpTSW50ZXJuYWxQdHJUYWc+
KHRhcmdldC5yZXRhZ2dlZDxKU0ludGVybmFsUHRyVGFnPigpKSkpOwogICAgIHJldHVybiBuYWtl
ZENhbGw7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpDYWxsIEpJVDo6ZW1pdE5ha2VkVGFpbENh
bGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQorQUxXQVlTX0lOTElORSBKSVQ6OkNhbGwgSklU
OjplbWl0TmFrZWROZWFyVGFpbENhbGwoQ29kZVB0cjxOb1B0clRhZz4gdGFyZ2V0KQogewogICAg
IEFTU0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBj
YWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2Rl
SW5kZXggaXMgc2V0LgogICAgIENhbGwgbmFrZWRDYWxsID0gbmVhclRhaWxDYWxsKCk7Ci0gICAg
bV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChuYWtlZENhbGwsIG1fYnl0ZWNvZGVJbmRleCwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFn
PigpKSkpOworICAgIG1fbmVhckNhbGxzLmFwcGVuZChOZWFyQ2FsbFJlY29yZChuYWtlZENhbGws
IG1fYnl0ZWNvZGVJbmRleCwgRnVuY3Rpb25QdHI8SlNJbnRlcm5hbFB0clRhZz4odGFyZ2V0LnJl
dGFnZ2VkPEpTSW50ZXJuYWxQdHJUYWc+KCkpKSk7CiAgICAgcmV0dXJuIG5ha2VkQ2FsbDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApp
bmRleCA2ZTY4ZWI2ZWIwNTNmOTk0NTU5MmJjZmJlODYzY2U3ZDI2Mzc4NWM4Li4xZjVlODNmYWY2
MjQyNjBmZTlmZTI1N2VmNzNlMzcyZjk3NDViMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTQ5MSw4ICsxNDkxLDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
QnlWYWxJbmZvKiBieVZhbEluZm8KICAgICBwYXRjaEJ1ZmZlci5saW5rKHNsb3dDYXNlcywgYnlW
YWxJbmZvLT5zbG93UGF0aFRhcmdldCk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhkb25lLCBieVZh
bEluZm8tPmRvbmVUYXJnZXQpOwogICAgIGlmIChuZWVkc0xpbmtGb3JXcml0ZUJhcnJpZXIpIHsK
LSAgICAgICAgQVNTRVJUKHJlbW92ZUNvZGVQdHJUYWcobV9jYWxscy5sYXN0KCkuY2FsbGVlLmV4
ZWN1dGFibGVBZGRyZXNzKCkpID09IHJlbW92ZUNvZGVQdHJUYWcob3BlcmF0aW9uV3JpdGVCYXJy
aWVyU2xvd1BhdGgpKTsKLSAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2NhbGxzLmxhc3QoKS5m
cm9tLCBtX2NhbGxzLmxhc3QoKS5jYWxsZWUpOworICAgICAgICBBU1NFUlQocmVtb3ZlQ29kZVB0
clRhZyhtX2ZhckNhbGxzLmxhc3QoKS5jYWxsZWUuZXhlY3V0YWJsZUFkZHJlc3MoKSkgPT0gcmVt
b3ZlQ29kZVB0clRhZyhvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCkpOworICAgICAgICBw
YXRjaEJ1ZmZlci5saW5rKG1fZmFyQ2FsbHMubGFzdCgpLmZyb20sIG1fZmFyQ2FsbHMubGFzdCgp
LmNhbGxlZSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNEaXJlY3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CkBAIC0xNTMxLDcgKzE1
MzEsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVk
SWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkEKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hl
Y2tzLmVtcHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3Ms
IGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFuZGxlcik7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNh
bGxTaXRlIDogbV9jYWxscykgeworICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBtX25l
YXJDYWxscykgeworICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQorICAgICAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOworICAgIH0KKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9mYXJDYWxscykgewogICAgICAgICBpZiAo
Y2FsbFNpdGUuY2FsbGVlKQogICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5m
cm9tLCBjYWxsU2l0ZS5jYWxsZWUpOwogICAgIH0KQEAgLTE1NjUsNyArMTU2OSwxMSBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFs
SW5mbywgUmV0dXJuQWRkcmVzcwogICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkK
ICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgYnlWYWxJbmZvLT5l
eGNlcHRpb25IYW5kbGVyKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBtX2Nh
bGxzKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBjYWxsU2l0ZSA6IG1fbmVhckNhbGxzKSB7Cisg
ICAgICAgIGlmIChjYWxsU2l0ZS5jYWxsZWUpCisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KGNhbGxTaXRlLmZyb20sIGNhbGxTaXRlLmNhbGxlZSk7CisgICAgfQorICAgIGZvciAoY29uc3Qg
YXV0byYgY2FsbFNpdGUgOiBtX2ZhckNhbGxzKSB7CiAgICAgICAgIGlmIChjYWxsU2l0ZS5jYWxs
ZWUpCiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGxTaXRlLmZyb20sIGNhbGxTaXRl
LmNhbGxlZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
bG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmgK
aW5kZXggOGVjMWE0ZTYyMzIwMzY3MmI1NjZkZmU0M2YzMDQwNDlhMDM3ZjUzZS4uNmU3ZjgxY2I0
Y2ZiYjg5Y2E0ODc4OWNmNWUzNWI4MDQxZjI4OTZkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TbG93UGF0aENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1Nsb3dQYXRoQ2FsbC5oCkBAIC01OCw4ICs1OCw3IEBAIGNsYXNzIEpJVFNsb3dQYXRoQ2Fs
bCB7CiAgICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJn
dW1lbnRHUFIwKTsKICAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMp
LCBKSVQ6OmFyZ3VtZW50R1BSMSk7CiAjZW5kaWYKLSAgICAgICAgSklUOjpDYWxsIGNhbGwgPSBt
X2ppdC0+Y2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgICAgICBtX2ppdC0+bV9jYWxscy5hcHBl
bmQoQ2FsbFJlY29yZChjYWxsLCBtX2ppdC0+bV9ieXRlY29kZUluZGV4LCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KG1fc2xvd1BhdGhGdW5jdGlvbikpKTsKKyAgICAgICAgSklUOjpDYWxs
IGNhbGwgPSBtX2ppdC0+YXBwZW5kQ2FsbChtX3Nsb3dQYXRoRnVuY3Rpb24pOwogCiAjaWYgQ1BV
KFg4Nl82NCkgJiYgT1MoV0lORE9XUykKICAgICAgICAgbV9qaXQtPnBvcChKSVQ6OnJlZ1QwKTsg
Ly8gdlBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNGZmZjg0
ZGJhOGY3ZDhjYjg5MzYxODhhMWMzYjc0MDQ0MzFhN2NhNi4uY2I0NDVmNWU5MmNlNTI2NGUyNzM2
NTljZDA4NzA1NDYzZTNkYzA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuaApAQCAtMTYxLDExICsxNjEsMjIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8dGFnPiBnZXRDb2RlUmVmKE9wY29kZUlEIG9wY29kZUlEKQogICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8dGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGdldENvZGVQ
dHI8dGFnPihvcGNvZGVJRCkpOwogfQogCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZXRXaWRlMTZDb2RlUmVmKE9wY29kZUlE
IG9wY29kZUlEKQoreworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJRCkpOwor
fQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8dGFnPiBnZXRXaWRlMzJDb2RlUmVmKE9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KGdldFdpZGUzMkNvZGVQdHI8dGFnPihvcGNvZGVJRCkpOworfQorCiAjaWYgRU5BQkxFKEpJVCkK
IHRlbXBsYXRlPFB0clRhZyB0YWc+CiBBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRDb2RlRnVu
Y3Rpb25QdHIoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Ci0gICAgQVNTRVJUKG9wY29kZUlEID49IE5V
TUJFUl9PRl9CWVRFQ09ERV9JRFMpOwogI2lmIENPTVBJTEVSKE1TVkMpCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4ob3Bjb2RlSUQpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpOwogI2Vsc2UKQEAgLTE3Myw2ICsxODQsMjYgQEAgQUxXQVlTX0lOTElO
RSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKE9wY29kZUlEIG9wY29kZUlEKQogI2VuZGlm
CiB9CiAKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRX
aWRlMTZDb2RlRnVuY3Rpb25QdHIoT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIo
TVNWQykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNv
ZGVQdHI8dGFnPihvcGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTE2Q29kZVB0cjx0YWc+KG9w
Y29kZUlEKS50ZW1wbGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBMTEludENvZGUgZ2V0V2lkZTMyQ29kZUZ1
bmN0aW9uUHRyKE9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMzJDb2RlUHRyPHRhZz4o
b3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihvcGNvZGVJRCkudGVt
cGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwogI2Vsc2UKIEFMV0FZU19J
TkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNWM2MDkxYzIzYjg4YmI0
MmU0YmI2YzUyYzVlY2M2YTE4ZjZiNGVhMS4uNmQ2ZDI0OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFh
M2YyYjlmMTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludC5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRy
eXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICAgICAgc3RhdGljIERpcmVjdEpJ
VENvZGUqIGppdENvZGU7CiAgICAgICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBjYWxsUmVmID0gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpLnJldGFnZ2Vk
PEpTRW50cnlQdHJUYWc+KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBjYWxsQXJpdHlDaGVja1Jl
ZiA9IGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuaygpLnJldGFnZ2VkQ29kZTxKU0VudHJ5
UHRyVGFnPigpOwotICAgICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShj
YWxsUmVmLCBjYWxsQXJpdHlDaGVja1JlZiwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklU
Q29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisgICAgICAgICAgICAgICAgYXV0byBjYWxs
UmVmID0gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpOworICAgICAgICAgICAgICAgIGF1dG8g
Y2FsbEFyaXR5Q2hlY2tSZWYgPSBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmsoKTsKKyAg
ICAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoY2FsbFJlZiwgY2FsbEFy
aXR5Q2hlY2tSZWYuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBj
b2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwpAQCAtNTgsOSArNTgsOSBA
QCBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgICAgIHN0YXRpYyBEaXJlY3RKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsKLSAgICAgICAgICAgIGF1dG8gY29uc3RydWN0UmVmID0gZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RFbnRyeVRodW5rKCkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKLSAgICAgICAgICAgIGF1
dG8gY29uc3RydWN0QXJpdHlDaGVja1JlZiA9IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rKCkucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCk7Ci0gICAgICAgICAgICBqaXRD
b2RlID0gbmV3IERpcmVjdEpJVENvZGUoY29uc3RydWN0UmVmLCBjb25zdHJ1Y3RBcml0eUNoZWNr
UmVmLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6
U2hhcmVkKTsKKyAgICAgICAgICAgIGF1dG8gY29uc3RydWN0UmVmID0gZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RFbnRyeVRodW5rKCk7CisgICAgICAgICAgICBhdXRvIGNvbnN0cnVjdEFyaXR5Q2hlY2tS
ZWYgPSBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuaygpOworICAgICAgICAgICAg
aml0Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGNvbnN0cnVjdFJlZiwgY29uc3RydWN0QXJpdHlD
aGVja1JlZi5jb2RlKCksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJl
QXR0cmlidXRlOjpTaGFyZWQpOwogICAgICAgICB9KTsKIAogICAgICAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3RhdGlj
IE5hdGl2ZUpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGNvZGVSZWYgPSBldmFsRW50
cnlUaHVuaygpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29kZVJlZiA9IGV2YWxFbnRyeVRodW5rKCk7
CiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoY29kZVJlZiwgSklUVHlw
ZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hh
cmVBdHRyaWJ1dGU6OlNoYXJlZCk7CiAgICAgICAgIH0pOwogICAgICAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2
b2lkIHNldFByb2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICBz
dGF0aWMgTmF0aXZlSklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29kZVJlZiA9IHBy
b2dyYW1FbnRyeVRodW5rKCkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBjb2RlUmVmID0gcHJvZ3JhbUVu
dHJ5VGh1bmsoKTsKICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShjb2Rl
UmVmLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBK
SVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKICAgICAgICAgfSk7CiAgICAgICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7CkBAIC0xMzgsNyArMTM4LDcg
QEAgc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiAgICAgICAgIHN0YXRpYyBOYXRpdmVKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBjb2RlUmVmID0gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKS5yZXRhZ2dlZDxKU0VudHJ5
UHRyVGFnPigpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+IGNvZGVSZWYgPSBtb2R1bGVQcm9ncmFtRW50cnlUaHVuaygpOwogICAgICAgICAgICAgaml0
Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGNvZGVSZWYsIEpJVFR5cGU6OkludGVycHJldGVyVGh1
bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFy
ZWQpOwogICAgICAgICB9KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYo
KmppdENvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5jcHAKaW5kZXggMmExMWM1NjVlMjBjMWRhOGZmN2IyMGRhODYxZmRhMTc3YTNmNTJjZC4u
NzFkZjM3M2E5NWZhYzM1YTkyZmU4ZjI4OTMzMTZmY2ZjY2I2ZjIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coVk0mIHZtKQogICAgIHJldHVybiBMTEludDo6
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7CiB9CiAKLXZvaWQqIGNhbGxUb1Rocm93KFZNJiB2bSkK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJv
dyhWTSYgdm0pCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNpZiBMTElOVF9UUkFDSU5HCkBA
IC01Nyw3ICs1NywzOCBAQCB2b2lkKiBjYWxsVG9UaHJvdyhWTSYgdm0pCiAgICAgICAgIGRhdGFM
b2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCBKU1ZhbHVlKHNjb3BlLmV4Y2VwdGlvbigpKSwgIiAo
Y2FsbFRvVGhyb3cpLlxuIik7CiAgICAgfQogI2VuZGlmCi0gICAgcmV0dXJuIExMSW50OjpnZXRD
b2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAo
T3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgIHJldHVybiBMTEludDo6Y2FsbFRvVGhyb3dUaHVu
aygpOworI2VuZGlmCisgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+KGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlVW5jYXVnaHRF
eGNlcHRpb24oVk0mKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VCgpKQorICAgICAgICByZXR1cm4gaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25UaHVuaygpOworI2Vu
ZGlmCisgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
KGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24pOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2F0Y2hlcihPcGNvZGVTaXplIHNpemUpCit7
CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgIHJl
dHVybiBjYXRjaGVyVGh1bmsoc2l6ZSk7CisjZW5kaWYKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAg
ICBjYXNlIE9wY29kZVNpemU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2Rl
UmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KG9wX2NhdGNoKTsKKyAgICBjYXNlIE9wY29kZVNp
emU6OldpZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWc+KG9wX2NhdGNoKTsKKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUz
MjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+KG9wX2NhdGNoKTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4ge307CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCmluZGV4IGNh
OGNmNTk2MjBlMTEzYmE0MzlmNTYwODMxYWZmZTg0YjI4ZWMzZGUuLjExYTRkNjdjOTIxNTk2OTA4
NGMwNzE4YTA2MDhkNjRkOWQ3ODkzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmgKQEAgLTQxLDYgKzQxLDkgQEAgbmFtZXNwYWNlIExMSW50IHsK
IEluc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KFZNJik7CiAKIC8vIFVzZSB0aGlzIHdoZW4geW91
J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KLXZvaWQqIGNhbGxUb1Rocm93KFZNJik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRvVGhyb3co
Vk0mKTsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhh
bmRsZVVuY2F1Z2h0RXhjZXB0aW9uKFZNJik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4gY2F0Y2hlcihPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCAzMWU1NDIxYmVmYTAxMDVjZmY4OTlkYzc5MTYxM2ExNWM4ODgyMTk0Li40
ODA4NjU5YjcyN2Q2NDk3ZTBjNjg0NWQ0ZjVhMTQzZTM4ODVjZTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE2MCwxNCArMTYwLDE0
IEBAIGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKSB7IHJldHVyCiAjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZ2xv
YmFsT2JqZWN0LCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIF9fY3RfZ2xvYmFsT2JqZWN0ID0gKGdsb2JhbE9iamVjdCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdGhyb3dFeGNlcHRp
b24oX19jdF9nbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAg
ICAgXAotICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKG51bGxwdHIsIGNhbGxUb1Rocm93KHZt
KSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0NBTExfRU5EX0lNUEwobnVsbHB0ciwgY2FsbFRvVGhyb3codm0pLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElP
TihnbG9iYWxPYmplY3QpIGRvIHsgICAgICAgICAgICAgICBcCiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBfX2NjZV9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGRvRXhjZXB0aW9uRnV6emluZ0lmRW5hYmxlZChf
X2NjZV9nbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJMTEludFNsb3dQYXRocy9jYWxsIiwgbnVs
bHB0cik7IFwKICAgICAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIExMSU5UX0NBTExfRU5EX0lN
UEwobnVsbHB0ciwgY2FsbFRvVGhyb3codm0pLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsgXAor
ICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChudWxscHRyLCBjYWxsVG9UaHJvdyh2bSku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcpOyBcCiAg
ICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFsT2Jq
ZWN0LCBjYWxsZWVGcmFtZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgZG8geyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAppbmRleCBjNTkzYzA3Mjhj
NDE2NmViMzRlY2Q1ZWJjMWQ0YTZhZDJjY2FjZTQ2Li5kNTU4ZmQ0NjAyYjE5NDgwMjEzZjNhZGJl
YWYyNGU4OWY5OGY4NjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5jcHAKQEAgLTQ3LDEyICs0NywxMSBAQCBuYW1lc3BhY2UgTExJbnQgewogLy8gZml0cyBv
biAzMi1iaXRzLCBhbmQgdGhhdCdzIG5vdCB0aGUgY2FzZSBvZiBnZXRDb2RlUmVmKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKQogLy8gYW5kIG90aGVycyBMTEludEVudHJ5cG9pbnRz
LgogCi1zdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5k
KQordGVtcGxhdGU8UHRyVGFnIHRhZz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFn
PiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25zdCBjaGFyICp0
aHVua0tpbmQpCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0OwogCi0gICAgLy8gRklYTUU6IHRo
ZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qg
c3VyZSBJIGNhcmUuCi0gICAgTExJbnRDb2RlIHRhcmdldCA9IExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8SlNFbnRyeVB0clRhZz4ob3Bjb2RlSUQpOwogICAgIGFzc2VydElzVGFnZ2VkV2l0aCh0
YXJnZXQsIEpTRW50cnlQdHJUYWcpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtNjQs
NzUgKzYzLDgxIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKE9wY29kZUlEIG9wCiAgICAgaml0LmZhckp1bXAoc2Ny
YXRjaCwgSlNFbnRyeVB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJMTEludCAlcyBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCk7Cisg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHByb2xv
Z3VlIHRodW5rIiwgdGh1bmtLaW5kKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rKCkKK3RlbXBsYXRlPFB0clRhZyB0
YWc+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKLSAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4+IGNvZGVSZWY7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPHRhZz4o
TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihvcGNvZGVJRCksIHRodW5r
S2luZCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlv
bkZvckNhbGxFbnRyeVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
ewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAg
ICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxs
IikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVuaygpCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RF
bnRyeVRodW5rKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgImZ1bmN0aW9u
IGZvciBjb25zdHJ1Y3QiKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IikpOwogICAgIH0pOwogICAgIHJldHVy
biBjb2RlUmVmOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZ1
bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuaygpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKCkKIHsKLSAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4+IGNvZGVSZWY7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNoZWNr
IikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxK
U0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgImZ1bmN0
aW9uIGZvciBjYWxsIHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNv
ZGVSZWY7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmsoKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpT
RW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKCkKIHsKLSAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8obGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3Qg
d2l0aCBhcml0eSBjaGVjayIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIp
KTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBldmFsRW50cnlUaHVuaygpCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZXZhbEVudHJ5VGh1bmsoKQogewotICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPj4gY29kZVJl
ZjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZh
bCIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4+IGNvZGVSZWY7CisgICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0
clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3Qo
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0i
KSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpT
RW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9ncmFtIikpOwogICAgIH0p
OwogICAgIHJldHVybiBjb2RlUmVmOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCkKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50cnlUaHVuaygpCiB7Ci0gICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
PiBjb2RlUmVmOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGxsaW50X21vZHVsZV9wcm9n
cmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X21vZHVsZV9w
cm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CiAgICAgfSk7CiAgICAgcmV0dXJu
IGNvZGVSZWY7CiB9CkBAIC0xNDQsOSArMTQ5LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewogICAg
ICAgICBpZiAoV2FzbTo6Q29udGV4dDo6dXNlRmFzdFRMUygpKQotICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8od2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3Qo
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJv
bG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8od2FzbV9mdW5jdGlvbl9w
cm9sb2d1ZV9ub190bHMsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpJVFRodW5rUHRyVGFnPih3YXNt
X2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAgIH0p
OwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTg1LDYgKzE5MCw1OCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVRodW5rKCkK
ICAgICByZXR1cm4gY29kZVJlZjsKIH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlv
bkhhbmRsZXJQdHJUYWc+IGNhbGxUb1Rocm93VGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGxsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmUsICJMTEludDo6Y2FsbFRvVGhyb3cgdGh1bmsiKSk7CisgICAg
fSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvblRodW5rKCkKK3sKKyAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRp
b25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFn
PihsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uLCAiaGFuZGxlX3VuY2F1Z2h0X2V4Y2Vw
dGlvbiIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGNhdGNoZXJUaHVuayhPcGNvZGVTaXpl
IHNpemUpCit7CisgICAgc3dpdGNoIChzaXplKSB7CisgICAgY2FzZSBPcGNvZGVTaXplOjpOYXJy
b3c6IHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxKU0Vu
dHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaCIpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybiBjb2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogewor
ICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Cisg
ICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPEpTRW50
cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMTYiKSk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMzI6IHsK
KyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewor
ICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhj
ZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxKU0Vu
dHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaDMyIikpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIExMSW50CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaAppbmRleCAzZTdiY2U1YWMwM2M1N2VhOWZmODUyN2M4YTI3NTIxNGE5ODQ1YjZmLi45
NTQ0NWZkMWY2NDBjYzAxNzRjMzUzMjVhNGVhYWRiYmI1ZGEyM2M0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtNTAsMTUgKzUwLDE5IEBAIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB2bUVudHJ5VG9XYXNtKHZvaWQqIGNvZGUsIFZNKiB2bSwgUHJvdG9DYWxs
RnJhbWUqIGZyYW1lKQogCiBuYW1lc3BhY2UgTExJbnQgewogCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmsoKTsKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRo
dW5rKCk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZ1bmN0aW9uRm9y
Q2FsbEFyaXR5Q2hlY2tUaHVuaygpOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuaygpOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBldmFsRW50cnlUaHVuaygpOwotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwcm9ncmFtRW50cnlUaHVuaygpOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50cnlUaHVuaygpOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZv
ckNvbnN0cnVjdEVudHJ5VGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuaygp
OworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCk7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmso
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50
cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVUaHVuaygpOwogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9u
SGFuZGxlclB0clRhZz4gY2FsbFRvVGhyb3dUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uVGh1bmsoKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYXRjaGVyVGh1
bmsoT3Bjb2RlU2l6ZSk7CisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmsoKTsKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDAxYTFhOWE5MTQx
Yzg5ZjAyNmEwMTkyZmNiOTY1OWJmYjQ2NjQxMGUuLjYyNmE0NjgxN2IxNTNiM2Q1NDY0N2MzZDgy
YzFiNDc0OWZlNjI2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0zOTAsNyArMzkwLDcgQEAgbWFj
cm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVt
cDIpCiAgICAgZW5kCiBlbmQKIAotb3AoaGFuZGxlVW5jYXVnaHRFeGNlcHRpb24sIG1hY3JvKCkK
K29wKGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24sIG1hY3JvKCkKICAgICBsb2FkcCBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQzCiAgICAgY29udmVydENhbGxlZVRvVk0odDMp
CiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHQzLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYWEyM2VjNjNhMzA5MzkwMzAzNTBmNjA4YjBiNmZhNDI5
ODczZDU3Yy4uZDY1MzJmYjlkYThmZjJjNDk3OGY3NTg4NmY2OGViNTY4MTZhYzIxYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KQEAgLTMzMSw3ICszMzEsNyBAQCBtYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRy
eSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKICAgICBlbmQKIGVuZAogCi1vcChoYW5k
bGVVbmNhdWdodEV4Y2VwdGlvbiwgbWFjcm8gKCkKK29wKGxsaW50X2hhbmRsZV91bmNhdWdodF9l
eGNlcHRpb24sIG1hY3JvICgpCiAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQzCiAgICAgY29udmVy
dENhbGxlZVRvVk0odDMpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNh
bGxlZVNhdmVzQnVmZmVyKHQzLCB0MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKaW5kZXggOGE4OWJlM2YwMmJjNjMxN2YyMGVjMDE3
Yzk3ZTYyMTIwYzQ0ODlhNC4uMjk1YTI2MTNmNDc2MjUwYWMwOGMyMGM2YmVjZDlmY2NmNjk2NGNm
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAKQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nl
c3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgICAgICAg
ICAgICAgIC8vIFRoaXMgbWlnaHQgYWxzbyBiZSBmYWxzZSBmb3IgdmFyaW91cyByZWFzb25zIChr
bm93biBhbmQgdW5rbm93biksIGV2ZW4gdGhvdWdoCiAgICAgICAgICAgICAgICAgLy8gaXQncyBz
dXBlciB1bmxpa2VseS4gT25lIHJlYXNvbiB0aGF0IHRoaXMgY2FuIGJlIGZhbHNlIGlzIHdoZW4g
d2UgdGhyb3cgZnJvbSBhIERGRyBmcmFtZSwKICAgICAgICAgICAgICAgICAvLyBhbmQgd2UgZW5k
IHVwIGhhdmluZyB0byB1bndpbmQgcGFzdCBhbiBFbnRyeUZyYW1lLCB3ZSB3aWxsIGVuZCB1cCBl
eGVjdXRpbmcKLSAgICAgICAgICAgICAgICAvLyBpbnNpZGUgdGhlIExMSW50J3MgaGFuZGxlVW5j
YXVnaHRFeGNlcHRpb24uIFNvIHdlIGp1c3QgcHJvdGVjdCBhZ2FpbnN0IHRoaXMKKyAgICAgICAg
ICAgICAgICAvLyBpbnNpZGUgdGhlIExMSW50J3MgbGxpbnRfaGFuZGxlX3VjYXVnaHRfZXhjZXB0
aW9uLiBTbyB3ZSBqdXN0IHByb3RlY3QgYWdhaW5zdCB0aGlzCiAgICAgICAgICAgICAgICAgLy8g
YnkgaWdub3JpbmcgaXQuCiAgICAgICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gQnl0ZWNvZGVJbmRleCgwKTsKICAgICAgICAgICAgICAgICBpZiAodG9wQ29kZUJsb2Nr
LT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCB0b3BDb2RlQmxvY2st
PmppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCmluZGV4IDcwM2JiZDFmMzRmY2IxNzJmNDRj
MTVjNmIyZTFjN2VhODhkNzg1MmUuLjE4MDEzNGNjYmFkZDIyOGNiOWUwNTJmYTVkNTQzZjA0ZWU5
OTMyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5j
cHAKQEAgLTc2NCw3ICs3NjQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
V2FzbVRvSlNFeGNlcHRpb24sIHZvaWQqLCAoQ2FsbEZyYW1lKiBjYWxsRnJhbQogICAgIEFTU0VS
VCghIXZtLmNhbGxGcmFtZUZvckNhdGNoKTsKICAgICBBU1NFUlQoISF2bS50YXJnZXRNYWNoaW5l
UENGb3JUaHJvdyk7CiAgICAgLy8gRklYTUU6IFdlIGNvdWxkIG1ha2UgdGhpcyBiZXR0ZXI6Ci0g
ICAgLy8gVGhpcyBpcyBhIHRvdGFsIGhhY2ssIGJ1dCB0aGUgbGxpbnQgKGJvdGggb3BfY2F0Y2gg
YW5kIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uKQorICAgIC8vIFRoaXMgaXMgYSB0b3RhbCBoYWNr
LCBidXQgdGhlIGxsaW50IChib3RoIG9wX2NhdGNoIGFuZCBsbGludF9oYW5kbGVfdW5jYXVnaHRf
ZXhjZXB0aW9uKQogICAgIC8vIHJlcXVpcmUgYSBjZWxsIGluIHRoZSBjYWxsZWUgZmllbGQgdG8g
bG9hZCB0aGUgVk0uIChUaGUgYmFzZWxpbmUgSklUIGRvZXMgbm90IHJlcXVpcmUKICAgICAvLyB0
aGlzIHNpbmNlIGl0IGlzIGNvbXBpbGVkIHdpdGggYSBjb25zdGFudCBWTSBwb2ludGVyLikgV2Ug
Y291bGQgbWFrZSB0aGUgY2FsbGluZyBjb252ZW50aW9uCiAgICAgLy8gZm9yIGV4Y2VwdGlvbnMg
Zmlyc3QgbG9hZCBjYWxsRnJhbWVGb3JDYXRjaCBpbmZvIGNhbGwgZnJhbWUgcmVnaXN0ZXIgYmVm
b3JlIGp1bXBpbmcK
</data>
<flag name="review"
          id="426606"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>