<?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>129589</bug_id>
          
          <creation_ts>2014-03-02 17:12:26 -0800</creation_ts>
          <short_desc>Repatch should plant calls to getters directly rather than through a C helper</short_desc>
          <delta_ts>2014-03-27 17:38:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>129778</dependson>
    
    <dependson>130644</dependson>
    
    <dependson>130707</dependson>
          <blocked>129588</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986208</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-02 17:12:26 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994088</commentid>
    <comment_count>1</comment_count>
      <attachid>227722</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-24 23:02:40 -0700</bug_when>
    <thetext>Created attachment 227722
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994095</commentid>
    <comment_count>2</comment_count>
      <attachid>227724</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-24 23:18:20 -0700</bug_when>
    <thetext>Created attachment 227724
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994263</commentid>
    <comment_count>3</comment_count>
      <attachid>227776</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-25 11:38:01 -0700</bug_when>
    <thetext>Created attachment 227776
it compiles and instacrashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994273</commentid>
    <comment_count>4</comment_count>
      <attachid>227779</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-25 12:03:54 -0700</bug_when>
    <thetext>Created attachment 227779
it compiles and doesn&apos;t crash

It looks like it&apos;s passing tests, but I still have more testing to do - like making sure that it performs and such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994282</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-25 12:42:42 -0700</bug_when>
    <thetext>Attachment 227779 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/Repatch.cpp:370:  Declaration has space between type name and * in alignedNumberOfNeededRegs * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/AccessorCallJITStubRoutine.cpp:37:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/AccessorCallJITStubRoutine.cpp:38:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994291</commentid>
    <comment_count>6</comment_count>
      <attachid>227779</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-25 13:02:55 -0700</bug_when>
    <thetext>Comment on attachment 227779
it compiles and doesn&apos;t crash

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

r=me after running 32-bit tests :-)

&gt; Source/JavaScriptCore/jit/Repatch.cpp:343
&gt; +            // Therefore, we temporary grow the stack for the purpose of the call and then

temporarily

&gt; Source/JavaScriptCore/jit/Repatch.cpp:344
&gt; +            // degrow it after.

s/degrow/shrink</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994408</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-25 15:38:01 -0700</bug_when>
    <thetext>Benchmark report for JSRegress on oldmac (MacPro4,1).

VMs tested:
&quot;r166074&quot; at /Volumes/Data/pizlo/secondary/OpenSource/r166074/WebKitBuild/Release/jsc
&quot;ToT&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r166244)
&quot;Getters&quot; at /Volumes/Data/fromMiniMe/primary/OpenSource/WebKitBuild/Release/jsc (r166244)

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                               r166074                     ToT                     Getters                Getters v. r166074    

chain-custom-getter       158.2083+-0.1793     ?    160.7440+-19.8519         155.0351+-0.6956        ^ definitely 1.0205x faster
chain-getter-access       279.1823+-8.1286     ?    280.4161+-8.0387     ^     33.7815+-0.4777        ^ definitely 8.2644x faster
getter                    163.8446+-2.9393     ?    168.8126+-5.2703     ^     18.7115+-0.4216        ^ definitely 8.7564x faster
proto-custom-getter       164.6567+-19.4528         161.4323+-0.1810     ?    167.7127+-19.7281       ? might be 1.0186x slower
proto-getter-access       278.1840+-10.8798         275.6373+-8.6379     ^     33.7239+-0.3456        ^ definitely 8.2489x faster
simple-custom-getter      524.4769+-0.5701     !    535.9200+-0.2769     ?    566.0511+-73.2732       ? might be 1.0793x slower
simple-getter-access      461.0245+-2.0153          446.8181+-21.3558    ^     52.0341+-0.4183        ^ definitely 8.8600x faster

&lt;arithmetic&gt;              289.9396+-1.8063     ?    289.9686+-4.5887     ^    146.7214+-9.6163        ^ definitely 1.9761x faster
&lt;geometric&gt; *             259.8404+-3.1578     ?    260.2540+-4.6407     ^     77.1420+-1.2083        ^ definitely 3.3683x faster
&lt;harmonic&gt;                235.1094+-4.3063     ?    235.9726+-5.2733     ^     47.9006+-0.2729        ^ definitely 4.9083x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994412</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-25 15:42:22 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/166263, which fails to follow any StickyMH&apos;s feedback.  I am following his feedback now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994430</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-25 16:29:39 -0700</bug_when>
    <thetext>Landed for realzies in http://trac.webkit.org/changeset/166266</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995173</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-27 17:28:50 -0700</bug_when>
    <thetext>Caused jscore test failures?
http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK1%20%28Tests%29/builds/13373/steps/jscore-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995174</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-27 17:34:47 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Caused jscore test failures?
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK1%20%28Tests%29/builds/13373/steps/jscore-test/logs/stdio

Timeouts.  I saw a one-off timeout like that but never reproduced it.  I will skip the test and investigate.

You can skip a JSC test by putting &quot;//@ skip&quot; at the top of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995177</commentid>
    <comment_count>12</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-03-27 17:38:25 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Caused jscore test failures?
&gt; &gt; http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK1%20%28Tests%29/builds/13373/steps/jscore-test/logs/stdio
&gt; 
&gt; Timeouts.  I saw a one-off timeout like that but never reproduced it.  I will skip the test and investigate.
&gt; 
&gt; You can skip a JSC test by putting &quot;//@ skip&quot; at the top of it.

The test times out fairly consistently under Debug DRT on my MBP</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227722</attachid>
            <date>2014-03-24 23:02:40 -0700</date>
            <delta_ts>2014-03-24 23:18:20 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>13239</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0dldEJ5SWRM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljR2V0QnlJZExpc3QuaAkocmV2aXNpb24gMTY2MjE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N0dWJSb3V0aW5lLmdl
dCgpOwogICAgIH0KICAgICAKLSAgICBib29sIGRvZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBHZXR0ZXI7IH0KKyAgICBib29sIGRvZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBHZXR0ZXIgfHwgdHlwZSgpID09IEN1c3RvbUdldHRlcjsgfQogICAgIAogICAgIGJv
b2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImKSBjb25zdDsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oIgorCisjaWYgRU5B
QkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5l
OjpBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZSgKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYmIGNvZGUsIFZNJiB2bSwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rSW5mbz4gaW5mbykK
KyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkKKyAgICAsIG1fY2FsbExpbmtJ
bmZvKGluZm8pCit7Cit9CisKK0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lOjp+QWNjZXNzb3JD
YWxsSklUU3R1YlJvdXRpbmUoKQoreworfQorCitib29sIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKK3sKKyAgICBtX2Nh
bGxMaW5rSW5mby0+dmlzaXRXZWFrKHJlcGF0Y2hCdWZmZXIpOworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0
dWJSb3V0aW5lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fj
Y2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lX2gKKyNkZWZpbmUgQWNjZXNzb3JDYWxsSklUU3R1
YlJvdXRpbmVfaAorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZSAiR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBKSVQgc3R1YiByb3V0aW5lIGZvciB1
c2UgYnkgSmF2YVNjcmlwdCBhY2Nlc3NvcnMuIFRoZXNlIHdpbGwgYmUgbWFraW5nIGEgSlMKKy8v
IGNhbGwgdGhhdCByZXF1aXJlcyBpbmxpbmUgY2FjaGluZy4gCisKK2NsYXNzIEFjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CitwdWJsaWM6
CisgICAgQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUoCisgICAgICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiYsIFZNJiwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rSW5mbz4pOworICAg
IAorICAgIHZpcnR1YWwgfkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lKCk7CisgICAgCisgICAg
dmlydHVhbCBib29sIHZpc2l0V2VhaygpIG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mbzsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEFjY2Vz
c29yQ2FsbEpJVFN0dWJSb3V0aW5lX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjYyMTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2
NiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YWNrUG9pbnRlckFsaWduZWQubGluayh0aGlzKTsK
ICNlbmRpZgogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQg
c3RvcmVDZWxsKFQgY2VsbCwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBzdG9yZTY0KGNlbGwsIGFkZHJlc3MpOworI2Vsc2UKKyAgICAgICAgc3Rv
cmUzMihjZWxsLCBhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOworICAgICAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgYWRkcmVzcy53aXRoT2Zmc2V0
KFRhZ09mZnNldCkpOworI2VuZGlmCisgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4
NikKICAgICBzdGF0aWMgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjYyMTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTEsOSArMzExLDc5IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlR2V0QnlJZFN0dWIoCiAgICAgRnVu
Y3Rpb25QdHIgb3BlcmF0aW9uRnVuY3Rpb247CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3Vj
Y2VzcywgZmFpbDsKICAgICBpZiAoaXNBY2Nlc3NvcikgeworICAgICAgICAvLyBOZWVkIHRvIG1h
a2Ugc3VyZSB0aGF0IHdoZW5ldmVyIHRoaXMgY2FsbCBpcyBtYWRlIGluIHRoZSBmdXR1cmUsIHdl
IHJlbWVtYmVyIHRoZQorICAgICAgICAvLyBwbGFjZSB0aGF0IHdlIG1hZGUgaXQgZnJvbS4gSXQg
anVzdCBzbyBoYXBwZW5zIHRvIGJlIHRoZSBwbGFjZSB0aGF0IHdlIGFyZSBhdAorICAgICAgICAv
LyByaWdodCBub3chCisgICAgICAgIHN0dWJKaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKGV4ZWMtPmxvY2F0aW9uQXNSYXdCaXRzKCkpLAorICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSkpOworCiAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpIHsK
LSAgICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIs
IGxvYWRlZFZhbHVlR1BSKTsKLSAgICAgICAgICAgIG9wZXJhdGlvbkZ1bmN0aW9uID0gb3BlcmF0
aW9uQ2FsbEdldHRlcjsKKyAgICAgICAgICAgIC8vIENyZWF0ZSBhIEpTIGNhbGwgdXNpbmcgYSBK
UyBjYWxsIGlubGluZSBjYWNoZS4gQXNzdW1lIHRoYXQ6CisgICAgICAgICAgICAvLworICAgICAg
ICAgICAgLy8gLSBTUCBpcyBhbGlnbmVkIGFuZCByZXByZXNlbnRzIHRoZSBleHRlbnQgb2YgdGhl
IGNhbGxpbmcgY29tcGlsZXIncyBzdGFjayB1c2FnZS4KKyAgICAgICAgICAgIC8vCisgICAgICAg
ICAgICAvLyAtIEZQIGlzIHNldCBjb3JyZWN0bHkgKGkuZS4gaXQgcG9pbnRzIHRvIHRoZSBjYWxs
ZXIncyBjYWxsIGZyYW1lIGhlYWRlcikuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
LSBTUCAtIEZQIGlzIGFuIGFsaWduZWQgZGlmZmVyZW5jZS4KKyAgICAgICAgICAgIC8vCisgICAg
ICAgICAgICAvLyAtIEFueSBieXRlIGJldHdlZW4gRlAgKGV4Y2x1c2l2ZSkgYW5kIFNQIChpbmNs
dXNpdmUpIGNvdWxkIGJlIGxpdmUgaW4gdGhlIGNhbGxpbmcKKyAgICAgICAgICAgIC8vICAgY29k
ZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIHRlbXBvcmFy
eSBncm93IHRoZSBzdGFjayBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlIGNhbGwgYW5kIHRoZW4KKyAg
ICAgICAgICAgIC8vIGRlZ3JvdyBpdCBhZnRlci4KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gVGhlcmUgaXMgYSAndGhpcycgYXJndW1lbnQgYnV0IG5vdGhpbmcgZWxzZS4KKyAgICAgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mUGFyYW1ldGVycyA9IDE7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIC8vIEdldCB0aGUgZ2V0dGVyOyBpZiB0aGVyZSBhaW4ndCBvbmUgdGhlbiB0aGUgcmVz
dWx0IGlzIGpzVW5kZWZpbmVkKCkuCisgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIoCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobG9hZGVkVmFsdWVHUFIsIEdldHRl
clNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSksCisgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVH
UFIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmV0dXJuVW5kZWZpbmVkID0g
c3R1YkppdC5icmFuY2hUZXN0UHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mUmVnc0ZvckNhbGwgPQorICAgICAgICAgICAgICAgIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemUgKyBudW1iZXJPZlBhcmFtZXRlcnM7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGFsaWduZWROdW1iZXJPZk5lZWRlZFJlZ3MgPQorICAgICAgICAgICAgICAg
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1i
ZXJPZlJlZ3NGb3JDYWxsKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5zaWduZWQgYWxp
Z25lZE51bWJlck9mTmVlZGVkQnl0ZXMgPQorICAgICAgICAgICAgICAgIGFsaWduZWROdW1iZXJP
Zk5lZWRlZFJlZ3MgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBzdHViSml0LnN1YlB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKAorICAgICAgICAgICAgICAgICAgICBhbGlnbmVkTnVtYmVyT2ZOZWVkZWRSZWdzIC0g
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyBjYWxsZWVGcmFtZSA9IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZ2lzdGVyLCAt
c2l6ZW9mKENhbGxGcmFtZUFuZFBDKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0dWJK
aXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0
ZXJzKSwKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUud2l0aE9mZnNldCgKKyAgICAgICAgICAg
ICAgICAgICAgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikgKyBQYXls
b2FkT2Zmc2V0KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVDZWxs
KGxvYWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rRnVuY3Rpb25DaGVjazsKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gc3R1YkppdC5icmFuY2hQdHJXaXRoUGF0
Y2goCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBsb2FkZWRWYWx1
ZUdQUiwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVjaywKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IHN0dWJKaXQuanVtcCgp
OworICAgICAgICAgICAgcmV0dXJuVW5kZWZpbmVkLmxpbmsoJnN0dWJKaXQpOworICAgICAgICAg
ICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIHN0dWJKaXQubW92ZSgKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKSksIHJlc3VsdEdQUik7CisjZWxzZQorICAgICAgICAgICAgc3R1YkppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwg
cmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOworI2VuZGlmCisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGRvbmUubGluaygmc3R1YkppdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBFbmNvZGVkSlNWYWx1ZSAoKkdldFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKQEAgLTMyMSwzNiArMzkxLDMxIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRl
R2V0QnlJZFN0dWIoCiAjZWxzZQogICAgICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYmFzZUZvckFjY2Vzc0dQUiwgYmFzZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIocHJvcGVydHlOYW1lLmltcGwoKSkpOwogI2VuZGlmCi0gICAgICAgICAgICBvcGVyYXRpb25G
dW5jdGlvbiA9IEZ1bmN0aW9uUHRyKHNsb3QuY3VzdG9tR2V0dGVyKCkpOwotICAgICAgICB9Cisg
ICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAm
dm0tPnRvcENhbGxGcmFtZSk7CiAKLSAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3
aGVuZXZlciB0aGlzIGNhbGwgaXMgbWFkZSBpbiB0aGUgZnV0dXJlLCB3ZSByZW1lbWJlciB0aGUK
LSAgICAgICAgLy8gcGxhY2UgdGhhdCB3ZSBtYWRlIGl0IGZyb20uIEl0IGp1c3Qgc28gaGFwcGVu
cyB0byBiZSB0aGUgcGxhY2UgdGhhdCB3ZSBhcmUgYXQKLSAgICAgICAgLy8gcmlnaHQgbm93IQot
ICAgICAgICBzdHViSml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihleGVj
LT5sb2NhdGlvbkFzUmF3Qml0cygpKSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9y
KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsK
LSAgICAgICAgc3R1YkppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZt
LT50b3BDYWxsRnJhbWUpOworICAgICAgICAgICAgb3BlcmF0aW9uRnVuY3Rpb24gPSBGdW5jdGlv
blB0cihzbG90LmN1c3RvbUdldHRlcigpKTsKIAotICAgICAgICBvcGVyYXRpb25DYWxsID0gc3R1
YkppdC5jYWxsKCk7CisgICAgICAgICAgICBvcGVyYXRpb25DYWxsID0gc3R1YkppdC5jYWxsKCk7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3R1YkppdC5tb3ZlKEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCByZXN1bHRHUFIpOworICAgICAgICAgICAgc3R1YkppdC5tb3ZlKEdQUkluZm86
OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIpOwogI2Vsc2UKLSAgICAgICAgc3R1YkppdC5zZXR1
cFJlc3VsdHMocmVzdWx0R1BSLCByZXN1bHRUYWdHUFIpOworICAgICAgICAgICAgc3R1YkppdC5z
ZXR1cFJlc3VsdHMocmVzdWx0R1BSLCByZXN1bHRUYWdHUFIpOwogI2VuZGlmCi0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG5vRXhjZXB0aW9uID0gc3R1YkppdC5lbWl0RXhjZXB0aW9uQ2hl
Y2soQ0NhbGxIZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrKTsKLQotICAgICAgICBzdHVi
Sml0LnNldHVwQXJndW1lbnRzKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih2bSksIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgaGFuZGxlckNhbGwgPSBzdHViSml0LmNh
bGwoKTsKLSAgICAgICAgc3R1YkppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7Ci0gICAgICAg
IAotICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZzdHViSml0KTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vRXhjZXB0aW9uID0gc3R1YkppdC5lbWl0RXhjZXB0aW9uQ2hlY2so
Q0NhbGxIZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIodm0pLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgICAgICBoYW5kbGVy
Q2FsbCA9IHN0dWJKaXQuY2FsbCgpOworICAgICAgICAgICAgc3R1YkppdC5qdW1wVG9FeGNlcHRp
b25IYW5kbGVyKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5vRXhjZXB0aW9uLmxpbmso
JnN0dWJKaXQpOworICAgICAgICB9CiAgICAgfQogICAgIGVtaXRSZXN0b3JlU2NyYXRjaChzdHVi
Sml0LCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc2NyYXRjaEdQUiwgc3VjY2VzcywgZmFpbCwgZmFp
bHVyZUNhc2VzKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJnN0dWJK
aXQsIGV4ZWMtPmNvZGVCbG9jaygpKTsKICAgICAKICAgICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0
Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2Fz
ZXMsIHN1Y2Nlc3NMYWJlbCwgc2xvd0Nhc2VMYWJlbCk7Ci0gICAgaWYgKGlzQWNjZXNzb3IpIHsK
KyAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpKSB7CiAgICAgICAgIHBhdGNoQnVmZmVy
Lmxpbmsob3BlcmF0aW9uQ2FsbCwgb3BlcmF0aW9uRnVuY3Rpb24pOwogICAgICAgICBwYXRjaEJ1
ZmZlci5saW5rKGhhbmRsZXJDYWxsLCBsb29rdXBFeGNlcHRpb25IYW5kbGVyKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2
aXNpb24gMTY2MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDE2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oR2V0dGVyU2V0dGVyVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biksIGluZm8oKSk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZHZXR0ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEdldHRlclNldHRlciwgbV9nZXR0ZXIpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2V0dGVyKCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZXR0ZXJTZXR0ZXIs
IG1fc2V0dGVyKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgREVDTEFSRV9JTkZPOwog
CiAgICAgcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227724</attachid>
            <date>2014-03-24 23:18:20 -0700</date>
            <delta_ts>2014-03-25 11:38:01 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>15836</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0dldEJ5SWRM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljR2V0QnlJZExpc3QuaAkocmV2aXNpb24gMTY2MjE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N0dWJSb3V0aW5lLmdl
dCgpOwogICAgIH0KICAgICAKLSAgICBib29sIGRvZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBHZXR0ZXI7IH0KKyAgICBib29sIGRvZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBHZXR0ZXIgfHwgdHlwZSgpID09IEN1c3RvbUdldHRlcjsgfQogICAgIAogICAgIGJv
b2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImKSBjb25zdDsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oIgorCisjaWYgRU5B
QkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5l
OjpBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZSgKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYmIGNvZGUsIFZNJiB2bSwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rSW5mbz4gaW5mbykK
KyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkKKyAgICAsIG1fY2FsbExpbmtJ
bmZvKGluZm8pCit7Cit9CisKK0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lOjp+QWNjZXNzb3JD
YWxsSklUU3R1YlJvdXRpbmUoKQoreworfQorCitib29sIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKK3sKKyAgICBtX2Nh
bGxMaW5rSW5mby0+dmlzaXRXZWFrKHJlcGF0Y2hCdWZmZXIpOworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0
dWJSb3V0aW5lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fj
Y2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lX2gKKyNkZWZpbmUgQWNjZXNzb3JDYWxsSklUU3R1
YlJvdXRpbmVfaAorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZSAiR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBKSVQgc3R1YiByb3V0aW5lIGZvciB1
c2UgYnkgSmF2YVNjcmlwdCBhY2Nlc3NvcnMuIFRoZXNlIHdpbGwgYmUgbWFraW5nIGEgSlMKKy8v
IGNhbGwgdGhhdCByZXF1aXJlcyBpbmxpbmUgY2FjaGluZy4gCisKK2NsYXNzIEFjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CitwdWJsaWM6
CisgICAgQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUoCisgICAgICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiYsIFZNJiwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rSW5mbz4pOworICAg
IAorICAgIHZpcnR1YWwgfkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lKCk7CisgICAgCisgICAg
dmlydHVhbCBib29sIHZpc2l0V2VhaygpIG92ZXJyaWRlOworICAgIAorcHJpdmF0ZToKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mbzsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEFjY2Vz
c29yQ2FsbEpJVFN0dWJSb3V0aW5lX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjYyMTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2
NiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YWNrUG9pbnRlckFsaWduZWQubGluayh0aGlzKTsK
ICNlbmRpZgogICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQg
c3RvcmVDZWxsKFQgY2VsbCwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBzdG9yZTY0KGNlbGwsIGFkZHJlc3MpOworI2Vsc2UKKyAgICAgICAgc3Rv
cmUzMihjZWxsLCBhZGRyZXNzLndpdGhPZmZzZXQoUGF5bG9hZE9mZnNldCkpOworICAgICAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgYWRkcmVzcy53aXRoT2Zmc2V0
KFRhZ09mZnNldCkpOworI2VuZGlmCisgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4
NikKICAgICBzdGF0aWMgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjYyMTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDEsMTkgKzMwMSwxMjcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVHZXRCeUlkU3R1YigKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBzdHViSml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdG9yYWdlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpKSwgbG9hZGVkVmFs
dWVHUFIpOwogI2Vsc2UKLSAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KSArIFRhZ09mZnNl
dCksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSkK
KyAgICAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3Jh
Z2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkgKyBUYWdPZmZzZXQpLCByZXN1bHRU
YWdHUFIpOwogICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpICsgUGF5bG9hZE9mZnNldCks
IGxvYWRlZFZhbHVlR1BSKTsKICNlbmRpZgogICAgIH0KIAorICAgIC8vIFN0dWZmIGZvciBjdXN0
b20gZ2V0dGVycy4KICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBvcGVyYXRpb25DYWxsOwogICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGhhbmRsZXJDYWxsOwogICAgIEZ1bmN0aW9uUHRyIG9wZXJh
dGlvbkZ1bmN0aW9uOworCisgICAgLy8gU3R1ZmYgZm9yIEpTIGdldHRlcnMuCisgICAgTWFjcm9B
c3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBhZGRyZXNzT2ZMaW5rRnVuY3Rpb25DaGVjazsKKyAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBmYXN0UGF0aENhbGw7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgc2xvd1BhdGhDYWxsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua0luZm8+IGNhbGxM
aW5rSW5mbzsKKwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHN1Y2Nlc3MsIGZhaWw7CiAgICAg
aWYgKGlzQWNjZXNzb3IpIHsKKyAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3aGVu
ZXZlciB0aGlzIGNhbGwgaXMgbWFkZSBpbiB0aGUgZnV0dXJlLCB3ZSByZW1lbWJlciB0aGUKKyAg
ICAgICAgLy8gcGxhY2UgdGhhdCB3ZSBtYWRlIGl0IGZyb20uIEl0IGp1c3Qgc28gaGFwcGVucyB0
byBiZSB0aGUgcGxhY2UgdGhhdCB3ZSBhcmUgYXQKKyAgICAgICAgLy8gcmlnaHQgbm93IQorICAg
ICAgICBzdHViSml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihleGVjLT5s
b2NhdGlvbkFzUmF3Qml0cygpKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0
YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKwog
ICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKSB7Ci0gICAgICAgICAgICBzdHVi
Sml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNlR1BSLCBsb2FkZWRWYWx1ZUdQUik7
Ci0gICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvbkNhbGxHZXR0ZXI7Cisg
ICAgICAgICAgICAvLyBDcmVhdGUgYSBKUyBjYWxsIHVzaW5nIGEgSlMgY2FsbCBpbmxpbmUgY2Fj
aGUuIEFzc3VtZSB0aGF0OgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIC0gU1AgaXMg
YWxpZ25lZCBhbmQgcmVwcmVzZW50cyB0aGUgZXh0ZW50IG9mIHRoZSBjYWxsaW5nIGNvbXBpbGVy
J3Mgc3RhY2sgdXNhZ2UuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gLSBGUCBpcyBz
ZXQgY29ycmVjdGx5IChpLmUuIGl0IHBvaW50cyB0byB0aGUgY2FsbGVyJ3MgY2FsbCBmcmFtZSBo
ZWFkZXIpLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIC0gU1AgLSBGUCBpcyBhbiBh
bGlnbmVkIGRpZmZlcmVuY2UuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gLSBBbnkg
Ynl0ZSBiZXR3ZWVuIEZQIChleGNsdXNpdmUpIGFuZCBTUCAoaW5jbHVzaXZlKSBjb3VsZCBiZSBs
aXZlIGluIHRoZSBjYWxsaW5nCisgICAgICAgICAgICAvLyAgIGNvZGUuCisgICAgICAgICAgICAv
LworICAgICAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSB0ZW1wb3JhcnkgZ3JvdyB0aGUgc3RhY2sg
Zm9yIHRoZSBwdXJwb3NlIG9mIHRoZSBjYWxsIGFuZCB0aGVuCisgICAgICAgICAgICAvLyBkZWdy
b3cgaXQgYWZ0ZXIuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhbGxMaW5rSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZvPigpOworICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5jYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbDsKKyAgICAgICAgICAgIGNhbGxMaW5rSW5m
by0+Y29kZU9yaWdpbiA9IHN0dWJJbmZvLmNvZGVPcmlnaW47CisgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPmNhbGxlZUdQUiA9IGxvYWRlZFZhbHVlR1BSOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gVGhlcmUgaXMgYSAndGhpcycgYXJndW1lbnQgYnV0IG5vdGhpbmcgZWxzZS4KKyAg
ICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUGFyYW1ldGVycyA9IDE7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIEdldCB0aGUgZ2V0dGVyOyBpZiB0aGVyZSBhaW4ndCBvbmUgdGhlbiB0
aGUgcmVzdWx0IGlzIGpzVW5kZWZpbmVkKCkuCisgICAgICAgICAgICBzdHViSml0LmxvYWRQdHIo
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobG9hZGVkVmFsdWVHUFIs
IEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSksCisgICAgICAgICAgICAgICAgbG9hZGVk
VmFsdWVHUFIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmV0dXJuVW5kZWZp
bmVkID0gc3R1YkppdC5icmFuY2hUZXN0UHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mUmVnc0ZvckNhbGwgPQorICAgICAgICAgICAgICAgIEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemUgKyBudW1iZXJPZlBhcmFtZXRlcnM7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGFsaWduZWROdW1iZXJPZk5lZWRlZFJlZ3MgPQorICAgICAgICAg
ICAgICAgIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LCBudW1iZXJPZlJlZ3NGb3JDYWxsKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5zaWdu
ZWQgYWxpZ25lZE51bWJlck9mTmVlZGVkQnl0ZXMgPQorICAgICAgICAgICAgICAgIGFsaWduZWRO
dW1iZXJPZk5lZWRlZFJlZ3MgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBzdHViSml0LnN1YlB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKAorICAgICAgICAgICAgICAgICAgICBhbGlnbmVkTnVtYmVyT2ZOZWVkZWRS
ZWdzIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBjYWxsZWVGcmFtZSA9IE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZ2lz
dGVyLCAtc2l6ZW9mKENhbGxGcmFtZUFuZFBDKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHN0dWJKaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIobnVtYmVyT2ZQ
YXJhbWV0ZXJzKSwKKyAgICAgICAgICAgICAgICBjYWxsRnJhbWUud2l0aE9mZnNldCgKKyAgICAg
ICAgICAgICAgICAgICAgSlNTdGFjazo6QXJndW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3Rlcikg
KyBQYXlsb2FkT2Zmc2V0KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0dWJKaXQuc3Rv
cmVDZWxsKAorICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSLCBjYWxsZWVGcmFtZS53aXRo
T2Zmc2V0KEpTU3RhY2s6OkNhbGxlZSAqIHNpemVvZihSZWdpc3RlcikpKTsKKyAgICAgICAgICAg
IHN0dWJKaXQuc3RvcmVDZWxsKAorICAgICAgICAgICAgICAgIGJhc2VHUFIsCisgICAgICAgICAg
ICAgICAgY2FsbGVlRnJhbWUud2l0aE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgdmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0g
c3R1YkppdC5icmFuY2hQdHJXaXRoUGF0Y2goCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBsb2FkZWRWYWx1ZUdQUiwgYWRkcmVzc09mTGlua2VkRnVuY3Rpb25DaGVj
aywKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGxvYWRlZFZhbHVlR1BSIGlzIGFscmVhZHkgYnVy
bmVkLiBXZSBjYW4gcmV1c2UgaXQuIEZyb20gaGVyZSBvbiB3ZSBhc3N1bWUgdGhhdAorICAgICAg
ICAgICAgLy8gYW55IHZvbGF0aWxlIHJlZ2lzdGVyIHdpbGwgYmUgY2xvYmJlcmVkIGFueXdheS4K
KyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhsb2FkZWRWYWx1ZUdQUiwgT0JKRUNUX09GRlNFVE9GKEpTRnVuY3Rpb24s
IG1fc2NvcGUpKSwKKyAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAg
ICBzdHViSml0LnN0b3JlQ2VsbCgKKyAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUiwgY2Fs
bGVlRnJhbWUud2l0aE9mZnNldChKU1N0YWNrOjpTY29wZUNoYWluICogc2l6ZW9mKFJlZ2lzdGVy
KSkpOworICAgICAgICAgICAgZmFzdFBhdGhDYWxsID0gc3R1YkppdC5uZWFyQ2FsbCgpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBkb25lLmFwcGVuZChzdHViSml0Lmp1bXAoKSk7CisgICAg
ICAgICAgICBzbG93Q2FzZS5saW5rKCZzdHViSml0KTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgc3R1YkppdC5tb3ZlKGxvYWRlZFZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAgICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7CisjZW5kaWYK
KyAgICAgICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihj
YWxsTGlua0luZm8uZ2V0KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICBzbG93UGF0
aENhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRv
bmUuYXBwZW5kKHN0dWJKaXQuanVtcCgpOworICAgICAgICAgICAgcmV0dXJuVW5kZWZpbmVkLmxp
bmsoJnN0dWJKaXQpOworICAgICAgICAgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
ICAgIHN0dWJKaXQubW92ZSgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHJlc3VsdEdQUik7CisjZWxz
ZQorICAgICAgICAgICAgc3R1YkppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgIHN0dWJK
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOworI2Vu
ZGlmCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRvbmUubGluaygmc3R1YkppdCk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBFbmNvZGVkSlNWYWx1ZSAoKkdldFZhbHVlRnVu
YykoRXhlY1N0YXRlKiwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTMyMSwzOCArNDI5LDM3
IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlR2V0QnlJZFN0dWIoCiAjZWxzZQogICAgICAgICAgICAg
c3R1YkppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYmFzZUZvckFjY2Vzc0dQUiwgYmFz
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocHJvcGVydHlOYW1lLmltcGwoKSkpOwogI2VuZGlm
Ci0gICAgICAgICAgICBvcGVyYXRpb25GdW5jdGlvbiA9IEZ1bmN0aW9uUHRyKHNsb3QuY3VzdG9t
R2V0dGVyKCkpOwotICAgICAgICB9CisgICAgICAgICAgICBzdHViSml0LnN0b3JlUHRyKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFtZSk7CiAKLSAgICAgICAgLy8g
TmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3aGVuZXZlciB0aGlzIGNhbGwgaXMgbWFkZSBpbiB0aGUg
ZnV0dXJlLCB3ZSByZW1lbWJlciB0aGUKLSAgICAgICAgLy8gcGxhY2UgdGhhdCB3ZSBtYWRlIGl0
IGZyb20uIEl0IGp1c3Qgc28gaGFwcGVucyB0byBiZSB0aGUgcGxhY2UgdGhhdCB3ZSBhcmUgYXQK
LSAgICAgICAgLy8gcmlnaHQgbm93IQotICAgICAgICBzdHViSml0LnN0b3JlMzIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihleGVjLT5sb2NhdGlvbkFzUmF3Qml0cygpKSwKLSAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNT
dGFjazo6QXJndW1lbnRDb3VudCkpKTsKLSAgICAgICAgc3R1YkppdC5zdG9yZVB0cihHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOworICAgICAgICAgICAgb3Bl
cmF0aW9uRnVuY3Rpb24gPSBGdW5jdGlvblB0cihzbG90LmN1c3RvbUdldHRlcigpKTsKIAotICAg
ICAgICBvcGVyYXRpb25DYWxsID0gc3R1YkppdC5jYWxsKCk7CisgICAgICAgICAgICBvcGVyYXRp
b25DYWxsID0gc3R1YkppdC5jYWxsKCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc3R1
YkppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIpOworICAgICAgICAg
ICAgc3R1YkppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIpOwogI2Vs
c2UKLSAgICAgICAgc3R1YkppdC5zZXR1cFJlc3VsdHMocmVzdWx0R1BSLCByZXN1bHRUYWdHUFIp
OworICAgICAgICAgICAgc3R1YkppdC5zZXR1cFJlc3VsdHMocmVzdWx0R1BSLCByZXN1bHRUYWdH
UFIpOwogI2VuZGlmCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vRXhjZXB0aW9uID0g
c3R1YkppdC5lbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlv
bkNoZWNrKTsKLQotICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cih2bSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAg
aGFuZGxlckNhbGwgPSBzdHViSml0LmNhbGwoKTsKLSAgICAgICAgc3R1YkppdC5qdW1wVG9FeGNl
cHRpb25IYW5kbGVyKCk7Ci0gICAgICAgIAotICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZzdHVi
Sml0KTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vRXhjZXB0aW9uID0gc3R1
YkppdC5lbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlvbkNo
ZWNrKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3R1YkppdC5zZXR1cEFyZ3VtZW50cyhD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodm0pLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgICAgICAgICBoYW5kbGVyQ2FsbCA9IHN0dWJKaXQuY2FsbCgpOworICAgICAgICAg
ICAgc3R1YkppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJnN0dWJKaXQpOworICAgICAgICB9CiAgICAgfQogICAg
IGVtaXRSZXN0b3JlU2NyYXRjaChzdHViSml0LCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc2NyYXRj
aEdQUiwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKICAgICAKICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCp2bSwgJnN0dWJKaXQsIGV4ZWMtPmNvZGVCbG9jaygpKTsKICAgICAKICAg
ICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBz
dWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN1Y2Nlc3NMYWJlbCwgc2xvd0Nhc2VMYWJlbCk7
Ci0gICAgaWYgKGlzQWNjZXNzb3IpIHsKKyAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgp
KSB7CiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uQ2FsbCwgb3BlcmF0aW9uRnVu
Y3Rpb24pOwogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGhhbmRsZXJDYWxsLCBsb29rdXBFeGNl
cHRpb25IYW5kbGVyKTsKKyAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkg
eworICAgICAgICBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IgPSBsaW5rVGh1bmtHZW5lcmF0b3JG
b3IoCisgICAgICAgICAgICBDb2RlRm9yQ2FsbCwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1
aXJlZCk7CisgICAgICAgIHRoaW5neSA9IEZ1bmN0aW9uUHRyKHZtLT5nZXRDVElTVHViKGdlbmVy
YXRvcikuY29kZSgpLmNvZGUoKSk7CiAgICAgfQogICAgIAogICAgIHN0dWJSb3V0aW5lID0gRklO
QUxJWkVfQ09ERV9GT1JfR0NfQVdBUkVfU1RVQigKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCShyZXZpc2lvbiAxNjYyMTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNiArNjQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhHZXR0ZXJT
ZXR0ZXJUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsKICAgICAgICAgfQog
ICAgICAgICAKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdldHRlcigpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2V0dGVyU2V0
dGVyLCBtX2dldHRlcik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZTZXR0ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEdldHRlclNldHRlciwgbV9zZXR0ZXIpOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICBERUNMQVJFX0lORk87CiAKICAgICBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227776</attachid>
            <date>2014-03-25 11:38:01 -0700</date>
            <delta_ts>2014-03-25 12:03:54 -0700</delta_ts>
            <desc>it compiles and instacrashes</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>31272</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjYyMTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw4IEBACiAJCTBGNzNEN0FFMTY1QTE0
MkQwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAv
KiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLzsgfTsKIAkJMEY3M0Q3QUYxNjVBMTQzMDAw
QUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
MkEzQTIwMTY1MUM2NjEwMEE4MEFGRSAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgKi87IH07CisJ
CTBGNzU3NkQyMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc1NzZE
MDE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwICovOyB9
OworCQkwRjc1NzZEMzE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRp
bmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzU3
NkQxMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzY2RDI4MTVB
OENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyogSklU
U3R1YlJvdXRpbmUuY3BwICovOyB9OwogCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklU
U3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3NjZEMjkxNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmNw
cCAqLzsgfTsKIAkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQy
QTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzg2LDEwICs3ODgsMTAgQEAKIAkJ
MkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNjgyOTVBMTg3NUY4MDUwMEI2
QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJB
NkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkE3QTU4RUYxODA4QTRDNDAwMjBC
REY3IC8qIERlZmVyR0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovOyB9Owot
ICAgICAgIDJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2
MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsK
LSAgICAgICAyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYz
ODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotICAgICAgIDJBODM2Mzg5MThE
N0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg3MThEN0QwRkUwMDAwRUJD
QyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKLSAgICAgICAyQTgzNjM4QTE4
RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkND
IC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkyQTgzNjM4NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdD
QWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQTgzNjM4MzE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAgKi87IH07CisJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJBODM2
Mzg5MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg3MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4MzYzOEEx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg4MThEN0QwRkUwMDAwRUJD
QyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVj
dHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUNFNjNDMThDQTVB
MDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdD
QWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CiAJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBQUNFNjNCMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTg1MCw2ICsxODUyLDggQEAKIAkJMEY3MTRDQTIxNkVBOTJFRDAwRjNFQkVCIC8qIERGR0JhY2t3
YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3M0Q3QUIx
NjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBD
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY3NTc2RDAxOEUxRkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc29yQ2FsbEpJVFN0
dWJSb3V0aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3NTc2RDExOEUx
RkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDFDMTVBNTAyOEQwMDhGMzYzRSAvKiBKSVRT
dHViUm91dGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRTdHViUm91
dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc2NkQyNjE1QThDQzFCMDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSklUU3R1YlJvdXRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUU3R1YlJvdXRpbmVTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI3MywxMCArMjI3NywxMCBAQAogCQkyQTY4
Mjk1QTE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5V3JpdGVCYXJyaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVy
R0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHQy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0gICAgICAgMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0Fj
dGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdD
QWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotICAgICAgIDJB
ODM2Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotICAgICAgIDJBODM2Mzg4MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkE4MzYzODMxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRlbkdDQWN0
aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBODM2Mzg0
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJBODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8q
IFN0cnVjdHVyZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1
Y3R1cmVJREJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQ0U2M0ExOENB
NUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQUFDRTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNh
bGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQzMiw2ICszNDM2LDggQEAK
IAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY3NTc2RDAxOEUxRkVFOTAwMkVGNENEIC8qIEFj
Y2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCAqLywKKwkJCQkwRjc1NzZEMTE4RTFGRUU5MDAy
RUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRjZCMUNDNzE4
NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwICovLAogCQkJ
CTBGNkIxQ0M4MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5o
ICovLAogCQkJCTBGMjRFNTNCMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuY3Bw
ICovLApAQCAtMzYxMSwxMCArMzYxNywxMCBAQAogCQkJCTJBNEVDOTBBMTg2MEQ2QzIwMDk0Rjc4
MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLywKIAkJCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2
MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8sCiAJCQkJMEZDODE1MDkxNDA0M0JEMjAw
Q0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLywKLSAgICAgICAgICAgICAgIDJBODM2
MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKLSAg
ICAgICAgICAgICAgIDJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmggKi8sCi0gICAgICAgICAgICAgICAyQTgzNjM4NzE4RDdEMEZFMDAwMEVCQ0MgLyog
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8sCi0gICAgICAgICAgICAgICAyQTgzNjM4ODE4
RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICovLAorCQkJCTJBODM2
MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLywKKwkJ
CQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oICov
LAorCQkJCTJBODM2Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLywKKwkJCQkyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBoZWFwOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTQ5MzUsOCArNDk0MSw4IEBACiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2
NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAzMjAxOEJGRkJF
MTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFDRTYz
RDE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
LSAgICAgICAgICAgICAgIDJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0
eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgIDJBODM2MzhBMThEN0Qw
RkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMkE4MzYzOEExOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUFBMzEyMThCRDQ5RDEwMDM5NEND
OCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NEU4RUIxMThCRkZC
QkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTUzODAsNiArNTM4Niw3IEBACiAJCQkJQkMxOEM0MUUwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTQ29udGV4dFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4Q0QxRDgxMDhDRjkwMjAw
ODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAy
OEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNzU3NkQzMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
RGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkVFMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0RhdGFWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Nzg4MDE0MTE0NzFB
RDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjQxLDcgKzYy
NDgsNyBAQAogCQkJCTE0N0YzOUMyMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21wbGV0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0NkIxNkQ4MTJFQjVCNTkwMDFCRUMxQiAvKiBDb25zZXJ2YXRp
dmVSb290cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA3OTE4OUIwNTEwMDA2MzMyMzEg
LyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0gICAgICAgICAgICAgICAyQTgz
NjM4NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyQTgzNjM4NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgyRTEwN0VDMDU3MDAxM0U3QjIg
LyogQ29uc3RydWN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdEMjNGMTE4OTFCNUI0
MDAzMUM3RkEgLyogQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC02NTQyLDcgKzY1NDksNyBAQAogCQkJCTBGOTE5RDEwMTU3RjMzMjkwMDRBNEU3RCAv
KiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mjk5
RDlEMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzkw
REQ2RjE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
LSAgICAgICAgICAgICAgIDJBODM2Mzg5MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUwMDAwRUJD
QyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Mjgw
ODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC02NzEwLDYgKzY3MTcsNyBAQAogCQkJCTBGRjQyNzMyMTU4RUJENTgwMDRDQjlG
RiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2RjI3OTQx
NUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUI1OUY4OTM5MTg5MUYyOUYwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNzU3NkQyMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1ODE3
Rjc0RURCMDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1
OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0dldEJ5SWRM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljR2V0QnlJZExpc3QuaAkocmV2aXNpb24gMTY2MjE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N0dWJSb3V0aW5lLmdl
dCgpOwogICAgIH0KICAgICAKLSAgICBib29sIGRvZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBHZXR0ZXI7IH0KKyAgICBib29sIGRvZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBHZXR0ZXIgfHwgdHlwZSgpID09IEN1c3RvbUdldHRlcjsgfQogICAgIAogICAgIGJv
b2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImKSBjb25zdDsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oIgorCisjaWYgRU5B
QkxFKEpJVCkKKworI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmU6OkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5l
KAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZSwgVk0mIHZtLCBzdGQ6OnVu
aXF1ZV9wdHI8Q2FsbExpbmtJbmZvPiBpbmZvKQorICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KGNvZGUsIHZtKQorICAgICwgbV9jYWxsTGlua0luZm8oc3RkOjptb3ZlKGluZm8pKQoreworfQor
CitBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZTo6fkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5l
KCkKK3sKK30KKworYm9vbCBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZTo6dmlzaXRXZWFrKFJl
cGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpCit7CisgICAgbV9jYWxsTGlua0luZm8tPnZpc2l0
V2VhayhyZXBhdGNoQnVmZmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHVi
Um91dGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nlc3NvckNhbGxKSVRT
dHViUm91dGluZV9oCisjZGVmaW5lIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lX2gKKworI2lm
IEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBDYWxsTGlua0luZm87CisKKy8vIEpJVCBzdHViIHJvdXRp
bmUgZm9yIHVzZSBieSBKYXZhU2NyaXB0IGFjY2Vzc29ycy4gVGhlc2Ugd2lsbCBiZSBtYWtpbmcg
YSBKUworLy8gY2FsbCB0aGF0IHJlcXVpcmVzIGlubGluZSBjYWNoaW5nLiAKKworY2xhc3MgQWNj
ZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsK
K3B1YmxpYzoKKyAgICBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZSgKKyAgICAgICAgY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtJbmZv
Pik7CisgICAgCisgICAgdmlydHVhbCB+QWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUoKTsKKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImKSBvdmVycmlkZTsK
KyAgICAKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rSW5mbz4gbV9jYWxs
TGlua0luZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShK
SVQpCisKKyNlbmRpZiAvLyBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZV9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTY2
MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTcgQEAgcHVibGljOgogICAgICAgICBzdGFja1BvaW50
ZXJBbGlnbmVkLmxpbmsodGhpcyk7CiAjZW5kaWYKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICB2b2lkIHN0b3JlQ2VsbChUIGNlbGwsIEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc3RvcmU2NChjZWxsLCBhZGRyZXNz
KTsKKyNlbHNlCisgICAgICAgIHN0b3JlMzIoY2VsbCwgYWRkcmVzcy53aXRoT2Zmc2V0KFBheWxv
YWRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZyksIGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpKTsKKyNlbmRpZgorICAgIH0KIAogI2lm
IENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3RhdGljIHNpemVfdCBwcm9sb2d1ZVN0YWNr
UG9pbnRlckRlbHRhKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
Q0F3YXJlSklUU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMTY2MjE4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAKIFBhc3NSZWZQdHI8SklUU3R1YlJvdXRpbmU+IGNy
ZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYsIFZN
JiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAotICAgIEpTQ2VsbCogPSAw
KTsKKyAgICBKU0NlbGwqID0gbnVsbHB0cik7CiAKIC8vIEhlbHBlciBmb3IgdGhlIGNyZWF0aW9u
IG9mIHNpbXBsZSBzdHViIHJvdXRpbmVzIHRoYXQgbmVlZCBubyBoZWxwIGZyb20gdGhlIEdDLiBO
b3RlCiAvLyB0aGF0IGNvZGVCbG9jayBnZXRzICJleGVjdXRlZCIgbW9yZSB0aGFuIG9uY2UuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE2NjIxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDExICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2luY2x1ZGUgIkFjY2Vz
c29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5j
bHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAj
aW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgi
CisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTMwMSwxOSArMzAzLDEz
OCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUdldEJ5SWRTdHViKAogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgICAgIHN0dWJKaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VH
UFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkpLCBsb2FkZWRWYWx1ZUdQUik7CiAjZWxz
ZQotICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
R1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpICsgVGFnT2Zmc2V0KSwgcmVzdWx0VGFn
R1BSKTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQorICAgICAgICAgICAg
c3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgb2Zmc2V0
UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KSArIFRhZ09mZnNldCksIHJlc3VsdFRhZ0dQUik7CiAgICAg
ICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIG9m
ZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgbG9hZGVkVmFsdWVH
UFIpOwogI2VuZGlmCiAgICAgfQogCisgICAgLy8gU3R1ZmYgZm9yIGN1c3RvbSBnZXR0ZXJzLgog
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIG9wZXJhdGlvbkNhbGw7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgaGFuZGxlckNhbGw7CiAgICAgRnVuY3Rpb25QdHIgb3BlcmF0aW9uRnVuY3Rpb247
CisKKyAgICAvLyBTdHVmZiBmb3IgSlMgZ2V0dGVycy4KKyAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsUHRyIGFkZHJlc3NPZkxpbmtGdW5jdGlvbkNoZWNrOworICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGZhc3RQYXRoQ2FsbDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBzbG93UGF0aENh
bGw7CisgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rSW5mbz4gY2FsbExpbmtJbmZvOworCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICBpZiAoaXNBY2Nlc3Nv
cikgeworICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW5ldmVyIHRoaXMgY2Fs
bCBpcyBtYWRlIGluIHRoZSBmdXR1cmUsIHdlIHJlbWVtYmVyIHRoZQorICAgICAgICAvLyBwbGFj
ZSB0aGF0IHdlIG1hZGUgaXQgZnJvbS4gSXQganVzdCBzbyBoYXBwZW5zIHRvIGJlIHRoZSBwbGFj
ZSB0aGF0IHdlIGFyZSBhdAorICAgICAgICAvLyByaWdodCBub3chCisgICAgICAgIHN0dWJKaXQu
c3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGV4ZWMtPmxvY2F0aW9uQXNSYXdC
aXRzKCkpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8Vmly
dHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworCiAgICAgICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpIHsKLSAgICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIGxvYWRlZFZhbHVlR1BSKTsKLSAgICAgICAgICAg
IG9wZXJhdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uQ2FsbEdldHRlcjsKKyAgICAgICAgICAgIC8v
IENyZWF0ZSBhIEpTIGNhbGwgdXNpbmcgYSBKUyBjYWxsIGlubGluZSBjYWNoZS4gQXNzdW1lIHRo
YXQ6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gLSBTUCBpcyBhbGlnbmVkIGFuZCBy
ZXByZXNlbnRzIHRoZSBleHRlbnQgb2YgdGhlIGNhbGxpbmcgY29tcGlsZXIncyBzdGFjayB1c2Fn
ZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAtIEZQIGlzIHNldCBjb3JyZWN0bHkg
KGkuZS4gaXQgcG9pbnRzIHRvIHRoZSBjYWxsZXIncyBjYWxsIGZyYW1lIGhlYWRlcikuCisgICAg
ICAgICAgICAvLworICAgICAgICAgICAgLy8gLSBTUCAtIEZQIGlzIGFuIGFsaWduZWQgZGlmZmVy
ZW5jZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAtIEFueSBieXRlIGJldHdlZW4g
RlAgKGV4Y2x1c2l2ZSkgYW5kIFNQIChpbmNsdXNpdmUpIGNvdWxkIGJlIGxpdmUgaW4gdGhlIGNh
bGxpbmcKKyAgICAgICAgICAgIC8vICAgY29kZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAg
ICAvLyBUaGVyZWZvcmUsIHdlIHRlbXBvcmFyeSBncm93IHRoZSBzdGFjayBmb3IgdGhlIHB1cnBv
c2Ugb2YgdGhlIGNhbGwgYW5kIHRoZW4KKyAgICAgICAgICAgIC8vIGRlZ3JvdyBpdCBhZnRlci4K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgY2FsbExpbmtJbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsTGlua0luZm8+KCk7CisgICAgICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxUeXBlID0g
Q2FsbExpbmtJbmZvOjpDYWxsOworICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2lu
ID0gc3R1YkluZm8uY29kZU9yaWdpbjsKKyAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVl
R1BSID0gbG9hZGVkVmFsdWVHUFI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCBkb25lOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGVy
ZSBpcyBhICd0aGlzJyBhcmd1bWVudCBidXQgbm90aGluZyBlbHNlLgorICAgICAgICAgICAgdW5z
aWduZWQgbnVtYmVyT2ZQYXJhbWV0ZXJzID0gMTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gR2V0IHRoZSBnZXR0ZXI7IGlmIHRoZXJlIGFpbid0IG9uZSB0aGVuIHRoZSByZXN1bHQgaXMg
anNVbmRlZmluZWQoKS4KKyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cigKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhsb2FkZWRWYWx1ZUdQUiwgR2V0dGVyU2V0dGVy
OjpvZmZzZXRPZkdldHRlcigpKSwKKyAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUik7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByZXR1cm5VbmRlZmluZWQgPSBzdHViSml0
LmJyYW5jaFRlc3RQdHIoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGxv
YWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZSZWdzRm9yQ2FsbCA9CisgICAgICAgICAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSArIG51bWJlck9mUGFyYW1ldGVyczsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5z
aWduZWQgYWxpZ25lZE51bWJlck9mTmVlZGVkUmVncyA9CisgICAgICAgICAgICAgICAgV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bWJlck9mUmVn
c0ZvckNhbGwpOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBhbGlnbmVkTnVt
YmVyT2ZOZWVkZWRCeXRlcyA9CisgICAgICAgICAgICAgICAgYWxpZ25lZE51bWJlck9mTmVlZGVk
UmVncyAqIHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0dWJK
aXQuc3ViUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
CisgICAgICAgICAgICAgICAgICAgIGFsaWduZWROdW1iZXJPZk5lZWRlZEJ5dGVzIC0gc2l6ZW9m
KENhbGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyBjYWxsZWVGcmFtZSA9IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKKyAgICAg
ICAgICAgICAgICAtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3R1YkppdC5zdG9yZTMyKAorICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobnVtYmVyT2ZQYXJhbWV0ZXJz
KSwKKyAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KAorICAgICAgICAgICAg
ICAgICAgICBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSArIFBheWxv
YWRPZmZzZXQpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3R1YkppdC5zdG9yZUNlbGwo
CisgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQo
SlNTdGFjazo6Q2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZUNlbGwoCisgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAgICAgICAgICAgICAgICBj
YWxsZWVGcmFtZS53aXRoT2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudCgwKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd0Nhc2UgPSBzdHViSml0
LmJyYW5jaFB0cldpdGhQYXRjaCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIGxvYWRlZFZhbHVlR1BSLCBhZGRyZXNzT2ZMaW5rRnVuY3Rpb25DaGVjaywKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIC8vIGxvYWRlZFZhbHVlR1BSIGlzIGFscmVhZHkgYnVybmVkLiBXZSBj
YW4gcmV1c2UgaXQuIEZyb20gaGVyZSBvbiB3ZSBhc3N1bWUgdGhhdAorICAgICAgICAgICAgLy8g
YW55IHZvbGF0aWxlIHJlZ2lzdGVyIHdpbGwgYmUgY2xvYmJlcmVkIGFueXdheS4KKyAgICAgICAg
ICAgIHN0dWJKaXQubG9hZFB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhsb2FkZWRWYWx1ZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLAor
ICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAgIHN0dWJKaXQuc3Rv
cmVDZWxsKAorICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSLCBjYWxsZWVGcmFtZS53aXRo
T2Zmc2V0KEpTU3RhY2s6OlNjb3BlQ2hhaW4gKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAgICAg
ICAgICBmYXN0UGF0aENhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHN0dWJKaXQuYWRkUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoCisgICAgICAgICAgICAgICAgICAgIGFsaWduZWROdW1iZXJPZk5lZWRl
ZEJ5dGVzIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBkb25lLmFwcGVuZChzdHViSml0Lmp1bXAoKSk7CisgICAgICAgICAgICBzbG93Q2FzZS5s
aW5rKCZzdHViSml0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3R1YkppdC5tb3ZlKGxv
YWRlZFZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICAgICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7CisjZW5kaWYKKyAgICAgICAgICAgIHN0dWJK
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8uZ2V0KCkp
LCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBzdHViSml0Lm5l
YXJDYWxsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0dWJKaXQuYWRkUHRyKAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoCisgICAgICAgICAgICAg
ICAgICAgIGFsaWduZWROdW1iZXJPZk5lZWRlZFJlZ3MgLSBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRvbmUuYXBwZW5kKHN0dWJKaXQuanVtcCgp
KTsKKyAgICAgICAgICAgIHJldHVyblVuZGVmaW5lZC5saW5rKCZzdHViSml0KTsKKyAgICAgICAg
ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBzdHViSml0Lm1vdmUoCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSkpLCByZXN1bHRHUFIpOworI2Vsc2UKKyAgICAgICAgICAgIHN0dWJKaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyks
IHJlc3VsdFRhZ0dQUik7CisgICAgICAgICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMigwKSwgcmVzdWx0R1BSKTsKKyNlbmRpZgorICAgICAgICAgICAgCisgICAg
ICAgICAgICBkb25lLmxpbmsoJnN0dWJKaXQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gRW5jb2RlZEpTVmFsdWUgKCpHZXRWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogI2lm
IFVTRShKU1ZBTFVFNjQpCkBAIC0zMjEsNDQgKzQ0Miw1MyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0
ZUdldEJ5SWRTdHViKAogI2Vsc2UKICAgICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGJhc2VGb3JBY2Nlc3NHUFIsIGJhc2VHUFIsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHByb3BlcnR5TmFtZS5pbXBsKCkpKTsKICNlbmRpZgotICAgICAgICAgICAgb3BlcmF0aW9u
RnVuY3Rpb24gPSBGdW5jdGlvblB0cihzbG90LmN1c3RvbUdldHRlcigpKTsKLSAgICAgICAgfQor
ICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
JnZtLT50b3BDYWxsRnJhbWUpOwogCi0gICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQg
d2hlbmV2ZXIgdGhpcyBjYWxsIGlzIG1hZGUgaW4gdGhlIGZ1dHVyZSwgd2UgcmVtZW1iZXIgdGhl
Ci0gICAgICAgIC8vIHBsYWNlIHRoYXQgd2UgbWFkZSBpdCBmcm9tLiBJdCBqdXN0IHNvIGhhcHBl
bnMgdG8gYmUgdGhlIHBsYWNlIHRoYXQgd2UgYXJlIGF0Ci0gICAgICAgIC8vIHJpZ2h0IG5vdyEK
LSAgICAgICAgc3R1YkppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoZXhl
Yy0+bG9jYXRpb25Bc1Jhd0JpdHMoKSksCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zv
cihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7
Ci0gICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2
bS0+dG9wQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbkZ1bmN0aW9uID0gRnVuY3Rp
b25QdHIoc2xvdC5jdXN0b21HZXR0ZXIoKSk7CiAKLSAgICAgICAgb3BlcmF0aW9uQ2FsbCA9IHN0
dWJKaXQuY2FsbCgpOworICAgICAgICAgICAgb3BlcmF0aW9uQ2FsbCA9IHN0dWJKaXQuY2FsbCgp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHN0dWJKaXQubW92ZShHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIHN0dWJKaXQubW92ZShHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0R1BSKTsKICNlbHNlCi0gICAgICAgIHN0dWJKaXQuc2V0
dXBSZXN1bHRzKHJlc3VsdEdQUiwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgIHN0dWJKaXQu
c2V0dXBSZXN1bHRzKHJlc3VsdEdQUiwgcmVzdWx0VGFnR1BSKTsKICNlbmRpZgotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBub0V4Y2VwdGlvbiA9IHN0dWJKaXQuZW1pdEV4Y2VwdGlvbkNo
ZWNrKENDYWxsSGVscGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7Ci0KLSAgICAgICAgc3R1
YkppdC5zZXR1cEFyZ3VtZW50cyhDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodm0pLCBHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGhhbmRsZXJDYWxsID0gc3R1YkppdC5j
YWxsKCk7Ci0gICAgICAgIHN0dWJKaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwotICAgICAg
ICAKLSAgICAgICAgbm9FeGNlcHRpb24ubGluaygmc3R1YkppdCk7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub0V4Y2VwdGlvbiA9IHN0dWJKaXQuZW1pdEV4Y2VwdGlvbkNoZWNr
KENDYWxsSGVscGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHZtKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICAgICAgaGFuZGxl
ckNhbGwgPSBzdHViSml0LmNhbGwoKTsKKyAgICAgICAgICAgIHN0dWJKaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBub0V4Y2VwdGlvbi5saW5r
KCZzdHViSml0KTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbWl0UmVzdG9yZVNjcmF0Y2goc3R1
YkppdCwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHNjcmF0Y2hHUFIsIHN1Y2Nlc3MsIGZhaWwsIGZh
aWx1cmVDYXNlcyk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZzdHVi
Sml0LCBleGVjLT5jb2RlQmxvY2soKSk7CiAgICAgCiAgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBh
dGNoQnVmZmVyLCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNh
c2VzLCBzdWNjZXNzTGFiZWwsIHNsb3dDYXNlTGFiZWwpOwotICAgIGlmIChpc0FjY2Vzc29yKSB7
CisgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewogICAgICAgICBwYXRjaEJ1ZmZl
ci5saW5rKG9wZXJhdGlvbkNhbGwsIG9wZXJhdGlvbkZ1bmN0aW9uKTsKICAgICAgICAgcGF0Y2hC
dWZmZXIubGluayhoYW5kbGVyQ2FsbCwgbG9va3VwRXhjZXB0aW9uSGFuZGxlcik7CisgICAgfSBl
bHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpIHsKKyAgICAgICAgY2FsbExpbmtJbmZv
LT5ob3RQYXRoT3RoZXIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwoZmFzdFBhdGhD
YWxsKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5ob3RQYXRoQmVnaW4gPSBwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mKGFkZHJlc3NPZkxpbmtGdW5jdGlvbkNoZWNrKTsKKyAgICAgICAgY2FsbExpbmtJ
bmZvLT5jYWxsUmV0dXJuTG9jYXRpb24gPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGwo
c2xvd1BhdGhDYWxsKTsKKworICAgICAgICBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IgPSBsaW5r
VGh1bmtHZW5lcmF0b3JGb3IoCisgICAgICAgICAgICBDb2RlRm9yQ2FsbCwgUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25Ob3RSZXF1aXJlZCk7CisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoCisgICAgICAg
ICAgICBzbG93UGF0aENhbGwsIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRDVElTdHViKGdlbmVy
YXRvcikuY29kZSgpKSk7CiAgICAgfQogICAgIAotICAgIHN0dWJSb3V0aW5lID0gRklOQUxJWkVf
Q09ERV9GT1JfR0NfQVdBUkVfU1RVQigKLSAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksIHBhdGNo
QnVmZmVyLCB0cnVlLCBudWxscHRyLAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlID0g
RklOQUxJWkVfQ09ERV9GT1IoCisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBwYXRjaEJ1ZmZl
ciwKICAgICAgICAgKCJHZXQgYWNjZXNzIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLAog
ICAgICAgICAgICAgdG9DU3RyaW5nKCpleGVjLT5jb2RlQmxvY2soKSkuZGF0YSgpLCBzdWNjZXNz
TGFiZWwuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgIAorICAgIGlmIChzbG90LmlzQ2FjaGVh
YmxlR2V0dGVyKCkpCisgICAgICAgIHN0dWJSb3V0aW5lID0gYWRvcHRSZWYobmV3IEFjY2Vzc29y
Q2FsbEpJVFN0dWJSb3V0aW5lKGNvZGUsICp2bSwgc3RkOjptb3ZlKGNhbGxMaW5rSW5mbykpKTsK
KyAgICBlbHNlCisgICAgICAgIHN0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29k
ZSwgKnZtLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCB0cnVlKTsKIH0KIAogc3RhdGlj
IGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAkocmV2aXNpb24gMTY2MjE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDYgKzY0LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oR2V0dGVy
U2V0dGVyVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIGluZm8oKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHZXR0ZXIoKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEdldHRlclNldHRlciwg
bV9nZXR0ZXIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mU2V0dGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihHZXR0ZXJTZXR0ZXIsIG1fc2V0dGVyKTsKKyAgICAgICAgfQorICAgICAgICAKICAg
ICAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227779</attachid>
            <date>2014-03-25 12:03:54 -0700</date>
            <delta_ts>2014-03-25 13:02:54 -0700</delta_ts>
            <desc>it compiles and doesn&apos;t crash</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>34534</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2MjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE0LTAzLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwYXRjaCBzaG91bGQgcGxhbnQgY2FsbHMgdG8gZ2V0dGVycyBkaXJlY3RseSByYXRoZXIgdGhh
biB0aHJvdWdoIGEgQyBoZWxwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTU4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgQXMgdGhlIHRpdGxlIHNheXMuIEFsbCBvZiB0aGUgc3VwZXJz
dHJ1Y3R1cmUgZm9yIHRoaXMgd2FzIGFscmVhZHkgaW4gcGxhY2UsIHNvIG5vdyBpdAorICAgICAg
ICB3YXMganVzdCBhIG1hdHRlciBvZiBhY3R1YWxseSBlbWl0dGluZyB0aGUgY2FsbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJ
ZExpc3QuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZEFjY2Vzczo6ZG9lc0NhbGxzKToKKyAgICAg
ICAgKiBqaXQvQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6QWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmU6OkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lKToKKyAgICAgICAgKEpTQzo6QWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmU6On5BY2Nlc3Nv
ckNhbGxKSVRTdHViUm91dGluZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc29yQ2FsbEpJVFN0dWJS
b3V0aW5lOjp2aXNpdFdlYWspOgorICAgICAgICAqIGppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVDZWxsKToKKyAgICAgICAgKiBqaXQvR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjpnZW5lcmF0ZUdldEJ5SWRTdHViKToKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRl
ci5oOgorICAgICAgICAoSlNDOjpHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcik6CisKIDIwMTQtMDMtMjQgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVE
IGluIFBhcnNlcjogZHN0ICE9IGxvY2FsUmVnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxNjYyMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKICAgICBp
bnRlcnByZXRlci9WTUluc3BlY3Rvci5jcHAKIAorICAgIGppdC9BY2Nlc3NvckNhbGxKSVRTdHVi
Um91dGluZS5jcHAKICAgICBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAogICAgIGppdC9Bcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rcy5jcHAKICAgICBqaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5j
cHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24g
MTY2MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTIwLDYgKzUyMCw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxQcm90b0NhbGxGcmFtZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxTdGFja1Zpc2l0
b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNw
ZWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEFjY2Vzc29yQ2Fs
bEpJVFN0dWJSb3V0aW5lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGppdFxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCIgLz4KQEAgLTExMzgsNiArMTEzOSw3
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxSZWdpc3Rlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxWTUluc3BlY3Rvci5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEFjY2Vzc29yQ2FsbEpJVFN0dWJS
b3V0aW5lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcQXJpdHlDaGVja0Zh
aWxSZXR1cm5UaHVua3MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxBc3Nl
bWJseUhlbHBlcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxDQ2FsbEhl
bHBlcnMuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjYyMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw4IEBACiAJCTBG
NzNEN0FFMTY1QTE0MkQwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FCMTY1QTE0
MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcCAqLzsgfTsKIAkJMEY3M0Q3
QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzNEN0FDMTY1QTE0MkEwMEFD
QUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFS
TTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1MkEzQTIwMTY1MUM2NjEwMEE4MEFGRSAvKiBBUk02NERpc2Fzc2VtYmxlci5j
cHAgKi87IH07CisJCTBGNzU3NkQyMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRT
dHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjc1NzZEMDE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRp
bmUuY3BwICovOyB9OworCQkwRjc1NzZEMzE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxs
SklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNzU3NkQxMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQyNjE1QThDQzFCMDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICovOyB9OwogCQkwRjc2NkQyQjE1QThDQzM4MDA4
RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMjkxNUE4Q0MzNDAwOEYzNjNFIC8qIEpJVFN0dWJS
b3V0aW5lU2V0LmNwcCAqLzsgfTsKIAkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjc2NkQyQTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzg2LDEwICs3
ODgsMTAgQEAKIAkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNjgyOTVB
MTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4
IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkE3QTU4RUYx
ODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0Mu
Y3BwICovOyB9OwotICAgICAgIDJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJBODM2MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLzsgfTsKLSAgICAgICAyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0
aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotICAgICAg
IDJBODM2Mzg5MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg3MThE
N0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKLSAgICAg
ICAyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3
RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyQTgzNjM4NTE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4MzE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdD
QWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CisJCTJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAv
KiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTJBODM2Mzg5MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2
Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsK
KwkJMkE4MzYzOEExOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg4MThE
N0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQUEzMTIxOEJENDlEMTAwMzk0
Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxv
Yi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJB
QUNFNjNDMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0ExOENBNUEwMzAw
RUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CiAJCTJBQUNFNjNEMThDQTVB
MDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUNFNjNCMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0Fj
dGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTg1MCw2ICsxODUyLDggQEAKIAkJMEY3MTRDQTIxNkVBOTJFRDAwRjNFQkVC
IC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3M0Q3QUIxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzNEN0FDMTY1QTE0MkEw
MEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY3NTc2RDAxOEUxRkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0
dWJSb3V0aW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vz
c29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY3NTc2RDExOEUxRkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDFDMTVBNTAyOEQwMDhG
MzYzRSAvKiBKSVRTdHViUm91dGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKSVRTdHViUm91dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc2NkQy
NjE1QThDQzFCMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSklUU3R1YlJvdXRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjc2NkQyOTE1QThDQzM0MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVT
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUU3R1YlJvdXRp
bmVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI3MywxMCArMjI3Nywx
MCBAQAogCQkyQTY4Mjk1QTE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5V3JpdGVCYXJyaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFw
T3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBC
REY3IC8qIERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVmZXJHQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgMkE4MzYzODMx
OEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkND
IC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotICAgICAgIDJBODM2Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotICAgICAgIDJBODM2
Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODMxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5H
Q0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkND
IC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJBODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNh
bGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBQUEzMTAxOEJENDlE
MTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJ1Y3R1cmVJREJsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkFBQ0U2M0ExOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFDRTYzQjE4Q0E1QTAzMDBFRDAxOTEgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdD
QWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQzMiw2
ICszNDM2LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY3NTc2RDAxOEUxRkVFOTAw
MkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCAqLywKKwkJCQkwRjc1NzZE
MTE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaCAqLywKIAkJ
CQkwRjZCMUNDNzE4NjQxREY4MDA4NDVEOTcgLyogQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3Mu
Y3BwICovLAogCQkJCTBGNkIxQ0M4MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNoZWNrRmFpbFJl
dHVyblRodW5rcy5oICovLAogCQkJCTBGMjRFNTNCMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJs
eUhlbHBlcnMuY3BwICovLApAQCAtMzYxMSwxMCArMzYxNywxMCBAQAogCQkJCTJBNEVDOTBBMTg2
MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLywKIAkJCQkwRkM4MTUwODE0
MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8sCiAJCQkJMEZDODE1
MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLywKLSAgICAgICAg
ICAgICAgIDJBODM2MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLywKLSAgICAgICAgICAgICAgIDJBODM2Mzg0MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCi0gICAgICAgICAgICAgICAyQTgzNjM4NzE4RDdEMEZF
MDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8sCi0gICAgICAgICAgICAg
ICAyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oICov
LAorCQkJCTJBODM2MzgzMThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLywKKwkJCQkyQTgzNjM4NDE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5oICovLAorCQkJCTJBODM2Mzg3MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCAqLywKKwkJCQkyQTgzNjM4ODE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBoZWFwOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQ5MzUsOCArNDk0MSw4IEBACiAJCQkJODZEM0IyQzQx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4
NDAzMjAxOEJGRkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQUFDRTYzRDE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKLSAgICAgICAgICAgICAgIDJBODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgIDJB
ODM2MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyQTgzNjM4NjE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE4MzYzOEExOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUFBMzEyMThC
RDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
NEU4RUIxMThCRkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTUzODAsNiArNTM4Niw3IEBACiAJCQkJQkMxOEM0MUUwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTQ29udGV4dFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4Q0Qx
RDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNzU3NkQzMThFMUZFRTkwMDJFRjRDRCAvKiBBY2Nlc3NvckNh
bGxKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkVFMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
Nzg4MDE0MTE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8sCkBA
IC02MjQxLDcgKzYyNDgsNyBAQAogCQkJCTE0N0YzOUMyMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21w
bGV0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NkIxNkQ4MTJFQjVCNTkwMDFCRUMxQiAv
KiBDb25zZXJ2YXRpdmVSb290cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA3OTE4OUIw
NTEwMDA2MzMyMzEgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0gICAgICAg
ICAgICAgICAyQTgzNjM4NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQTgzNjM4NTE4RDdEMEVFMDAwMEVCQ0MgLyogRWRl
bkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgyRTEwN0VD
MDU3MDAxM0U3QjIgLyogQ29uc3RydWN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdE
MjNGMTE4OTFCNUI0MDAzMUM3RkEgLyogQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC02NTQyLDcgKzY1NDksNyBAQAogCQkJCTBGOTE5RDEwMTU3RjMz
MjkwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3Mjk5RDlEMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzkwREQ2RjE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5jcHAgaW4g
U291cmNlcyAqLywKLSAgICAgICAgICAgICAgIDJBODM2Mzg5MThEN0QwRkUwMDAwRUJDQyAvKiBG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThE
N0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC02NzEwLDYgKzY3MTcsNyBAQAogCQkJCTBGRjQyNzMyMTU4
RUJENTgwMDRDQjlGRiAvKiBVRGlzODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTc2RjI3OTQxNUYxM0M5NjAwNTE3RDY3IC8qIFVubGlua2VkQ29kZUJsb2NrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1OUY4OTM5MTg5MUYyOUYwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3Ry
dWN0aW9uU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNzU3NkQyMThFMUZFRTkwMDJF
RjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjI0RTU1ODE3Rjc0RURCMDBBQkIyMTcgLyogVmFsdWVSZWNvdmVyeS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0dldEJ5SWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAkocmV2aXNpb24gMTY2MjE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N0
dWJSb3V0aW5lLmdldCgpOwogICAgIH0KICAgICAKLSAgICBib29sIGRvZXNDYWxscygpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBHZXR0ZXI7IH0KKyAgICBib29sIGRvZXNDYWxscygpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBHZXR0ZXIgfHwgdHlwZSgpID09IEN1c3RvbUdldHRlcjsgfQog
ICAgIAogICAgIGJvb2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImKSBjb25zdDsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRT
dHViUm91dGluZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5o
IgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmU6OkFjY2Vzc29yQ2FsbEpJ
VFN0dWJSb3V0aW5lKAorICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZSwgVk0m
IHZtLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtJbmZvPiBpbmZvKQorICAgIDogR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lKGNvZGUsIHZtKQorICAgICwgbV9jYWxsTGlua0luZm8oc3RkOjptb3ZlKGlu
Zm8pKQoreworfQorCitBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZTo6fkFjY2Vzc29yQ2FsbEpJ
VFN0dWJSb3V0aW5lKCkKK3sKK30KKworYm9vbCBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZTo6
dmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpCit7CisgICAgbV9jYWxsTGlu
a0luZm8tPnZpc2l0V2VhayhyZXBhdGNoQnVmZmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3Nv
ckNhbGxKSVRTdHViUm91dGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZV9oCisjZGVmaW5lIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lX2gKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRp
bmUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBDYWxsTGlua0luZm87CisKKy8vIEpJ
VCBzdHViIHJvdXRpbmUgZm9yIHVzZSBieSBKYXZhU2NyaXB0IGFjY2Vzc29ycy4gVGhlc2Ugd2ls
bCBiZSBtYWtpbmcgYSBKUworLy8gY2FsbCB0aGF0IHJlcXVpcmVzIGlubGluZSBjYWNoaW5nLiAK
KworY2xhc3MgQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lIHsKK3B1YmxpYzoKKyAgICBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZSgKKyAg
ICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBzdGQ6OnVuaXF1ZV9wdHI8
Q2FsbExpbmtJbmZvPik7CisgICAgCisgICAgdmlydHVhbCB+QWNjZXNzb3JDYWxsSklUU3R1YlJv
dXRpbmUoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICAKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5r
SW5mbz4gbV9jYWxsTGlua0luZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMTY2MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTcgQEAgcHVibGljOgogICAgICAg
ICBzdGFja1BvaW50ZXJBbGlnbmVkLmxpbmsodGhpcyk7CiAjZW5kaWYKICAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHN0b3JlQ2VsbChUIGNlbGwsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgc3RvcmU2NChj
ZWxsLCBhZGRyZXNzKTsKKyNlbHNlCisgICAgICAgIHN0b3JlMzIoY2VsbCwgYWRkcmVzcy53aXRo
T2Zmc2V0KFBheWxvYWRPZmZzZXQpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZyksIGFkZHJlc3Mud2l0aE9mZnNldChUYWdPZmZzZXQpKTsKKyNlbmRpZgor
ICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc3RhdGljIHNpemVfdCBw
cm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMTY2MjE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAKIFBhc3NSZWZQdHI8SklUU3R1
YlJvdXRpbmU+IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwgYm9vbCBtYWtlc0NhbGxzLAotICAg
IEpTQ2VsbCogPSAwKTsKKyAgICBKU0NlbGwqID0gbnVsbHB0cik7CiAKIC8vIEhlbHBlciBmb3Ig
dGhlIGNyZWF0aW9uIG9mIHNpbXBsZSBzdHViIHJvdXRpbmVzIHRoYXQgbmVlZCBubyBoZWxwIGZy
b20gdGhlIEdDLiBOb3RlCiAvLyB0aGF0IGNvZGVCbG9jayBnZXRzICJleGVjdXRlZCIgbW9yZSB0
aGFuIG9uY2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlz
aW9uIDE2NjIxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDExICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2lu
Y2x1ZGUgIkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1bGF0
aXZlSklULmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTMw
MSwxOSArMzAzLDEzOCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUdldEJ5SWRTdHViKAogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIHN0dWJKaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkpLCBsb2FkZWRWYWx1
ZUdQUik7CiAjZWxzZQotICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdG9yYWdlR1BSLCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpICsgVGFnT2Zmc2V0
KSwgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQor
ICAgICAgICAgICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KSArIFRhZ09mZnNldCksIHJlc3VsdFRh
Z0dQUik7CiAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwg
bG9hZGVkVmFsdWVHUFIpOwogI2VuZGlmCiAgICAgfQogCisgICAgLy8gU3R1ZmYgZm9yIGN1c3Rv
bSBnZXR0ZXJzLgogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIG9wZXJhdGlvbkNhbGw7CiAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgaGFuZGxlckNhbGw7CiAgICAgRnVuY3Rpb25QdHIgb3BlcmF0
aW9uRnVuY3Rpb247CisKKyAgICAvLyBTdHVmZiBmb3IgSlMgZ2V0dGVycy4KKyAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIGFkZHJlc3NPZkxpbmtGdW5jdGlvbkNoZWNrOworICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGZhc3RQYXRoQ2FsbDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBzbG93UGF0aENhbGw7CisgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rSW5mbz4gY2FsbExp
bmtJbmZvOworCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgZmFpbDsKICAgICBp
ZiAoaXNBY2Nlc3NvcikgeworICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW5l
dmVyIHRoaXMgY2FsbCBpcyBtYWRlIGluIHRoZSBmdXR1cmUsIHdlIHJlbWVtYmVyIHRoZQorICAg
ICAgICAvLyBwbGFjZSB0aGF0IHdlIG1hZGUgaXQgZnJvbS4gSXQganVzdCBzbyBoYXBwZW5zIHRv
IGJlIHRoZSBwbGFjZSB0aGF0IHdlIGFyZSBhdAorICAgICAgICAvLyByaWdodCBub3chCisgICAg
ICAgIHN0dWJKaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGV4ZWMtPmxv
Y2F0aW9uQXNSYXdCaXRzKCkpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3Rh
dGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworCiAg
ICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpIHsKLSAgICAgICAgICAgIHN0dWJK
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGJhc2VHUFIsIGxvYWRlZFZhbHVlR1BSKTsK
LSAgICAgICAgICAgIG9wZXJhdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uQ2FsbEdldHRlcjsKKyAg
ICAgICAgICAgIC8vIENyZWF0ZSBhIEpTIGNhbGwgdXNpbmcgYSBKUyBjYWxsIGlubGluZSBjYWNo
ZS4gQXNzdW1lIHRoYXQ6CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gLSBTUCBpcyBh
bGlnbmVkIGFuZCByZXByZXNlbnRzIHRoZSBleHRlbnQgb2YgdGhlIGNhbGxpbmcgY29tcGlsZXIn
cyBzdGFjayB1c2FnZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAtIEZQIGlzIHNl
dCBjb3JyZWN0bHkgKGkuZS4gaXQgcG9pbnRzIHRvIHRoZSBjYWxsZXIncyBjYWxsIGZyYW1lIGhl
YWRlcikuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gLSBTUCAtIEZQIGlzIGFuIGFs
aWduZWQgZGlmZmVyZW5jZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAtIEFueSBi
eXRlIGJldHdlZW4gRlAgKGV4Y2x1c2l2ZSkgYW5kIFNQIChpbmNsdXNpdmUpIGNvdWxkIGJlIGxp
dmUgaW4gdGhlIGNhbGxpbmcKKyAgICAgICAgICAgIC8vICAgY29kZS4KKyAgICAgICAgICAgIC8v
CisgICAgICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIHRlbXBvcmFyeSBncm93IHRoZSBzdGFjayBm
b3IgdGhlIHB1cnBvc2Ugb2YgdGhlIGNhbGwgYW5kIHRoZW4KKyAgICAgICAgICAgIC8vIGRlZ3Jv
dyBpdCBhZnRlci4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2FsbExpbmtJbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsTGlua0luZm8+KCk7CisgICAgICAgICAgICBjYWxsTGlua0luZm8t
PmNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpDYWxsOworICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5jb2RlT3JpZ2luID0gc3R1YkluZm8uY29kZU9yaWdpbjsKKyAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+Y2FsbGVlR1BSID0gbG9hZGVkVmFsdWVHUFI7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lOworICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBUaGVyZSBpcyBhICd0aGlzJyBhcmd1bWVudCBidXQgbm90aGluZyBlbHNlLgorICAg
ICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbWV0ZXJzID0gMTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gR2V0IHRoZSBnZXR0ZXI7IGlmIHRoZXJlIGFpbid0IG9uZSB0aGVuIHRo
ZSByZXN1bHQgaXMganNVbmRlZmluZWQoKS4KKyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cigK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhsb2FkZWRWYWx1ZUdQUiwg
R2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSwKKyAgICAgICAgICAgICAgICBsb2FkZWRW
YWx1ZUdQUik7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByZXR1cm5VbmRlZmlu
ZWQgPSBzdHViSml0LmJyYW5jaFRlc3RQdHIoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIGxvYWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5z
aWduZWQgbnVtYmVyT2ZSZWdzRm9yQ2FsbCA9CisgICAgICAgICAgICAgICAgSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZSArIG51bWJlck9mUGFyYW1ldGVyczsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgdW5zaWduZWQgYWxpZ25lZE51bWJlck9mTmVlZGVkUmVncyA9CisgICAgICAgICAg
ICAgICAgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCks
IG51bWJlck9mUmVnc0ZvckNhbGwpOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25l
ZCBhbGlnbmVkTnVtYmVyT2ZOZWVkZWRCeXRlcyA9CisgICAgICAgICAgICAgICAgYWxpZ25lZE51
bWJlck9mTmVlZGVkUmVncyAqIHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHN0dWJKaXQuc3ViUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoCisgICAgICAgICAgICAgICAgICAgIGFsaWduZWROdW1iZXJPZk5lZWRlZEJ5
dGVzIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBjYWxsZWVGcmFtZSA9IE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwKKyAgICAgICAgICAgICAgICAtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3R1YkppdC5zdG9y
ZTMyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobnVtYmVy
T2ZQYXJhbWV0ZXJzKSwKKyAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KAor
ICAgICAgICAgICAgICAgICAgICBKU1N0YWNrOjpBcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIFBheWxvYWRPZmZzZXQpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3R1Ykpp
dC5zdG9yZUNlbGwoCisgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIsIGNhbGxlZUZyYW1l
LndpdGhPZmZzZXQoSlNTdGFjazo6Q2FsbGVlICogc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgICAg
ICAgICAgc3R1YkppdC5zdG9yZUNlbGwoCisgICAgICAgICAgICAgICAgYmFzZUdQUiwKKyAgICAg
ICAgICAgICAgICBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcikp
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd0Nh
c2UgPSBzdHViSml0LmJyYW5jaFB0cldpdGhQYXRjaCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIGxvYWRlZFZhbHVlR1BSLCBhZGRyZXNzT2ZMaW5rRnVuY3Rpb25D
aGVjaywKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGxvYWRlZFZhbHVlR1BSIGlzIGFscmVhZHkg
YnVybmVkLiBXZSBjYW4gcmV1c2UgaXQuIEZyb20gaGVyZSBvbiB3ZSBhc3N1bWUgdGhhdAorICAg
ICAgICAgICAgLy8gYW55IHZvbGF0aWxlIHJlZ2lzdGVyIHdpbGwgYmUgY2xvYmJlcmVkIGFueXdh
eS4KKyAgICAgICAgICAgIHN0dWJKaXQubG9hZFB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhsb2FkZWRWYWx1ZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29w
ZUNoYWluKCkpLAorICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAg
IHN0dWJKaXQuc3RvcmVDZWxsKAorICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSLCBjYWxs
ZWVGcmFtZS53aXRoT2Zmc2V0KEpTU3RhY2s6OlNjb3BlQ2hhaW4gKiBzaXplb2YoUmVnaXN0ZXIp
KSk7CisgICAgICAgICAgICBmYXN0UGF0aENhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHN0dWJKaXQuYWRkUHRyKAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoCisgICAgICAgICAgICAgICAgICAgIGFsaWduZWRO
dW1iZXJPZk5lZWRlZEJ5dGVzIC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBkb25lLmFwcGVuZChzdHViSml0Lmp1bXAoKSk7CisgICAgICAgICAg
ICBzbG93Q2FzZS5saW5rKCZzdHViSml0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3R1
YkppdC5tb3ZlKGxvYWRlZFZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7CisjaWYgVVNFKEpTVkFM
VUUzMl82NCkKKyAgICAgICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjpyZWdUMSk7CisjZW5kaWYKKyAgICAg
ICAgICAgIHN0dWJKaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlu
a0luZm8uZ2V0KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICBzbG93UGF0aENhbGwg
PSBzdHViSml0Lm5lYXJDYWxsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0dWJKaXQu
YWRkUHRyKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoCisg
ICAgICAgICAgICAgICAgICAgIGFsaWduZWROdW1iZXJPZk5lZWRlZEJ5dGVzIC0gc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBkb25lLmFwcGVuZChz
dHViSml0Lmp1bXAoKSk7CisgICAgICAgICAgICByZXR1cm5VbmRlZmluZWQubGluaygmc3R1Ykpp
dCk7CisgICAgICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgc3R1Ykpp
dC5tb3ZlKAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgcmVzdWx0R1BSKTsKKyNlbHNlCisgICAgICAg
ICAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpV
bmRlZmluZWRUYWcpLCByZXN1bHRUYWdHUFIpOworICAgICAgICAgICAgc3R1YkppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCksIHJlc3VsdEdQUik7CisjZW5kaWYKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgZG9uZS5saW5rKCZzdHViSml0KTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIEVuY29kZWRKU1ZhbHVlICgqR2V0VmFsdWVGdW5jKShFeGVjU3Rh
dGUqLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKTsKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMzIxLDQ0ICs0NDIsNTMgQEAgc3RhdGlj
IHZvaWQgZ2VuZXJhdGVHZXRCeUlkU3R1YigKICNlbHNlCiAgICAgICAgICAgICBzdHViSml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShiYXNlRm9yQWNjZXNzR1BSLCBiYXNlR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihwcm9wZXJ0eU5hbWUuaW1wbCgpKSk7CiAjZW5kaWYKLSAgICAgICAg
ICAgIG9wZXJhdGlvbkZ1bmN0aW9uID0gRnVuY3Rpb25QdHIoc2xvdC5jdXN0b21HZXR0ZXIoKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsICZ2bS0+dG9wQ2FsbEZyYW1lKTsKIAotICAgICAgICAvLyBOZWVkIHRvIG1h
a2Ugc3VyZSB0aGF0IHdoZW5ldmVyIHRoaXMgY2FsbCBpcyBtYWRlIGluIHRoZSBmdXR1cmUsIHdl
IHJlbWVtYmVyIHRoZQotICAgICAgICAvLyBwbGFjZSB0aGF0IHdlIG1hZGUgaXQgZnJvbS4gSXQg
anVzdCBzbyBoYXBwZW5zIHRvIGJlIHRoZSBwbGFjZSB0aGF0IHdlIGFyZSBhdAotICAgICAgICAv
LyByaWdodCBub3chCi0gICAgICAgIHN0dWJKaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKGV4ZWMtPmxvY2F0aW9uQXNSYXdCaXRzKCkpLAotICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSkpOwotICAgICAgICBzdHViSml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCAmdm0tPnRvcENhbGxGcmFtZSk7CisgICAgICAgICAgICBvcGVyYXRpb25GdW5j
dGlvbiA9IEZ1bmN0aW9uUHRyKHNsb3QuY3VzdG9tR2V0dGVyKCkpOwogCi0gICAgICAgIG9wZXJh
dGlvbkNhbGwgPSBzdHViSml0LmNhbGwoKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbkNhbGwgPSBz
dHViSml0LmNhbGwoKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzdHViSml0Lm1vdmUo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdEdQUik7CisgICAgICAgICAgICBzdHViSml0
Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdEdQUik7CiAjZWxzZQotICAgICAg
ICBzdHViSml0LnNldHVwUmVzdWx0cyhyZXN1bHRHUFIsIHJlc3VsdFRhZ0dQUik7CisgICAgICAg
ICAgICBzdHViSml0LnNldHVwUmVzdWx0cyhyZXN1bHRHUFIsIHJlc3VsdFRhZ0dQUik7CiAjZW5k
aWYKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9FeGNlcHRpb24gPSBzdHViSml0LmVt
aXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOwot
Ci0gICAgICAgIHN0dWJKaXQuc2V0dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHZtKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBoYW5kbGVyQ2Fs
bCA9IHN0dWJKaXQuY2FsbCgpOwotICAgICAgICBzdHViSml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRs
ZXIoKTsKLSAgICAgICAgCi0gICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJnN0dWJKaXQpOworICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9FeGNlcHRpb24gPSBzdHViSml0LmVtaXRF
eGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBzdHViSml0LnNldHVwQXJndW1lbnRzKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cih2bSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIGhhbmRsZXJDYWxsID0gc3R1YkppdC5jYWxsKCk7CisgICAgICAgICAgICBzdHViSml0
Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbm9F
eGNlcHRpb24ubGluaygmc3R1YkppdCk7CisgICAgICAgIH0KICAgICB9CiAgICAgZW1pdFJlc3Rv
cmVTY3JhdGNoKHN0dWJKaXQsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzY3JhdGNoR1BSLCBzdWNj
ZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgIAogICAgIGxpbmtSZXN0
b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZh
aWwsIGZhaWx1cmVDYXNlcywgc3VjY2Vzc0xhYmVsLCBzbG93Q2FzZUxhYmVsKTsKLSAgICBpZiAo
aXNBY2Nlc3NvcikgeworICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsKICAgICAg
ICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBvcGVyYXRpb25GdW5jdGlvbik7CiAg
ICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaGFuZGxlckNhbGwsIGxvb2t1cEV4Y2VwdGlvbkhhbmRs
ZXIpOworICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKSB7CisgICAgICAg
IGNhbGxMaW5rSW5mby0+aG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJD
YWxsKGZhc3RQYXRoQ2FsbCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+aG90UGF0aEJlZ2luID0g
cGF0Y2hCdWZmZXIubG9jYXRpb25PZihhZGRyZXNzT2ZMaW5rRnVuY3Rpb25DaGVjayk7CisgICAg
ICAgIGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uID0gcGF0Y2hCdWZmZXIubG9jYXRp
b25PZk5lYXJDYWxsKHNsb3dQYXRoQ2FsbCk7CisKKyAgICAgICAgVGh1bmtHZW5lcmF0b3IgZ2Vu
ZXJhdG9yID0gbGlua1RodW5rR2VuZXJhdG9yRm9yKAorICAgICAgICAgICAgQ29kZUZvckNhbGws
IFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpOworICAgICAgICBwYXRjaEJ1ZmZlci5s
aW5rKAorICAgICAgICAgICAgc2xvd1BhdGhDYWxsLCBDb2RlTG9jYXRpb25MYWJlbCh2bS0+Z2V0
Q1RJU3R1YihnZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgIH0KICAgICAKLSAgICBzdHViUm91dGlu
ZSA9IEZJTkFMSVpFX0NPREVfRk9SX0dDX0FXQVJFX1NUVUIoCi0gICAgICAgIGV4ZWMtPmNvZGVC
bG9jaygpLCBwYXRjaEJ1ZmZlciwgdHJ1ZSwgbnVsbHB0ciwKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgY29kZSA9IEZJTkFMSVpFX0NPREVfRk9SKAorICAgICAgICBleGVjLT5jb2RlQmxvY2so
KSwgcGF0Y2hCdWZmZXIsCiAgICAgICAgICgiR2V0IGFjY2VzcyBzdHViIGZvciAlcywgcmV0dXJu
IHBvaW50ICVwIiwKICAgICAgICAgICAgIHRvQ1N0cmluZygqZXhlYy0+Y29kZUJsb2NrKCkpLmRh
dGEoKSwgc3VjY2Vzc0xhYmVsLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAgICAKKyAgICBpZiAo
c2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKQorICAgICAgICBzdHViUm91dGluZSA9IGFkb3B0UmVm
KG5ldyBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZShjb2RlLCAqdm0sIHN0ZDo6bW92ZShjYWxs
TGlua0luZm8pKSk7CisgICAgZWxzZQorICAgICAgICBzdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0
dWJSb3V0aW5lKGNvZGUsICp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgdHJ1ZSk7
CiB9CiAKIHN0YXRpYyBib29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDE2NjIx
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEdldHRlclNldHRlclR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkp
OwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
R2V0dGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihH
ZXR0ZXJTZXR0ZXIsIG1fZ2V0dGVyKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZlNldHRlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2V0dGVyU2V0dGVyLCBtX3NldHRlcik7CisgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIHByaXZhdGU6Cg==
</data>
<flag name="review"
          id="252019"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>