<?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>179639</bug_id>
          
          <creation_ts>2017-11-13 15:21:11 -0800</creation_ts>
          <short_desc>We need to set topCallFrame when calling Wasm::Memory::grow from the JIT</short_desc>
          <delta_ts>2017-11-14 01:05:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1371112</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-13 15:21:11 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371114</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-13 15:22:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/35513018&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371157</commentid>
    <comment_count>2</comment_count>
      <attachid>326822</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-13 16:40:23 -0800</bug_when>
    <thetext>Created attachment 326822
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371162</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-13 16:42:31 -0800</bug_when>
    <thetext>Attachment 326822 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmInstance.h:47:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/wasm/WasmInstance.h:47:  The parameter name &quot;module&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/wasm/WasmInstance.h:47:  The parameter name &quot;storeTopCallFrame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/wasm/WasmInstance.h:115:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 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>1371166</commentid>
    <comment_count>4</comment_count>
      <attachid>326822</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-13 16:49:15 -0800</bug_when>
    <thetext>Comment on attachment 326822
patch

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

r=me

&gt; Source/JavaScriptCore/wasm/WasmInstance.cpp:56
&gt; +Ref&lt;Instance&gt; Instance::create(Context* context, Ref&lt;Module&gt;&amp;&amp; module, EntryFrame** topEntryFramePointer, StoreTopCallFrameCallback storeTopCallFrame)

Make it &amp;&amp; here too, and WTFMove below.

&gt; Source/JavaScriptCore/wasm/WasmInstance.h:47
&gt; +    static Ref&lt;Instance&gt; create(Context* context, Ref&lt;Module&gt;&amp;&amp; module, EntryFrame** topEntryFramePointer, StoreTopCallFrameCallback storeTopCallFrame = nullptr);

&amp;&amp; here too. Why nullptr? Seems nicer to force passing a no-op function when appropriate, otherwise it&apos;s not obvious that you&apos;re opting out.

&gt; Source/JavaScriptCore/wasm/WasmInstance.h:110
&gt; +        if (m_storeTopCallFrame)

I&apos;d make this never nullptr.

&gt; Source/JavaScriptCore/wasm/WasmInstance.h:131
&gt; +    WTF::Function&lt;void(void*)&gt; m_storeTopCallFrame;

StoreTopCallFrameCallback from above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371169</commentid>
    <comment_count>5</comment_count>
      <attachid>326825</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-13 16:54:49 -0800</bug_when>
    <thetext>Created attachment 326825
patch for landing

With comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371170</commentid>
    <comment_count>6</comment_count>
      <attachid>326826</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-13 16:55:40 -0800</bug_when>
    <thetext>Created attachment 326826
patch for landing

Fix reviewed by OOPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371173</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-13 16:57:20 -0800</bug_when>
    <thetext>Attachment 326826 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmInstance.h:114:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 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>1371189</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-13 17:41:43 -0800</bug_when>
    <thetext>Looks like my test is taking too long on slow memory mode. Weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371193</commentid>
    <comment_count>9</comment_count>
      <attachid>326826</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-13 17:52:16 -0800</bug_when>
    <thetext>Comment on attachment 326826
patch for landing

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

New failing tests:
wasm.yaml/wasm/function-tests/grow-memory-cause-gc.js.wasm-slow-memory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371248</commentid>
    <comment_count>10</comment_count>
      <attachid>326848</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-13 20:51:12 -0800</bug_when>
    <thetext>Created attachment 326848
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371327</commentid>
    <comment_count>11</comment_count>
      <attachid>326848</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-14 01:05:36 -0800</bug_when>
    <thetext>Comment on attachment 326848
patch for landing

Clearing flags on attachment: 326848

Committed r224810: &lt;https://trac.webkit.org/changeset/224810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371328</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-14 01:05:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326822</attachid>
            <date>2017-11-13 16:40:23 -0800</date>
            <delta_ts>2017-11-13 16:54:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>16851</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjQ3OTIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE3LTExLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIG5lZWQgdG8gc2V0IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB3aGVu
IGNhbGxpbmcgV2FzbTo6TWVtb3J5Ojpncm93IGZyb20gdGhlIEpJVAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NjM5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zNTUxMzAxOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvZ3Jvdy1tZW1vcnktY2F1c2UtZ2MuanM6
IEFkZGVkLgorICAgICAgICAoZXNjYXBlKToKKyAgICAgICAgKGkuZnVuYyk6CisKIDIwMTctMTEt
MTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtb3JlIG92
ZXJmbG93IGNoZWNrIGJvb2sta2VlcGluZyBmb3IgTWFya2VkQXJndW1lbnRCdWZmZXIuCkluZGV4
OiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvZ3Jvdy1tZW1vcnktY2F1c2UtZ2MuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2dyb3ctbWVtb3J5LWNhdXNl
LWdjLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9ncm93
LW1lbW9yeS1jYXVzZS1nYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACitpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9t
ICcuLi9hc3NlcnQuanMnOworCitmdW5jdGlvbiBlc2NhcGUoKXt9Citub0lubGluZShlc2NhcGUp
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICBjb25zdCBtYXggPSAxMDI0
KjI1OworICAgIGNvbnN0IG1lbW9yeURlc2NyaXB0aW9uID0ge2luaXRpYWw6IDAsIG1heGltdW06
IG1heH07CisKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5U
eXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImlt
cCIsICJmdW5jIiwge3BhcmFtczogW10sIHJldDogInZvaWQifSkKKyAgICAgICAgICAgIC5NZW1v
cnkoImltcCIsICJtZW1vcnkiLCBtZW1vcnlEZXNjcmlwdGlvbikKKyAgICAgICAgLkVuZCgpCisg
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAg
LkZ1bmN0aW9uKCJmb28iKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFyYW1zOiBbXSwgcmV0OiAiaTMyIn0pCisgICAgICAg
ICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisg
ICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEp
CisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0
KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNv
bnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkz
MkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAg
LkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAg
ICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkNhbGwoMikKKyAgICAgICAgICAgICAg
ICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuR3Jvd01lbW9yeSgwKQorICAgICAgICAg
ICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuRnVuY3Rp
b24oImJhciIsIHtwYXJhbXM6IFsiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIl0sIHJldDogInZvaWQifSkKKyAgICAgICAgICAgICAgICAuQ2FsbCgw
KQorICAgICAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAg
IC5FbmQoKTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsK
KyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29u
c3QgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNjcmlwdGlvbik7CisK
KyAgICBmdW5jdGlvbiBmdW5jKCkgeyB9CisKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHttZW1vcnksIGZ1bmN9fSk7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBtYXg7ICsraSkgeworICAgICAgICBpbnN0YW5jZS5leHBvcnRzLmZv
bygpOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI0
NzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM2IEBACisyMDE3LTExLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIG5lZWQgdG8gc2V0IHRvcENhbGxGcmFtZSB3aGVuIGNhbGxpbmcg
V2FzbTo6TWVtb3J5Ojpncm93IGZyb20gdGhlIEpJVAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NjM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NTUxMzAxOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDYWxsaW5nIFdhc206Ok1lbW9yeTo6Z3JvdyBmcm9tIHRoZSBKSVQgbWF5IGNhdXNlIHVzIHRv
IEdDLiBXaGVuIHdlIEdDLCB3ZSB3aWxsCisgICAgICAgIHdhbGsgdGhlIHN0YWNrIGZvciBTaGFk
b3dDaGlja2VuIChhbmQgbWF5YmUgb3RoZXIgdGhpbmdzKS4gV2Ugd2VyZW4ndCB1cGRhdGluZwor
ICAgICAgICB0b3BDYWxsRnJhbWUgd2hlbiBjYWxsaW5nIGdyb3cgZnJvbSB0aGUgV2FzbSBKSVQu
IFRoaXMgd291bGQgY2F1c2UgdGhlIEdDIHRvCisgICAgICAgIHVzZSBzdGFsZSB0b3BDYWxsRnJh
bWUgYml0cyBpbiBWTSwgb2Z0ZW4gbGVhZGluZyB0byBjcmFzaGVzLiBUaGlzIHBhdGNoIGZpeGVz
CisgICAgICAgIHRoaXMgYnVnIGJ5IGdpdmluZyBXYXNtOjpJbnN0YW5jZSBhIGxhbWJkYSB0aGF0
IGlzIGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gc3RvcmUKKyAgICAgICAgdGhlIHRvcENhbGxGcmFt
ZS4gVXNlcnMgb2YgV2FzbTo6SW5zdGFuY2UgY2FuIHByb3ZpZGUgYSBmdW5jdGlvbiB0byBkbyB0
aGlzIGFjdGlvbi4KKyAgICAgICAgQ3VycmVudGx5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgcGFz
c2VzIGluIGEgbGFtYmRhIHRoYXQgc3RvcmVzIHRvCisgICAgICAgIFZNLnRvcENhbGxGcmFtZS4K
KworICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAqIHdhc20v
V2FzbUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6Okluc3RhbmNl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2Fz
bS9XYXNtSW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OnN0b3JlVG9w
Q2FsbEZyYW1lKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6
CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oOgorICAgICAgICAqIHdhc20vanMvV2Fz
bVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbik6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjppbnN0YW50aWF0ZSk6
CisKIDIwMTctMTEtMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2UgdGhlIGpzYyBzaGVsbCBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRlcigpIGZ1bmN0aW9u
IG1vcmUgcm9idXN0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjI0NzczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTgs
NyArNTU4LDkgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRVbnJlYWNoYWJsZSgpIC0+IAogCiBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4
cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBpbnQzMl90ICgq
Z3Jvd01lbW9yeSkoSW5zdGFuY2UqLCBpbnQzMl90KSA9IFtdIChJbnN0YW5jZSogaW5zdGFuY2Us
IGludDMyX3QgZGVsdGEpIC0+IGludDMyX3QgeworICAgIGludDMyX3QgKCpncm93TWVtb3J5KSh2
b2lkKiwgSW5zdGFuY2UqLCBpbnQzMl90KSA9IFtdICh2b2lkKiBjYWxsRnJhbWUsIEluc3RhbmNl
KiBpbnN0YW5jZSwgaW50MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CisgICAgICAgIGluc3RhbmNl
LT5zdG9yZVRvcENhbGxGcmFtZShjYWxsRnJhbWUpOworCiAgICAgICAgIGlmIChkZWx0YSA8IDAp
CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTU3MSw2ICs1NzMsNyBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzCiAgICAgICAgICAgICBjYXNlIE1lbW9yeTo6
R3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5OgogICAgICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZ3Jvd24udmFsdWUoKS5wYWdlQ291bnQoKTsK
QEAgLTU3OCw3ICs1ODEsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhw
cmVzCiAKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KG1fcHJvYywgSW50MzIsIG9yaWdpbigpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4o
Z3Jvd01lbW9yeSkpLAotICAgICAgICBpbnN0YW5jZVZhbHVlKCksIGRlbHRhKTsKKyAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9p
bnRlciwgb3JpZ2luKCkpLCBpbnN0YW5jZVZhbHVlKCksIGRlbHRhKTsKIAogICAgIHJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9w
cm9jLCBtX2N1cnJlbnRCbG9jayk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21JbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUluc3RhbmNlLmNwcAkocmV2aXNpb24gMjI0NzczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMjAgKzQx
LDIxIEBAIHNpemVfdCBnbG9iYWxNZW1vcnlCeXRlU2l6ZShNb2R1bGUmIG1vZHUKIH0KIH0KIAot
SW5zdGFuY2U6Okluc3RhbmNlKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxl
LCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIpCitJbnN0YW5jZTo6SW5zdGFuY2Uo
Q29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BF
bnRyeUZyYW1lUG9pbnRlciwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3JlVG9wQ2Fs
bEZyYW1lKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX21vZHVsZShXVEZNb3Zl
KG1vZHVsZSkpCiAgICAgLCBtX2dsb2JhbHMoTWFsbG9jUHRyPHVpbnQ2NF90Pjo6bWFsbG9jKGds
b2JhbE1lbW9yeUJ5dGVTaXplKG1fbW9kdWxlLmdldCgpKSkpCiAgICAgLCBtX3RvcEVudHJ5RnJh
bWVQb2ludGVyKHRvcEVudHJ5RnJhbWVQb2ludGVyKQorICAgICwgbV9zdG9yZVRvcENhbGxGcmFt
ZShXVEZNb3ZlKHN0b3JlVG9wQ2FsbEZyYW1lKSkKICAgICAsIG1fbnVtSW1wb3J0RnVuY3Rpb25z
KG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKSkKIHsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1JbXBvcnRGdW5jdGlvbnM7ICsraSkK
ICAgICAgICAgbmV3IChpbXBvcnRGdW5jdGlvbkluZm8oaSkpIEltcG9ydEZ1bmN0aW9uSW5mbygp
OwogfQogCi1SZWY8SW5zdGFuY2U+IEluc3RhbmNlOjpjcmVhdGUoQ29udGV4dCogY29udGV4dCwg
UmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlcikK
K1JlZjxJbnN0YW5jZT4gSW5zdGFuY2U6OmNyZWF0ZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9k
dWxlPiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHRvcEVudHJ5RnJhbWVQb2ludGVyLCBTdG9yZVRv
cENhbGxGcmFtZUNhbGxiYWNrIHN0b3JlVG9wQ2FsbEZyYW1lKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9k
dWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpKSkgSW5zdGFuY2UoY29udGV4
dCwgV1RGTW92ZShtb2R1bGUpLCB0b3BFbnRyeUZyYW1lUG9pbnRlcikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+
bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpKSkgSW5zdGFuY2UoY29u
dGV4dCwgV1RGTW92ZShtb2R1bGUpLCB0b3BFbnRyeUZyYW1lUG9pbnRlciwgV1RGTW92ZShzdG9y
ZVRvcENhbGxGcmFtZSkpKTsKIH0KIAogSW5zdGFuY2U6On5JbnN0YW5jZSgpIHsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgJKHJldmlzaW9uIDIyNDc3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw3ICs0Miw5IEBAIHN0cnVjdCBDb250ZXh0OwogCiBjbGFzcyBJbnN0YW5j
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8SW5zdGFuY2U+IGNyZWF0ZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxl
PiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHRvcEVudHJ5RnJhbWVQb2ludGVyKTsKKyAgICB1c2lu
ZyBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQqKT47
CisKKyAgICBzdGF0aWMgUmVmPEluc3RhbmNlPiBjcmVhdGUoQ29udGV4dCogY29udGV4dCwgUmVm
PE1vZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlciwgU3Rv
cmVUb3BDYWxsRnJhbWVDYWxsYmFjayBzdG9yZVRvcENhbGxGcmFtZSA9IG51bGxwdHIpOwogCiAg
ICAgdm9pZCBmaW5hbGl6ZUNyZWF0aW9uKHZvaWQqIG93bmVyLCBSZWY8Q29kZUJsb2NrPiYmIGNv
ZGVCbG9jaykKICAgICB7CkBAIC0xMDMsOCArMTA1LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1bmN0aW9uTnVtKSB7
IHJldHVybiBvZmZzZXRPZlRhaWwoKSArIGltcG9ydEZ1bmN0aW9uTnVtICogc2l6ZW9mKEltcG9y
dEZ1bmN0aW9uSW5mbykgKyBPQkpFQ1RfT0ZGU0VUT0YoSW1wb3J0RnVuY3Rpb25JbmZvLCBpbXBv
cnRGdW5jdGlvbik7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiBpbXBvcnRGdW5jdGlv
bih1bnNpZ25lZCBpbXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxU
Kj4oJmltcG9ydEZ1bmN0aW9uSW5mbyhpbXBvcnRGdW5jdGlvbk51bSktPmltcG9ydEZ1bmN0aW9u
KTsgfQogCisgICAgdm9pZCBzdG9yZVRvcENhbGxGcmFtZSh2b2lkKiBjYWxsRnJhbWUpCisgICAg
eworICAgICAgICBpZiAobV9zdG9yZVRvcENhbGxGcmFtZSkKKyAgICAgICAgICAgIG1fc3RvcmVU
b3BDYWxsRnJhbWUoY2FsbEZyYW1lKTsKKyAgICB9CisKIHByaXZhdGU6Ci0gICAgSW5zdGFuY2Uo
Q29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiwgRW50cnlGcmFtZSoqKTsKKyAgICBJbnN0
YW5jZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmLCBFbnRyeUZyYW1lKiosIFN0b3Jl
VG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gbnVtSW1wb3J0RnVuY3Rpb25zKQogICAgIHsKQEAgLTEy
MCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIE1hbGxvY1B0cjx1aW50NjRfdD4gbV9nbG9iYWxz
OwogICAgIEVudHJ5RnJhbWUqKiBtX3RvcEVudHJ5RnJhbWVQb2ludGVyIHsgbnVsbHB0ciB9Owog
ICAgIHZvaWQqIG1fY2FjaGVkU3RhY2tMaW1pdCB7IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50cHRyX3Q+OjptYXgoKSkgfTsKLSAgICAKKyAgICBXVEY6OkZ1bmN0
aW9uPHZvaWQodm9pZCopPiBtX3N0b3JlVG9wQ2FsbEZyYW1lOwogICAgIHVuc2lnbmVkIG1fbnVt
SW1wb3J0RnVuY3Rpb25zIHsgMCB9OwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCShyZXZpc2lv
biAyMjQ3NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmZpbmFsaXplQ3JlYQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiB9CiAKLUpTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlN
b2R1bGUqIGpzTW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqIGluc3Rh
bmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6SW5zdGFuY2U+JiYgaW5zdGFuY2UpCitKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0
YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBqc01vZHVsZSwgSlNPYmplY3QqIGltcG9y
dE9iamVjdCwgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206Ok1vZHVsZT4m
JiBtb2R1bGUpCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwpAQCAtMTYzLDggKzE2MywxNCBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIEpTV2ViQXNzZW1i
bHlJbnN0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIAog
ICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2UgPSBtb2R1bGVSZWNv
cmQtPmdldE1vZHVsZU5hbWVzcGFjZShleGVjKTsKKworICAgIGF1dG8gc3RvcmVUb3BDYWxsRnJh
bWUgPSBbJnZtXSAodm9pZCogdG9wQ2FsbEZyYW1lKSB7CisgICAgICAgIHZtLnRvcENhbGxGcmFt
ZSA9IGJpdHdpc2VfY2FzdDxFeGVjU3RhdGUqPih0b3BDYWxsRnJhbWUpOworICAgIH07CisKICAg
ICAvLyBGSVhNRTogVGhlc2Ugb2JqZWN0cyBjb3VsZCBiZSBwcmV0dHkgYmlnIHdlIHNob3VsZCB0
cnkgdG8gdGhyb3cgT09NIGhlcmUuCi0gICAgYXV0byoganNJbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4odm0uaGVhcCkpIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSh2bSwgaW5zdGFuY2VTdHJ1Y3R1cmUsIFdURk1vdmUoaW5zdGFuY2UpKTsK
KyAgICBhdXRvKiBqc0luc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJB
c3NlbWJseUluc3RhbmNlPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUluc3RhbmNlKHZtLCBpbnN0
YW5jZVN0cnVjdHVyZSwgCisgICAgICAgIFdhc206Okluc3RhbmNlOjpjcmVhdGUoJnZtLndhc21D
b250ZXh0LCBXVEZNb3ZlKG1vZHVsZSksICZ2bS50b3BFbnRyeUZyYW1lLCBXVEZNb3ZlKHN0b3Jl
VG9wQ2FsbEZyYW1lKSkpOwogICAgIGpzSW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBqc01v
ZHVsZSwgbW9kdWxlTmFtZXNwYWNlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIG51bGxwdHIpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAkocmV2aXNpb24gMjI0NzczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDog
cHVibGljIEpTRAogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFz
ZTsKIAotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGNyZWF0ZShWTSYsIEV4ZWNT
dGF0ZSosIEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1
Y3R1cmUqLCBSZWY8V2FzbTo6SW5zdGFuY2U+JiYpOworICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqIGNyZWF0ZShWTSYsIEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBK
U09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqLCBSZWY8V2FzbTo6TW9kdWxlPiYmKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHJldmlzaW9uIDIyNDc3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjM4LDI1ICs2MzgsMjUgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLCBC
aW5kaW5nRgogCiB2b2lkKiB3YXNtVG9KU0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFdhc206
OkV4Y2VwdGlvblR5cGUgdHlwZSwgSW5zdGFuY2UqIHdhc21JbnN0YW5jZSkKIHsKKyAgICB3YXNt
SW5zdGFuY2UtPnN0b3JlVG9wQ2FsbEZyYW1lKGV4ZWMpOwogICAgIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogaW5zdGFuY2UgPSB3YXNtSW5zdGFuY2UtPm93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZT4oKTsKLSAgICBWTSogdm0gPSBpbnN0YW5jZS0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKIAogICAgIHsKLSAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSgqdm0pOwotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW5zdGFu
Y2UtPmdsb2JhbE9iamVjdCgpOworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgICAgICBKU09iamVjdCogZXJyb3I7CiAgICAgICAgIGlmICh0
eXBlID09IEV4Y2VwdGlvblR5cGU6OlN0YWNrT3ZlcmZsb3cpCiAgICAgICAgICAgICBlcnJvciA9
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBlcnJvciA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0
ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1
cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhjZXB0aW9uVHlwZSh0eXBlKSk7CisgICAgICAg
ICAgICBlcnJvciA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwg
Z2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjpl
cnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgIH0KIAotICAgIGdlbmVyaWNVbndpbmQo
dm0sIGV4ZWMpOwotICAgIEFTU0VSVCghIXZtLT5jYWxsRnJhbWVGb3JDYXRjaCk7Ci0gICAgQVNT
RVJUKCEhdm0tPnRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKKyAgICBnZW5lcmljVW53aW5kKCZ2
bSwgZXhlYyk7CisgICAgQVNTRVJUKCEhdm0uY2FsbEZyYW1lRm9yQ2F0Y2gpOworICAgIEFTU0VS
VCghIXZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKICAgICAvLyBGSVhNRTogV2UgY291bGQg
bWFrZSB0aGlzIGJldHRlcjoKICAgICAvLyBUaGlzIGlzIGEgdG90YWwgaGFjaywgYnV0IHRoZSBs
bGludCAoYm90aCBvcF9jYXRjaCBhbmQgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb24pCiAgICAgLy8g
cmVxdWlyZSBhIGNlbGwgaW4gdGhlIGNhbGxlZSBmaWVsZCB0byBsb2FkIHRoZSBWTS4gKFRoZSBi
YXNlbGluZSBKSVQgZG9lcyBub3QgcmVxdWlyZQpAQCAtNjY1LDcgKzY2NSw3IEBAIHZvaWQqIHdh
c21Ub0pTRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywKICAgICAvLyB0byB0aGUgZXhjZXB0aW9u
IGhhbmRsZXIuIElmIHdlIGRpZCB0aGlzLCB3ZSBjb3VsZCByZW1vdmUgdGhpcyB0ZXJyaWJsZSBo
YWNrLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA0
NDAKICAgICBiaXR3aXNlX2Nhc3Q8dWludDY0X3QqPihleGVjKVtDYWxsRnJhbWVTbG90OjpjYWxs
ZWVdID0gYml0d2lzZV9jYXN0PHVpbnQ2NF90PihpbnN0YW5jZS0+d2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKCkpOwotICAgIHJldHVybiB2bS0+dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3c7CisgICAgcmV0
dXJuIHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93OwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6V2FzbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAy
MjQ3NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3Rh
bmNlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBTdHJ1Y3R1cmUqIGluc3Rh
bmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
ZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2Vi
QXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBtb2R1bGUsIGltcG9ydE9iamVjdCwg
aW5zdGFuY2VTdHJ1Y3R1cmUsIFdhc206Okluc3RhbmNlOjpjcmVhdGUoJnZtLndhc21Db250ZXh0
LCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSwgJnZtLnRvcEVudHJ5RnJhbWUp
KTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBpbnN0YW5jZVN0
cnVjdHVyZSwgUmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUoKSkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVh
dGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0ud2FzbUNvbnRl
eHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIs
ICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjI0NzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQg
aW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdAogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKICAgICAvLyBJbiBvcmRlciB0byBhdm9pZCBwb3RlbnRpYWxseSBy
ZWNvbXBpbGluZyBhIG1vZHVsZS4gV2UgZmlyc3QgZ2F0aGVyIGFsbCB0aGUgaW1wb3J0L21lbW9y
eSBpbmZvcm1hdGlvbiBwcmlvciB0byBjb21waWxpbmcgY29kZS4KLSAgICBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4
ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldl
YkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwgV2FzbTo6SW5zdGFuY2U6OmNyZWF0ZSgmdm0u
d2FzbUNvbnRleHQsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpLCAmdm0udG9w
RW50cnlGcmFtZSkpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxlLCBpbXBvcnRPYmplY3Qs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVy
ZSgpLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKSk7CiAKICAgICBW
ZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsK
</data>
<flag name="review"
          id="346094"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326825</attachid>
            <date>2017-11-13 16:54:49 -0800</date>
            <delta_ts>2017-11-13 16:55:40 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>16769</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjQ3OTIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE3LTExLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIG5lZWQgdG8gc2V0IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB3aGVu
IGNhbGxpbmcgV2FzbTo6TWVtb3J5Ojpncm93IGZyb20gdGhlIEpJVAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NjM5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zNTUxMzAxOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvZ3Jvdy1tZW1vcnktY2F1c2UtZ2MuanM6
IEFkZGVkLgorICAgICAgICAoZXNjYXBlKToKKyAgICAgICAgKGkuZnVuYyk6CisKIDIwMTctMTEt
MTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtb3JlIG92
ZXJmbG93IGNoZWNrIGJvb2sta2VlcGluZyBmb3IgTWFya2VkQXJndW1lbnRCdWZmZXIuCkluZGV4
OiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvZ3Jvdy1tZW1vcnktY2F1c2UtZ2MuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2dyb3ctbWVtb3J5LWNhdXNl
LWdjLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9ncm93
LW1lbW9yeS1jYXVzZS1nYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACitpbXBv
cnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9t
ICcuLi9hc3NlcnQuanMnOworCitmdW5jdGlvbiBlc2NhcGUoKXt9Citub0lubGluZShlc2NhcGUp
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICBjb25zdCBtYXggPSAxMDI0
KjI1OworICAgIGNvbnN0IG1lbW9yeURlc2NyaXB0aW9uID0ge2luaXRpYWw6IDAsIG1heGltdW06
IG1heH07CisKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5U
eXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImlt
cCIsICJmdW5jIiwge3BhcmFtczogW10sIHJldDogInZvaWQifSkKKyAgICAgICAgICAgIC5NZW1v
cnkoImltcCIsICJtZW1vcnkiLCBtZW1vcnlEZXNjcmlwdGlvbikKKyAgICAgICAgLkVuZCgpCisg
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAg
LkZ1bmN0aW9uKCJmb28iKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFyYW1zOiBbXSwgcmV0OiAiaTMyIn0pCisgICAgICAg
ICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisg
ICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEp
CisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0
KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNv
bnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkz
MkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAg
LkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAg
ICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkNhbGwoMikKKyAgICAgICAgICAgICAg
ICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuR3Jvd01lbW9yeSgwKQorICAgICAgICAg
ICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuRnVuY3Rp
b24oImJhciIsIHtwYXJhbXM6IFsiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkz
MiIsICJpMzIiLCAiaTMyIl0sIHJldDogInZvaWQifSkKKyAgICAgICAgICAgICAgICAuQ2FsbCgw
KQorICAgICAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAg
IC5FbmQoKTsKKworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsK
KyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29u
c3QgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNjcmlwdGlvbik7CisK
KyAgICBmdW5jdGlvbiBmdW5jKCkgeyB9CisKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHttZW1vcnksIGZ1bmN9fSk7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBtYXg7ICsraSkgeworICAgICAgICBpbnN0YW5jZS5leHBvcnRzLmZv
bygpOworICAgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI0
NzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM2IEBACisyMDE3LTExLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIG5lZWQgdG8gc2V0IHRvcENhbGxGcmFtZSB3aGVuIGNhbGxpbmcg
V2FzbTo6TWVtb3J5Ojpncm93IGZyb20gdGhlIEpJVAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NjM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NTUxMzAxOD4KKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAgICAgIENh
bGxpbmcgV2FzbTo6TWVtb3J5Ojpncm93IGZyb20gdGhlIEpJVCBtYXkgY2F1c2UgdXMgdG8gR0Mu
IFdoZW4gd2UgR0MsIHdlIHdpbGwKKyAgICAgICAgd2FsayB0aGUgc3RhY2sgZm9yIFNoYWRvd0No
aWNrZW4gKGFuZCBtYXliZSBvdGhlciB0aGluZ3MpLiBXZSB3ZXJlbid0IHVwZGF0aW5nCisgICAg
ICAgIHRvcENhbGxGcmFtZSB3aGVuIGNhbGxpbmcgZ3JvdyBmcm9tIHRoZSBXYXNtIEpJVC4gVGhp
cyB3b3VsZCBjYXVzZSB0aGUgR0MgdG8KKyAgICAgICAgdXNlIHN0YWxlIHRvcENhbGxGcmFtZSBi
aXRzIGluIFZNLCBvZnRlbiBsZWFkaW5nIHRvIGNyYXNoZXMuIFRoaXMgcGF0Y2ggZml4ZXMKKyAg
ICAgICAgdGhpcyBidWcgYnkgZ2l2aW5nIFdhc206Okluc3RhbmNlIGEgbGFtYmRhIHRoYXQgaXMg
Y2FsbGVkIHdoZW4gd2UgbmVlZCB0byBzdG9yZQorICAgICAgICB0aGUgdG9wQ2FsbEZyYW1lLiBV
c2VycyBvZiBXYXNtOjpJbnN0YW5jZSBjYW4gcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIGRvIHRoaXMg
YWN0aW9uLgorICAgICAgICBDdXJyZW50bHksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBwYXNzZXMg
aW4gYSBsYW1iZGEgdGhhdCBzdG9yZXMgdG8KKyAgICAgICAgVk0udG9wQ2FsbEZyYW1lLgorCisg
ICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgICogd2FzbS9XYXNt
SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL1dh
c21JbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6c3RvcmVUb3BDYWxs
RnJhbWUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9K
Uy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTRXhjZXB0aW9uKToKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omluc3RhbnRpYXRlKToKKwog
MjAxNy0xMS0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSB0aGUganNjIHNoZWxsIGxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVyKCkgZnVuY3Rpb24gbW9y
ZSByb2J1c3QuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjQ3NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1OCw3ICs1
NTgsOSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFVucmVhY2hhYmxlKCkgLT4gCiAKIGF1dG8g
QjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGludDMyX3QgKCpncm93
TWVtb3J5KShJbnN0YW5jZSosIGludDMyX3QpID0gW10gKEluc3RhbmNlKiBpbnN0YW5jZSwgaW50
MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CisgICAgaW50MzJfdCAoKmdyb3dNZW1vcnkpKHZvaWQq
LCBJbnN0YW5jZSosIGludDMyX3QpID0gW10gKHZvaWQqIGNhbGxGcmFtZSwgSW5zdGFuY2UqIGlu
c3RhbmNlLCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICAgICAgaW5zdGFuY2UtPnN0
b3JlVG9wQ2FsbEZyYW1lKGNhbGxGcmFtZSk7CisKICAgICAgICAgaWYgKGRlbHRhIDwgMCkKICAg
ICAgICAgICAgIHJldHVybiAtMTsKIApAQCAtNTcxLDYgKzU3Myw3IEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXMKICAgICAgICAgICAgIGNhc2UgTWVtb3J5OjpHcm93
RmFpbFJlYXNvbjo6T3V0T2ZNZW1vcnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBncm93bi52YWx1ZSgpLnBhZ2VDb3VudCgpOwpAQCAt
NTc4LDcgKzU4MSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXMK
IAogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9w
cm9jLCBJbnQzMiwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93
TWVtb3J5KSksCi0gICAgICAgIGluc3RhbmNlVmFsdWUoKSwgZGVsdGEpOworICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVy
LCBvcmlnaW4oKSksIGluc3RhbmNlVmFsdWUoKSwgZGVsdGEpOwogCiAgICAgcmVzdG9yZVdlYkFz
c2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX3Byb2Ms
IG1fY3VycmVudEJsb2NrKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyMjQ3NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMCArNDEsMjEg
QEAgc2l6ZV90IGdsb2JhbE1lbW9yeUJ5dGVTaXplKE1vZHVsZSYgbW9kdQogfQogfQogCi1JbnN0
YW5jZTo6SW5zdGFuY2UoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBtb2R1bGUsIEVu
dHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlcikKK0luc3RhbmNlOjpJbnN0YW5jZShDb250
ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHRvcEVudHJ5
RnJhbWVQb2ludGVyLCBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrJiYgc3RvcmVUb3BDYWxsRnJh
bWUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbW9kdWxlKFdURk1vdmUobW9k
dWxlKSkKICAgICAsIG1fZ2xvYmFscyhNYWxsb2NQdHI8dWludDY0X3Q+OjptYWxsb2MoZ2xvYmFs
TWVtb3J5Qnl0ZVNpemUobV9tb2R1bGUuZ2V0KCkpKSkKICAgICAsIG1fdG9wRW50cnlGcmFtZVBv
aW50ZXIodG9wRW50cnlGcmFtZVBvaW50ZXIpCisgICAgLCBtX3N0b3JlVG9wQ2FsbEZyYW1lKFdU
Rk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUpKQogICAgICwgbV9udW1JbXBvcnRGdW5jdGlvbnMobV9t
b2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKQogewogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bUltcG9ydEZ1bmN0aW9uczsgKytpKQogICAg
ICAgICBuZXcgKGltcG9ydEZ1bmN0aW9uSW5mbyhpKSkgSW1wb3J0RnVuY3Rpb25JbmZvKCk7CiB9
CiAKLVJlZjxJbnN0YW5jZT4gSW5zdGFuY2U6OmNyZWF0ZShDb250ZXh0KiBjb250ZXh0LCBSZWY8
TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHRvcEVudHJ5RnJhbWVQb2ludGVyKQorUmVm
PEluc3RhbmNlPiBJbnN0YW5jZTo6Y3JlYXRlKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+
JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIsIFN0b3JlVG9wQ2Fs
bEZyYW1lQ2FsbGJhY2smJiBzdG9yZVRvcENhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZShtb2R1bGUtPm1vZHVs
ZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKSkpIEluc3RhbmNlKGNvbnRleHQs
IFdURk1vdmUobW9kdWxlKSwgdG9wRW50cnlGcmFtZVBvaW50ZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhhbGxvY2F0aW9uU2l6ZShtb2R1bGUtPm1v
ZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpKSkpIEluc3RhbmNlKGNvbnRl
eHQsIFdURk1vdmUobW9kdWxlKSwgdG9wRW50cnlGcmFtZVBvaW50ZXIsIFdURk1vdmUoc3RvcmVU
b3BDYWxsRnJhbWUpKSk7CiB9CiAKIEluc3RhbmNlOjp+SW5zdGFuY2UoKSB7IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCShyZXZpc2lvbiAyMjQ3NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsOSBAQCBzdHJ1Y3QgQ29udGV4dDsKIAogY2xhc3MgSW5zdGFuY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEluc3RhbmNlPiBjcmVhdGUoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4m
JiBtb2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlcik7CisgICAgdXNpbmcg
U3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCh2b2lkKik+Owor
CisgICAgc3RhdGljIFJlZjxJbnN0YW5jZT4gY3JlYXRlKENvbnRleHQqLCBSZWY8TW9kdWxlPiYm
LCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIsIFN0b3JlVG9wQ2FsbEZyYW1lQ2Fs
bGJhY2smJik7CiAKICAgICB2b2lkIGZpbmFsaXplQ3JlYXRpb24odm9pZCogb3duZXIsIFJlZjxD
b2RlQmxvY2s+JiYgY29kZUJsb2NrKQogICAgIHsKQEAgLTEwMyw4ICsxMDUsMTMgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihzaXplX3QgaW1wb3J0
RnVuY3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNldE9mVGFpbCgpICsgaW1wb3J0RnVuY3Rpb25OdW0g
KiBzaXplb2YoSW1wb3J0RnVuY3Rpb25JbmZvKSArIE9CSkVDVF9PRkZTRVRPRihJbXBvcnRGdW5j
dGlvbkluZm8sIGltcG9ydEZ1bmN0aW9uKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQq
IGltcG9ydEZ1bmN0aW9uKHVuc2lnbmVkIGltcG9ydEZ1bmN0aW9uTnVtKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PFQqPigmaW1wb3J0RnVuY3Rpb25JbmZvKGltcG9ydEZ1bmN0aW9uTnVtKS0+
aW1wb3J0RnVuY3Rpb24pOyB9CiAKKyAgICB2b2lkIHN0b3JlVG9wQ2FsbEZyYW1lKHZvaWQqIGNh
bGxGcmFtZSkKKyAgICB7CisgICAgICAgIG1fc3RvcmVUb3BDYWxsRnJhbWUoY2FsbEZyYW1lKTsK
KyAgICB9CisKIHByaXZhdGU6Ci0gICAgSW5zdGFuY2UoQ29udGV4dCogY29udGV4dCwgUmVmPE1v
ZHVsZT4mJiwgRW50cnlGcmFtZSoqKTsKKyAgICBJbnN0YW5jZShDb250ZXh0KiBjb250ZXh0LCBS
ZWY8TW9kdWxlPiYmLCBFbnRyeUZyYW1lKiosIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7
CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4g
bnVtSW1wb3J0RnVuY3Rpb25zKQogICAgIHsKQEAgLTEyMCw3ICsxMjcsNyBAQCBwcml2YXRlOgog
ICAgIE1hbGxvY1B0cjx1aW50NjRfdD4gbV9nbG9iYWxzOwogICAgIEVudHJ5RnJhbWUqKiBtX3Rv
cEVudHJ5RnJhbWVQb2ludGVyIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG1fY2FjaGVkU3RhY2tM
aW1pdCB7IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+
OjptYXgoKSkgfTsKLSAgICAKKyAgICBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrIG1fc3RvcmVU
b3BDYWxsRnJhbWU7CiAgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnMgeyAwIH07CiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIyNDc3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxp
emVDcmVhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIH0KIAotSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1bGUsIEpTT2JqZWN0
KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpJ
bnN0YW5jZT4mJiBpbnN0YW5jZSkKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlN
b2R1bGUqIGpzTW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqIGluc3Rh
bmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPiYmIG1vZHVsZSkKIHsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CkBAIC0xNjMsOCArMTYzLDE0IEBAIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3QKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIG1vZHVsZU5hbWVzcGFjZSA9IG1vZHVsZVJlY29yZC0+Z2V0TW9kdWxlTmFtZXNwYWNlKGV4
ZWMpOworCisgICAgYXV0byBzdG9yZVRvcENhbGxGcmFtZSA9IFsmdm1dICh2b2lkKiB0b3BDYWxs
RnJhbWUpIHsKKyAgICAgICAgdm0udG9wQ2FsbEZyYW1lID0gYml0d2lzZV9jYXN0PEV4ZWNTdGF0
ZSo+KHRvcENhbGxGcmFtZSk7CisgICAgfTsKKwogICAgIC8vIEZJWE1FOiBUaGVzZSBvYmplY3Rz
IGNvdWxkIGJlIHByZXR0eSBiaWcgd2Ugc2hvdWxkIHRyeSB0byB0aHJvdyBPT00gaGVyZS4KLSAg
ICBhdXRvKiBqc0luc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3Nl
bWJseUluc3RhbmNlPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUluc3RhbmNlKHZtLCBpbnN0YW5j
ZVN0cnVjdHVyZSwgV1RGTW92ZShpbnN0YW5jZSkpOworICAgIGF1dG8qIGpzSW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KHZtLmhlYXAp
KSBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uodm0sIGluc3RhbmNlU3RydWN0dXJlLCAKKyAgICAgICAg
V2FzbTo6SW5zdGFuY2U6OmNyZWF0ZSgmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUobW9kdWxlKSwg
JnZtLnRvcEVudHJ5RnJhbWUsIFdURk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUpKSk7CiAgICAganNJ
bnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGpzTW9kdWxlLCBtb2R1bGVOYW1lc3BhY2UpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5oCShyZXZpc2lvbiAyMjQ3NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBA
QCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNECiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhlY1N0YXRlKiwgSlNXZWJBc3NlbWJseU1vZHVs
ZSosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSosIFJlZjxXYXNtOjpJbnN0YW5j
ZT4mJik7CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhl
Y1N0YXRlKiwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0
cnVjdHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dh
c21Ub0pTLmNwcAkocmV2aXNpb24gMjI0NzczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2FzbVRvSlMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzgsMjUgKzYzOCwyNSBAQCBF
eHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWYsIEJpbmRpbmdGCiAKIHZvaWQqIHdhc21Ub0pT
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlLCBJbnN0
YW5jZSogd2FzbUluc3RhbmNlKQogeworICAgIHdhc21JbnN0YW5jZS0+c3RvcmVUb3BDYWxsRnJh
bWUoZXhlYyk7CiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IHdhc21JbnN0
YW5jZS0+b3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpOwotICAgIFZNKiB2bSA9IGluc3Rh
bmNlLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgewotICAgICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgICAg
IEpTT2JqZWN0KiBlcnJvcjsKICAgICAgICAgaWYgKHR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6U3Rh
Y2tPdmVyZmxvdykKICAgICAgICAgICAgIGVycm9yID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVycm9yID0g
SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0
LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VG
b3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKKyAgICAgICAgICAgIGVycm9yID0gSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5
UnVudGltZUVycm9yU3RydWN0dXJlKCksIFdhc206OmVycm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5
cGUodHlwZSkpOwogICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJv
cik7CiAgICAgfQogCi0gICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYyk7Ci0gICAgQVNTRVJUKCEh
dm0tPmNhbGxGcmFtZUZvckNhdGNoKTsKLSAgICBBU1NFUlQoISF2bS0+dGFyZ2V0TWFjaGluZVBD
Rm9yVGhyb3cpOworICAgIGdlbmVyaWNVbndpbmQoJnZtLCBleGVjKTsKKyAgICBBU1NFUlQoISF2
bS5jYWxsRnJhbWVGb3JDYXRjaCk7CisgICAgQVNTRVJUKCEhdm0udGFyZ2V0TWFjaGluZVBDRm9y
VGhyb3cpOwogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBtYWtlIHRoaXMgYmV0dGVyOgogICAgIC8v
IFRoaXMgaXMgYSB0b3RhbCBoYWNrLCBidXQgdGhlIGxsaW50IChib3RoIG9wX2NhdGNoIGFuZCBo
YW5kbGVVbmNhdWdodEV4Y2VwdGlvbikKICAgICAvLyByZXF1aXJlIGEgY2VsbCBpbiB0aGUgY2Fs
bGVlIGZpZWxkIHRvIGxvYWQgdGhlIFZNLiAoVGhlIGJhc2VsaW5lIEpJVCBkb2VzIG5vdCByZXF1
aXJlCkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCogd2FzbVRvSlNFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLAogICAgIC8vIHRvIHRoZSBleGNlcHRpb24gaGFuZGxlci4gSWYgd2UgZGlkIHRoaXMs
IHdlIGNvdWxkIHJlbW92ZSB0aGlzIHRlcnJpYmxlIGhhY2suCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQ0MAogICAgIGJpdHdpc2VfY2FzdDx1aW50
NjRfdCo+KGV4ZWMpW0NhbGxGcmFtZVNsb3Q6OmNhbGxlZV0gPSBiaXR3aXNlX2Nhc3Q8dWludDY0
X3Q+KGluc3RhbmNlLT53ZWJBc3NlbWJseVRvSlNDYWxsZWUoKSk7Ci0gICAgcmV0dXJuIHZtLT50
YXJnZXRNYWNoaW5lUENGb3JUaHJvdzsKKyAgICByZXR1cm4gdm0udGFyZ2V0TWFjaGluZVBDRm9y
VGhyb3c7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIyNDc3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29ucwogICAgIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUo
dm0sIGV4ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBpbnN0YW5jZVN0cnVjdHVyZSwgV2FzbTo6
SW5zdGFuY2U6OmNyZWF0ZSgmdm0ud2FzbUNvbnRleHQsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVs
ZS0+bW9kdWxlKCkpLCAmdm0udG9wRW50cnlGcmFtZSkpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywg
bW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxl
Pihtb2R1bGUtPm1vZHVsZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAogICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBleGVjLCBtb2R1bGUtPm1v
ZHVsZSgpLmNvbXBpbGVTeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUo
KSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhjZXB0aW9u
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMjQ3NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNT
dGF0CiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIC8v
IEluIG9yZGVyIHRvIGF2b2lkIHBvdGVudGlhbGx5IHJlY29tcGlsaW5nIGEgbW9kdWxlLiBXZSBm
aXJzdCBnYXRoZXIgYWxsIHRoZSBpbXBvcnQvbWVtb3J5IGluZm9ybWF0aW9uIHByaW9yIHRvIGNv
bXBpbGluZyBjb2RlLgotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxlLCBpbXBvcnRPYmplY3Qs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVy
ZSgpLCBXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKCZ2bS53YXNtQ29udGV4dCwgUmVmPFdhc206Ok1v
ZHVsZT4obW9kdWxlLT5tb2R1bGUoKSksICZ2bS50b3BFbnRyeUZyYW1lKSk7CisgICAgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRl
KHZtLCBleGVjLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCksIFJlZjxXYXNtOjpNb2R1bGU+KG1v
ZHVsZS0+bW9kdWxlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3Qo
ZXhlYywgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVw
ZW5kZW5jaWVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326826</attachid>
            <date>2017-11-13 16:55:40 -0800</date>
            <delta_ts>2017-11-13 20:51:12 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>16765</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjQ3OTIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE3LTExLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIG5lZWQgdG8gc2V0IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB3aGVu
IGNhbGxpbmcgV2FzbTo6TWVtb3J5Ojpncm93IGZyb20gdGhlIEpJVAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NjM5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zNTUxMzAxOD4KKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisg
ICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy9ncm93LW1lbW9yeS1jYXVzZS1nYy5qczogQWRk
ZWQuCisgICAgICAgIChlc2NhcGUpOgorICAgICAgICAoaS5mdW5jKToKKwogMjAxNy0xMS0xMyAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1vcmUgb3ZlcmZs
b3cgY2hlY2sgYm9vay1rZWVwaW5nIGZvciBNYXJrZWRBcmd1bWVudEJ1ZmZlci4KSW5kZXg6IEpT
VGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9ncm93LW1lbW9yeS1jYXVzZS1nYy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvZ3Jvdy1tZW1vcnktY2F1c2UtZ2Mu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2dyb3ctbWVt
b3J5LWNhdXNlLWdjLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKK2ltcG9ydCBC
dWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4u
L2Fzc2VydC5qcyc7CisKK2Z1bmN0aW9uIGVzY2FwZSgpe30KK25vSW5saW5lKGVzY2FwZSk7CisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgIGNvbnN0IG1heCA9IDEwMjQqMjU7
CisgICAgY29uc3QgbWVtb3J5RGVzY3JpcHRpb24gPSB7aW5pdGlhbDogMCwgbWF4aW11bTogbWF4
fTsKKworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUo
KS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaW1wIiwg
ImZ1bmMiLCB7cGFyYW1zOiBbXSwgcmV0OiAidm9pZCJ9KQorICAgICAgICAgICAgLk1lbW9yeSgi
aW1wIiwgIm1lbW9yeSIsIG1lbW9yeURlc2NyaXB0aW9uKQorICAgICAgICAuRW5kKCkKKyAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAuRnVu
Y3Rpb24oImZvbyIpCisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAg
ICAuRnVuY3Rpb24oImZvbyIsIHtwYXJhbXM6IFtdLCByZXQ6ICJpMzIifSkKKyAgICAgICAgICAg
ICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAg
ICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAg
ICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAg
ICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkK
KyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3Qo
MSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuSTMyQ29u
c3QoMSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuSTMy
Q29uc3QoMSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAu
STMyQ29uc3QoMSkKKyAgICAgICAgICAgICAgICAuQ2FsbCgyKQorICAgICAgICAgICAgICAgIC5J
MzJDb25zdCgxKQorICAgICAgICAgICAgICAgIC5Hcm93TWVtb3J5KDApCisgICAgICAgICAgICAg
ICAgLlJldHVybigpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigi
YmFyIiwge3BhcmFtczogWyJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIs
ICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwg
ImkzMiIsICJpMzIiXSwgcmV0OiAidm9pZCJ9KQorICAgICAgICAgICAgICAgIC5DYWxsKDApCisg
ICAgICAgICAgICAgICAgLlJldHVybigpCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgLkVu
ZCgpOworCisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAg
IGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBjb25zdCBt
ZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KG1lbW9yeURlc2NyaXB0aW9uKTsKKworICAg
IGZ1bmN0aW9uIGZ1bmMoKSB7IH0KKworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge21lbW9yeSwgZnVuY319KTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IG1heDsgKytpKSB7CisgICAgICAgIGluc3RhbmNlLmV4cG9ydHMuZm9vKCk7
CisgICAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjQ3NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTctMTEtMTMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2UgbmVlZCB0byBzZXQgdG9wQ2FsbEZyYW1lIHdoZW4gY2FsbGluZyBXYXNt
OjpNZW1vcnk6Omdyb3cgZnJvbSB0aGUgSklUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1NTEz
MDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgQ2FsbGlu
ZyBXYXNtOjpNZW1vcnk6Omdyb3cgZnJvbSB0aGUgSklUIG1heSBjYXVzZSB1cyB0byBHQy4gV2hl
biB3ZSBHQywgd2Ugd2lsbAorICAgICAgICB3YWxrIHRoZSBzdGFjayBmb3IgU2hhZG93Q2hpY2tl
biAoYW5kIG1heWJlIG90aGVyIHRoaW5ncykuIFdlIHdlcmVuJ3QgdXBkYXRpbmcKKyAgICAgICAg
dG9wQ2FsbEZyYW1lIHdoZW4gY2FsbGluZyBncm93IGZyb20gdGhlIFdhc20gSklULiBUaGlzIHdv
dWxkIGNhdXNlIHRoZSBHQyB0bworICAgICAgICB1c2Ugc3RhbGUgdG9wQ2FsbEZyYW1lIGJpdHMg
aW4gVk0sIG9mdGVuIGxlYWRpbmcgdG8gY3Jhc2hlcy4gVGhpcyBwYXRjaCBmaXhlcworICAgICAg
ICB0aGlzIGJ1ZyBieSBnaXZpbmcgV2FzbTo6SW5zdGFuY2UgYSBsYW1iZGEgdGhhdCBpcyBjYWxs
ZWQgd2hlbiB3ZSBuZWVkIHRvIHN0b3JlCisgICAgICAgIHRoZSB0b3BDYWxsRnJhbWUuIFVzZXJz
IG9mIFdhc206Okluc3RhbmNlIGNhbiBwcm92aWRlIGEgZnVuY3Rpb24gdG8gZG8gdGhpcyBhY3Rp
b24uCisgICAgICAgIEN1cnJlbnRseSwgSlNXZWJBc3NlbWJseUluc3RhbmNlIHBhc3NlcyBpbiBh
IGxhbWJkYSB0aGF0IHN0b3JlcyB0bworICAgICAgICBWTS50b3BDYWxsRnJhbWUuCisKKyAgICAg
ICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0
YW5jZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpJbnN0YW5jZSk6CisgICAg
ICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vV2FzbUlu
c3RhbmNlLmg6CisgICAgICAgIChKU0M6Oldhc206Okluc3RhbmNlOjpzdG9yZVRvcENhbGxGcmFt
ZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAg
ICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6aW5zdGFudGlhdGUpOgorCiAyMDE3
LTExLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHRo
ZSBqc2Mgc2hlbGwgbG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIoKSBmdW5jdGlvbiBtb3JlIHJv
YnVzdC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDIyNDc3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU4LDcgKzU1OCw5
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiAKIAogYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgaW50MzJfdCAoKmdyb3dNZW1v
cnkpKEluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAoSW5zdGFuY2UqIGluc3RhbmNlLCBpbnQzMl90
IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90ICgqZ3Jvd01lbW9yeSkodm9pZCosIElu
c3RhbmNlKiwgaW50MzJfdCkgPSBbXSAodm9pZCogY2FsbEZyYW1lLCBJbnN0YW5jZSogaW5zdGFu
Y2UsIGludDMyX3QgZGVsdGEpIC0+IGludDMyX3QgeworICAgICAgICBpbnN0YW5jZS0+c3RvcmVU
b3BDYWxsRnJhbWUoY2FsbEZyYW1lKTsKKwogICAgICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAg
ICAgICAgcmV0dXJuIC0xOwogCkBAIC01NzEsNiArNTczLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRHcm93TWVtb3J5KEV4cHJlcwogICAgICAgICAgICAgY2FzZSBNZW1vcnk6Okdyb3dGYWls
UmVhc29uOjpPdXRPZk1lbW9yeToKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIGdyb3duLnZhbHVlKCkucGFnZUNvdW50KCk7CkBAIC01Nzgs
NyArNTgxLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlcwogCiAg
ICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2Ms
IEludDMyLCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdyb3dNZW1v
cnkpKSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBkZWx0YSk7CisgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIG9y
aWdpbigpKSwgaW5zdGFuY2VWYWx1ZSgpLCBkZWx0YSk7CiAKICAgICByZXN0b3JlV2ViQXNzZW1i
bHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywgbV9j
dXJyZW50QmxvY2spOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5z
dGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21J
bnN0YW5jZS5jcHAJKHJldmlzaW9uIDIyNDc3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDIwICs0MSwyMSBAQCBz
aXplX3QgZ2xvYmFsTWVtb3J5Qnl0ZVNpemUoTW9kdWxlJiBtb2R1CiB9CiB9CiAKLUluc3RhbmNl
OjpJbnN0YW5jZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVsZSwgRW50cnlG
cmFtZSoqIHRvcEVudHJ5RnJhbWVQb2ludGVyKQorSW5zdGFuY2U6Okluc3RhbmNlKENvbnRleHQq
IGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFt
ZVBvaW50ZXIsIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJiBzdG9yZVRvcENhbGxGcmFtZSkK
ICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tb2R1bGUoV1RGTW92ZShtb2R1bGUp
KQogICAgICwgbV9nbG9iYWxzKE1hbGxvY1B0cjx1aW50NjRfdD46Om1hbGxvYyhnbG9iYWxNZW1v
cnlCeXRlU2l6ZShtX21vZHVsZS5nZXQoKSkpKQogICAgICwgbV90b3BFbnRyeUZyYW1lUG9pbnRl
cih0b3BFbnRyeUZyYW1lUG9pbnRlcikKKyAgICAsIG1fc3RvcmVUb3BDYWxsRnJhbWUoV1RGTW92
ZShzdG9yZVRvcENhbGxGcmFtZSkpCiAgICAgLCBtX251bUltcG9ydEZ1bmN0aW9ucyhtX21vZHVs
ZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtSW1wb3J0RnVuY3Rpb25zOyArK2kpCiAgICAgICAg
IG5ldyAoaW1wb3J0RnVuY3Rpb25JbmZvKGkpKSBJbXBvcnRGdW5jdGlvbkluZm8oKTsKIH0KIAot
UmVmPEluc3RhbmNlPiBJbnN0YW5jZTo6Y3JlYXRlKENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1
bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIpCitSZWY8SW5z
dGFuY2U+IEluc3RhbmNlOjpjcmVhdGUoQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZT4mJiBt
b2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlciwgU3RvcmVUb3BDYWxsRnJh
bWVDYWxsYmFjayYmIHN0b3JlVG9wQ2FsbEZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxlSW5m
b3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpKSkgSW5zdGFuY2UoY29udGV4dCwgV1RG
TW92ZShtb2R1bGUpLCB0b3BFbnRyeUZyYW1lUG9pbnRlcikpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+bW9kdWxl
SW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpKSkgSW5zdGFuY2UoY29udGV4dCwg
V1RGTW92ZShtb2R1bGUpLCB0b3BFbnRyeUZyYW1lUG9pbnRlciwgV1RGTW92ZShzdG9yZVRvcENh
bGxGcmFtZSkpKTsKIH0KIAogSW5zdGFuY2U6On5JbnN0YW5jZSgpIHsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgJKHJldmlzaW9uIDIyNDc3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw5IEBAIHN0cnVjdCBDb250ZXh0OwogCiBjbGFzcyBJbnN0YW5jZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8SW5zdGFuY2U+IGNyZWF0ZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1v
ZHVsZSwgRW50cnlGcmFtZSoqIHRvcEVudHJ5RnJhbWVQb2ludGVyKTsKKyAgICB1c2luZyBTdG9y
ZVRvcENhbGxGcmFtZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQqKT47CisKKyAg
ICBzdGF0aWMgUmVmPEluc3RhbmNlPiBjcmVhdGUoQ29udGV4dCosIFJlZjxNb2R1bGU+JiYsIEVu
dHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlciwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFj
ayYmKTsKIAogICAgIHZvaWQgZmluYWxpemVDcmVhdGlvbih2b2lkKiBvd25lciwgUmVmPENvZGVC
bG9jaz4mJiBjb2RlQmxvY2spCiAgICAgewpAQCAtMTAzLDggKzEwNSwxMyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKHNpemVfdCBpbXBvcnRGdW5j
dGlvbk51bSkgeyByZXR1cm4gb2Zmc2V0T2ZUYWlsKCkgKyBpbXBvcnRGdW5jdGlvbk51bSAqIHNp
emVvZihJbXBvcnRGdW5jdGlvbkluZm8pICsgT0JKRUNUX09GRlNFVE9GKEltcG9ydEZ1bmN0aW9u
SW5mbywgaW1wb3J0RnVuY3Rpb24pOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogaW1w
b3J0RnVuY3Rpb24odW5zaWduZWQgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VCo+KCZpbXBvcnRGdW5jdGlvbkluZm8oaW1wb3J0RnVuY3Rpb25OdW0pLT5pbXBv
cnRGdW5jdGlvbik7IH0KIAorICAgIHZvaWQgc3RvcmVUb3BDYWxsRnJhbWUodm9pZCogY2FsbEZy
YW1lKQorICAgIHsKKyAgICAgICAgbV9zdG9yZVRvcENhbGxGcmFtZShjYWxsRnJhbWUpOworICAg
IH0KKwogcHJpdmF0ZToKLSAgICBJbnN0YW5jZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxl
PiYmLCBFbnRyeUZyYW1lKiopOworICAgIEluc3RhbmNlKENvbnRleHQqIGNvbnRleHQsIFJlZjxN
b2R1bGU+JiYsIEVudHJ5RnJhbWUqKiwgU3RvcmVUb3BDYWxsRnJhbWVDYWxsYmFjayYmKTsKICAg
ICAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBudW1J
bXBvcnRGdW5jdGlvbnMpCiAgICAgewpAQCAtMTIwLDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAg
TWFsbG9jUHRyPHVpbnQ2NF90PiBtX2dsb2JhbHM7CiAgICAgRW50cnlGcmFtZSoqIG1fdG9wRW50
cnlGcmFtZVBvaW50ZXIgeyBudWxscHRyIH07CiAgICAgdm9pZCogbV9jYWNoZWRTdGFja0xpbWl0
IHsgYml0d2lzZV9jYXN0PHZvaWQqPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnRwdHJfdD46Om1h
eCgpKSB9OwotICAgIAorICAgIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2sgbV9zdG9yZVRvcENh
bGxGcmFtZTsKICAgICB1bnNpZ25lZCBtX251bUltcG9ydEZ1bmN0aW9ucyB7IDAgfTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmNwcAkocmV2aXNpb24gMjI0NzczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNy
ZWEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogfQogCi1KU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBqc01vZHVsZSwgSlNPYmplY3QqIGlt
cG9ydE9iamVjdCwgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdhc206Okluc3Rh
bmNlPiYmIGluc3RhbmNlKQorSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVs
ZSoganNNb2R1bGUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VT
dHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+JiYgbW9kdWxlKQogewogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKQEAgLTE2Myw4ICsxNjMsMTQgQEAgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdAogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCog
bW9kdWxlTmFtZXNwYWNlID0gbW9kdWxlUmVjb3JkLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7
CisKKyAgICBhdXRvIHN0b3JlVG9wQ2FsbEZyYW1lID0gWyZ2bV0gKHZvaWQqIHRvcENhbGxGcmFt
ZSkgeworICAgICAgICB2bS50b3BDYWxsRnJhbWUgPSBiaXR3aXNlX2Nhc3Q8RXhlY1N0YXRlKj4o
dG9wQ2FsbEZyYW1lKTsKKyAgICB9OworCiAgICAgLy8gRklYTUU6IFRoZXNlIG9iamVjdHMgY291
bGQgYmUgcHJldHR5IGJpZyB3ZSBzaG91bGQgdHJ5IHRvIHRocm93IE9PTSBoZXJlLgotICAgIGF1
dG8qIGpzSW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5
SW5zdGFuY2U+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uodm0sIGluc3RhbmNlU3Ry
dWN0dXJlLCBXVEZNb3ZlKGluc3RhbmNlKSk7CisgICAgYXV0byoganNJbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4odm0uaGVhcCkpIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSh2bSwgaW5zdGFuY2VTdHJ1Y3R1cmUsIAorICAgICAgICBXYXNt
OjpJbnN0YW5jZTo6Y3JlYXRlKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCAmdm0u
dG9wRW50cnlGcmFtZSwgV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpKTsKICAgICBqc0luc3Rh
bmNlLT5maW5pc2hDcmVhdGlvbih2bSwganNNb2R1bGUsIG1vZHVsZU5hbWVzcGFjZSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgJKHJldmlzaW9uIDIyNDc3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGNs
YXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0QKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJs
eUluc3RhbmNlKiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwg
SlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiwgUmVmPFdhc206Okluc3RhbmNlPiYm
KTsKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBjcmVhdGUoVk0mLCBFeGVjU3Rh
dGUqLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0
dXJlKiwgUmVmPFdhc206Ok1vZHVsZT4mJik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRv
SlMuY3BwCShyZXZpc2lvbiAyMjQ3NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XYXNtVG9KUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzOCwyNSArNjM4LDI1IEBAIEV4cGVj
dGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZiwgQmluZGluZ0YKIAogdm9pZCogd2FzbVRvSlNFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUsIEluc3RhbmNl
KiB3YXNtSW5zdGFuY2UpCiB7CisgICAgd2FzbUluc3RhbmNlLT5zdG9yZVRvcENhbGxGcmFtZShl
eGVjKTsKICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gd2FzbUluc3RhbmNl
LT5vd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCk7Ci0gICAgVk0qIHZtID0gaW5zdGFuY2Ut
PnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAgICAgSlNP
YmplY3QqIGVycm9yOwogICAgICAgICBpZiAodHlwZSA9PSBFeGNlcHRpb25UeXBlOjpTdGFja092
ZXJmbG93KQogICAgICAgICAgICAgZXJyb3IgPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
YywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZXJyb3IgPSBKU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3QtPldl
YkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCksIFdhc206OmVycm9yTWVzc2FnZUZvckV4
Y2VwdGlvblR5cGUodHlwZSkpOworICAgICAgICAgICAgZXJyb3IgPSBKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhjZXB0aW9uVHlwZSh0
eXBlKSk7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsK
ICAgICB9CiAKLSAgICBnZW5lcmljVW53aW5kKHZtLCBleGVjKTsKLSAgICBBU1NFUlQoISF2bS0+
Y2FsbEZyYW1lRm9yQ2F0Y2gpOwotICAgIEFTU0VSVCghIXZtLT50YXJnZXRNYWNoaW5lUENGb3JU
aHJvdyk7CisgICAgZ2VuZXJpY1Vud2luZCgmdm0sIGV4ZWMpOworICAgIEFTU0VSVCghIXZtLmNh
bGxGcmFtZUZvckNhdGNoKTsKKyAgICBBU1NFUlQoISF2bS50YXJnZXRNYWNoaW5lUENGb3JUaHJv
dyk7CiAgICAgLy8gRklYTUU6IFdlIGNvdWxkIG1ha2UgdGhpcyBiZXR0ZXI6CiAgICAgLy8gVGhp
cyBpcyBhIHRvdGFsIGhhY2ssIGJ1dCB0aGUgbGxpbnQgKGJvdGggb3BfY2F0Y2ggYW5kIGhhbmRs
ZVVuY2F1Z2h0RXhjZXB0aW9uKQogICAgIC8vIHJlcXVpcmUgYSBjZWxsIGluIHRoZSBjYWxsZWUg
ZmllbGQgdG8gbG9hZCB0aGUgVk0uIChUaGUgYmFzZWxpbmUgSklUIGRvZXMgbm90IHJlcXVpcmUK
QEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkKiB3YXNtVG9KU0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsCiAgICAgLy8gdG8gdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLiBJZiB3ZSBkaWQgdGhpcywgd2Ug
Y291bGQgcmVtb3ZlIHRoaXMgdGVycmlibGUgaGFjay4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDQwCiAgICAgYml0d2lzZV9jYXN0PHVpbnQ2NF90
Kj4oZXhlYylbQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlXSA9IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4o
aW5zdGFuY2UtPndlYkFzc2VtYmx5VG9KU0NhbGxlZSgpKTsKLSAgICByZXR1cm4gdm0tPnRhcmdl
dE1hY2hpbmVQQ0ZvclRocm93OworICAgIHJldHVybiB2bS50YXJnZXRNYWNoaW5lUENGb3JUaHJv
dzsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5j
ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjI0NzczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zCiAgICAgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwg
ZXhlYywgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBXYXNtOjpJbnN0
YW5jZTo6Y3JlYXRlKCZ2bS53YXNtQ29udGV4dCwgUmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5t
b2R1bGUoKSksICZ2bS50b3BFbnRyeUZyYW1lKSk7CisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBtb2R1
bGUsIGltcG9ydE9iamVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+KG1v
ZHVsZS0+bW9kdWxlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
CiAgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxl
KCkuY29tcGlsZVN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAm
V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIyNDc3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXQK
IHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgLy8gSW4g
b3JkZXIgdG8gYXZvaWQgcG90ZW50aWFsbHkgcmVjb21waWxpbmcgYSBtb2R1bGUuIFdlIGZpcnN0
IGdhdGhlciBhbGwgdGhlIGltcG9ydC9tZW1vcnkgaW5mb3JtYXRpb24gcHJpb3IgdG8gY29tcGls
aW5nIGNvZGUuCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCks
IFdhc206Okluc3RhbmNlOjpjcmVhdGUoJnZtLndhc21Db250ZXh0LCBSZWY8V2FzbTo6TW9kdWxl
Pihtb2R1bGUtPm1vZHVsZSgpKSwgJnZtLnRvcEVudHJ5RnJhbWUpKTsKKyAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0s
IGV4ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwgUmVmPFdhc206Ok1vZHVsZT4obW9kdWxl
LT5tb2R1bGUoKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChleGVj
LCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRl
bmNpZXM7Cg==
</data>
<flag name="commit-queue"
          id="346103"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326848</attachid>
            <date>2017-11-13 20:51:12 -0800</date>
            <delta_ts>2017-11-14 01:05:36 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>16880</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjQ4MDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE3LTExLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIG5lZWQgdG8gc2V0IHRvcENhbGxGcmFtZSB3aGVuIGNhbGxpbmcg
V2FzbTo6TWVtb3J5Ojpncm93IGZyb20gdGhlIEpJVAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NjM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
NTUxMzAxOD4KKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAgICAgICog
d2FzbS9mdW5jdGlvbi10ZXN0cy9ncm93LW1lbW9yeS1jYXVzZS1nYy5qczogQWRkZWQuCisgICAg
ICAgIChlc2NhcGUpOgorICAgICAgICAoaS5mdW5jKToKKwogMjAxNy0xMS0xMyAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1vcmUgb3ZlcmZsb3cgY2hlY2sg
Ym9vay1rZWVwaW5nIGZvciBNYXJrZWRBcmd1bWVudEJ1ZmZlci4KSW5kZXg6IEpTVGVzdHMvd2Fz
bS9mdW5jdGlvbi10ZXN0cy9ncm93LW1lbW9yeS1jYXVzZS1nYy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvZ3Jvdy1tZW1vcnktY2F1c2UtZ2MuanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2dyb3ctbWVtb3J5LWNhdXNl
LWdjLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKK2ltcG9ydCBCdWlsZGVyIGZy
b20gJy4uL0J1aWxkZXIuanMnOworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5q
cyc7CisKK2Z1bmN0aW9uIGVzY2FwZSgpe30KK25vSW5saW5lKGVzY2FwZSk7CisKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgIGNvbnN0IG1heCA9IDEwMjQqMjsKKyAgICBjb25z
dCBtZW1vcnlEZXNjcmlwdGlvbiA9IHtpbml0aWFsOiAwLCBtYXhpbXVtOiBtYXh9OworICAgIGNv
bnN0IGdyb3dNZW1vcnlBbW91bnQgPSAyNTY7CisKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBC
dWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisgICAg
ICAgICAgICAuRnVuY3Rpb24oImltcCIsICJmdW5jIiwge3BhcmFtczogW10sIHJldDogInZvaWQi
fSkKKyAgICAgICAgICAgIC5NZW1vcnkoImltcCIsICJtZW1vcnkiLCBtZW1vcnlEZXNjcmlwdGlv
bikKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5F
eHBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb28iKQorICAgICAgICAuRW5kKCkKKyAg
ICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7cGFyYW1zOiBbXSwg
cmV0OiAiaTMyIn0pCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAg
ICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAg
ICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAg
ICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisg
ICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEp
CisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0
KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNv
bnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkNh
bGwoMikKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoZ3Jvd01lbW9yeUFtb3VudCkKKyAgICAg
ICAgICAgICAgICAuR3Jvd01lbW9yeSgwKQorICAgICAgICAgICAgICAgIC5SZXR1cm4oKQorICAg
ICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImJhciIsIHtwYXJhbXM6IFsi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJl
dDogInZvaWQifSkKKyAgICAgICAgICAgICAgICAuQ2FsbCgwKQorICAgICAgICAgICAgICAgIC5S
ZXR1cm4oKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQoKTsKKworICAgIGNvbnN0
IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgY29uc3QgbWVtb3J5ID0gbmV3IFdlYkFz
c2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNjcmlwdGlvbik7CisKKyAgICBmdW5jdGlvbiBmdW5jKCkg
eyB9CisKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUsIHtpbXA6IHttZW1vcnksIGZ1bmN9fSk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXgv
Z3Jvd01lbW9yeUFtb3VudDsgKytpKSB7CisgICAgICAgIGluc3RhbmNlLmV4cG9ydHMuZm9vKCk7
CisgICAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjQ4MDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTctMTEtMTMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2UgbmVlZCB0byBzZXQgdG9wQ2FsbEZyYW1lIHdoZW4gY2FsbGluZyBXYXNt
OjpNZW1vcnk6Omdyb3cgZnJvbSB0aGUgSklUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1NTEz
MDE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgQ2FsbGlu
ZyBXYXNtOjpNZW1vcnk6Omdyb3cgZnJvbSB0aGUgSklUIG1heSBjYXVzZSB1cyB0byBHQy4gV2hl
biB3ZSBHQywgd2Ugd2lsbAorICAgICAgICB3YWxrIHRoZSBzdGFjayBmb3IgU2hhZG93Q2hpY2tl
biAoYW5kIG1heWJlIG90aGVyIHRoaW5ncykuIFdlIHdlcmVuJ3QgdXBkYXRpbmcKKyAgICAgICAg
dG9wQ2FsbEZyYW1lIHdoZW4gY2FsbGluZyBncm93IGZyb20gdGhlIFdhc20gSklULiBUaGlzIHdv
dWxkIGNhdXNlIHRoZSBHQyB0bworICAgICAgICB1c2Ugc3RhbGUgdG9wQ2FsbEZyYW1lIGJpdHMg
aW4gVk0sIG9mdGVuIGxlYWRpbmcgdG8gY3Jhc2hlcy4gVGhpcyBwYXRjaCBmaXhlcworICAgICAg
ICB0aGlzIGJ1ZyBieSBnaXZpbmcgV2FzbTo6SW5zdGFuY2UgYSBsYW1iZGEgdGhhdCBpcyBjYWxs
ZWQgd2hlbiB3ZSBuZWVkIHRvIHN0b3JlCisgICAgICAgIHRoZSB0b3BDYWxsRnJhbWUuIFVzZXJz
IG9mIFdhc206Okluc3RhbmNlIGNhbiBwcm92aWRlIGEgZnVuY3Rpb24gdG8gZG8gdGhpcyBhY3Rp
b24uCisgICAgICAgIEN1cnJlbnRseSwgSlNXZWJBc3NlbWJseUluc3RhbmNlIHBhc3NlcyBpbiBh
IGxhbWJkYSB0aGF0IHN0b3JlcyB0bworICAgICAgICBWTS50b3BDYWxsRnJhbWUuCisKKyAgICAg
ICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJ
UkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeSk6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6SW5zdGFuY2UpOgorICAgICAgICAo
SlNDOjpXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5j
ZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6c3RvcmVUb3BDYWxsRnJhbWUpOgor
ICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTRXhjZXB0aW9uKToKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omluc3RhbnRpYXRlKToKKwogMjAxNy0xMS0w
OCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3lu
YyBpdGVyYXRpb24gc2hvdWxkIG9ubHkgZmV0Y2ggdGhlIG5leHQgbWV0aG9kIG9uY2UgYW5kIGFk
ZCBmZWF0dXJlIGZsYWcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIyNDc5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU4
LDcgKzU1OCw5IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiAKIAog
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgaW50MzJfdCAo
Kmdyb3dNZW1vcnkpKEluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAoSW5zdGFuY2UqIGluc3RhbmNl
LCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90ICgqZ3Jvd01lbW9yeSko
dm9pZCosIEluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAodm9pZCogY2FsbEZyYW1lLCBJbnN0YW5j
ZSogaW5zdGFuY2UsIGludDMyX3QgZGVsdGEpIC0+IGludDMyX3QgeworICAgICAgICBpbnN0YW5j
ZS0+c3RvcmVUb3BDYWxsRnJhbWUoY2FsbEZyYW1lKTsKKwogICAgICAgICBpZiAoZGVsdGEgPCAw
KQogICAgICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC01NzEsNiArNTczLDcgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlcwogICAgICAgICAgICAgY2FzZSBNZW1vcnk6
Okdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9yeToKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGdyb3duLnZhbHVlKCkucGFnZUNvdW50KCk7
CkBAIC01NzgsNyArNTgxLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4
cHJlcwogCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PihtX3Byb2MsIEludDMyLCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KGdyb3dNZW1vcnkpKSwKLSAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBkZWx0YSk7CisgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBv
aW50ZXIsIG9yaWdpbigpKSwgaW5zdGFuY2VWYWx1ZSgpLCBkZWx0YSk7CiAKICAgICByZXN0b3Jl
V2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1f
cHJvYywgbV9jdXJyZW50QmxvY2spOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIyNDc5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDIwICs0
MSwyMSBAQCBzaXplX3QgZ2xvYmFsTWVtb3J5Qnl0ZVNpemUoTW9kdWxlJiBtb2R1CiB9CiB9CiAK
LUluc3RhbmNlOjpJbnN0YW5jZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlPiYmIG1vZHVs
ZSwgRW50cnlGcmFtZSoqIHRvcEVudHJ5RnJhbWVQb2ludGVyKQorSW5zdGFuY2U6Okluc3RhbmNl
KENvbnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogdG9w
RW50cnlGcmFtZVBvaW50ZXIsIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJiBzdG9yZVRvcENh
bGxGcmFtZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tb2R1bGUoV1RGTW92
ZShtb2R1bGUpKQogICAgICwgbV9nbG9iYWxzKE1hbGxvY1B0cjx1aW50NjRfdD46Om1hbGxvYyhn
bG9iYWxNZW1vcnlCeXRlU2l6ZShtX21vZHVsZS5nZXQoKSkpKQogICAgICwgbV90b3BFbnRyeUZy
YW1lUG9pbnRlcih0b3BFbnRyeUZyYW1lUG9pbnRlcikKKyAgICAsIG1fc3RvcmVUb3BDYWxsRnJh
bWUoV1RGTW92ZShzdG9yZVRvcENhbGxGcmFtZSkpCiAgICAgLCBtX251bUltcG9ydEZ1bmN0aW9u
cyhtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpCiB7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVtSW1wb3J0RnVuY3Rpb25zOyArK2kp
CiAgICAgICAgIG5ldyAoaW1wb3J0RnVuY3Rpb25JbmZvKGkpKSBJbXBvcnRGdW5jdGlvbkluZm8o
KTsKIH0KIAotUmVmPEluc3RhbmNlPiBJbnN0YW5jZTo6Y3JlYXRlKENvbnRleHQqIGNvbnRleHQs
IFJlZjxNb2R1bGU+JiYgbW9kdWxlLCBFbnRyeUZyYW1lKiogdG9wRW50cnlGcmFtZVBvaW50ZXIp
CitSZWY8SW5zdGFuY2U+IEluc3RhbmNlOjpjcmVhdGUoQ29udGV4dCogY29udGV4dCwgUmVmPE1v
ZHVsZT4mJiBtb2R1bGUsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlciwgU3RvcmVU
b3BDYWxsRnJhbWVDYWxsYmFjayYmIHN0b3JlVG9wQ2FsbEZyYW1lKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVsZS0+
bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpKSkgSW5zdGFuY2UoY29u
dGV4dCwgV1RGTW92ZShtb2R1bGUpLCB0b3BFbnRyeUZyYW1lUG9pbnRlcikpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKGFsbG9jYXRpb25TaXplKG1vZHVs
ZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCkpKSkgSW5zdGFuY2Uo
Y29udGV4dCwgV1RGTW92ZShtb2R1bGUpLCB0b3BFbnRyeUZyYW1lUG9pbnRlciwgV1RGTW92ZShz
dG9yZVRvcENhbGxGcmFtZSkpKTsKIH0KIAogSW5zdGFuY2U6On5JbnN0YW5jZSgpIHsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmgJKHJldmlzaW9uIDIy
NDc5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw3ICs0Miw5IEBAIHN0cnVjdCBDb250ZXh0OwogCiBjbGFzcyBJbnN0
YW5jZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0YW5jZT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SW5zdGFuY2U+IGNyZWF0ZShDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9k
dWxlPiYmIG1vZHVsZSwgRW50cnlGcmFtZSoqIHRvcEVudHJ5RnJhbWVQb2ludGVyKTsKKyAgICB1
c2luZyBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQq
KT47CisKKyAgICBzdGF0aWMgUmVmPEluc3RhbmNlPiBjcmVhdGUoQ29udGV4dCosIFJlZjxNb2R1
bGU+JiYsIEVudHJ5RnJhbWUqKiB0b3BFbnRyeUZyYW1lUG9pbnRlciwgU3RvcmVUb3BDYWxsRnJh
bWVDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgZmluYWxpemVDcmVhdGlvbih2b2lkKiBvd25lciwg
UmVmPENvZGVCbG9jaz4mJiBjb2RlQmxvY2spCiAgICAgewpAQCAtMTAzLDggKzEwNSwxMyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKHNpemVfdCBp
bXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4gb2Zmc2V0T2ZUYWlsKCkgKyBpbXBvcnRGdW5jdGlv
bk51bSAqIHNpemVvZihJbXBvcnRGdW5jdGlvbkluZm8pICsgT0JKRUNUX09GRlNFVE9GKEltcG9y
dEZ1bmN0aW9uSW5mbywgaW1wb3J0RnVuY3Rpb24pOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVCogaW1wb3J0RnVuY3Rpb24odW5zaWduZWQgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZpbXBvcnRGdW5jdGlvbkluZm8oaW1wb3J0RnVuY3Rpb25O
dW0pLT5pbXBvcnRGdW5jdGlvbik7IH0KIAorICAgIHZvaWQgc3RvcmVUb3BDYWxsRnJhbWUodm9p
ZCogY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgbV9zdG9yZVRvcENhbGxGcmFtZShjYWxsRnJh
bWUpOworICAgIH0KKwogcHJpdmF0ZToKLSAgICBJbnN0YW5jZShDb250ZXh0KiBjb250ZXh0LCBS
ZWY8TW9kdWxlPiYmLCBFbnRyeUZyYW1lKiopOworICAgIEluc3RhbmNlKENvbnRleHQqLCBSZWY8
TW9kdWxlPiYmLCBFbnRyeUZyYW1lKiosIFN0b3JlVG9wQ2FsbEZyYW1lQ2FsbGJhY2smJik7CiAg
ICAgCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gbnVt
SW1wb3J0RnVuY3Rpb25zKQogICAgIHsKQEAgLTEyMCw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAg
IE1hbGxvY1B0cjx1aW50NjRfdD4gbV9nbG9iYWxzOwogICAgIEVudHJ5RnJhbWUqKiBtX3RvcEVu
dHJ5RnJhbWVQb2ludGVyIHsgbnVsbHB0ciB9OwogICAgIHZvaWQqIG1fY2FjaGVkU3RhY2tMaW1p
dCB7IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50cHRyX3Q+Ojpt
YXgoKSkgfTsKLSAgICAKKyAgICBTdG9yZVRvcENhbGxGcmFtZUNhbGxiYWNrIG1fc3RvcmVUb3BD
YWxsRnJhbWU7CiAgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnMgeyAwIH07CiB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIyNDc5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVD
cmVhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIH0KIAotSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1bGUsIEpTT2JqZWN0KiBp
bXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpJbnN0
YW5jZT4mJiBpbnN0YW5jZSkKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIGpzTW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqIGluc3RhbmNl
U3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPiYmIG1vZHVsZSkKIHsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CkBAIC0xNjMsOCArMTYzLDE0IEBAIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qq
IG1vZHVsZU5hbWVzcGFjZSA9IG1vZHVsZVJlY29yZC0+Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMp
OworCisgICAgYXV0byBzdG9yZVRvcENhbGxGcmFtZSA9IFsmdm1dICh2b2lkKiB0b3BDYWxsRnJh
bWUpIHsKKyAgICAgICAgdm0udG9wQ2FsbEZyYW1lID0gYml0d2lzZV9jYXN0PEV4ZWNTdGF0ZSo+
KHRvcENhbGxGcmFtZSk7CisgICAgfTsKKwogICAgIC8vIEZJWE1FOiBUaGVzZSBvYmplY3RzIGNv
dWxkIGJlIHByZXR0eSBiaWcgd2Ugc2hvdWxkIHRyeSB0byB0aHJvdyBPT00gaGVyZS4KLSAgICBh
dXRvKiBqc0luc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJs
eUluc3RhbmNlPih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseUluc3RhbmNlKHZtLCBpbnN0YW5jZVN0
cnVjdHVyZSwgV1RGTW92ZShpbnN0YW5jZSkpOworICAgIGF1dG8qIGpzSW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KHZtLmhlYXApKSBK
U1dlYkFzc2VtYmx5SW5zdGFuY2Uodm0sIGluc3RhbmNlU3RydWN0dXJlLCAKKyAgICAgICAgV2Fz
bTo6SW5zdGFuY2U6OmNyZWF0ZSgmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUobW9kdWxlKSwgJnZt
LnRvcEVudHJ5RnJhbWUsIFdURk1vdmUoc3RvcmVUb3BDYWxsRnJhbWUpKSk7CiAgICAganNJbnN0
YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGpzTW9kdWxlLCBtb2R1bGVOYW1lc3BhY2UpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5oCShyZXZpc2lvbiAyMjQ3OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBj
bGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNECiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhlY1N0YXRlKiwgSlNXZWJBc3NlbWJseU1vZHVsZSos
IEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSosIFJlZjxXYXNtOjpJbnN0YW5jZT4m
Jik7CisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3JlYXRlKFZNJiwgRXhlY1N0
YXRlKiwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVj
dHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRv
SlMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21U
b0pTLmNwcAkocmV2aXNpb24gMjI0Nzk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2FzbVRvSlMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzgsMjUgKzYzOCwyNSBAQCBFeHBl
Y3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWYsIEJpbmRpbmdGCiAKIHZvaWQqIHdhc21Ub0pTRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlLCBJbnN0YW5j
ZSogd2FzbUluc3RhbmNlKQogeworICAgIHdhc21JbnN0YW5jZS0+c3RvcmVUb3BDYWxsRnJhbWUo
ZXhlYyk7CiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IHdhc21JbnN0YW5j
ZS0+b3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpOwotICAgIFZNKiB2bSA9IGluc3RhbmNl
LT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgewotICAgICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgICAgIEpT
T2JqZWN0KiBlcnJvcjsKICAgICAgICAgaWYgKHR5cGUgPT0gRXhjZXB0aW9uVHlwZTo6U3RhY2tP
dmVyZmxvdykKICAgICAgICAgICAgIGVycm9yID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVycm9yID0gSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5X
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JF
eGNlcHRpb25UeXBlKHR5cGUpKTsKKyAgICAgICAgICAgIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5UnVu
dGltZUVycm9yU3RydWN0dXJlKCksIFdhc206OmVycm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5cGUo
dHlwZSkpOwogICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7
CiAgICAgfQogCi0gICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYyk7Ci0gICAgQVNTRVJUKCEhdm0t
PmNhbGxGcmFtZUZvckNhdGNoKTsKLSAgICBBU1NFUlQoISF2bS0+dGFyZ2V0TWFjaGluZVBDRm9y
VGhyb3cpOworICAgIGdlbmVyaWNVbndpbmQoJnZtLCBleGVjKTsKKyAgICBBU1NFUlQoISF2bS5j
YWxsRnJhbWVGb3JDYXRjaCk7CisgICAgQVNTRVJUKCEhdm0udGFyZ2V0TWFjaGluZVBDRm9yVGhy
b3cpOwogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBtYWtlIHRoaXMgYmV0dGVyOgogICAgIC8vIFRo
aXMgaXMgYSB0b3RhbCBoYWNrLCBidXQgdGhlIGxsaW50IChib3RoIG9wX2NhdGNoIGFuZCBoYW5k
bGVVbmNhdWdodEV4Y2VwdGlvbikKICAgICAvLyByZXF1aXJlIGEgY2VsbCBpbiB0aGUgY2FsbGVl
IGZpZWxkIHRvIGxvYWQgdGhlIFZNLiAoVGhlIGJhc2VsaW5lIEpJVCBkb2VzIG5vdCByZXF1aXJl
CkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCogd2FzbVRvSlNFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLAogICAgIC8vIHRvIHRoZSBleGNlcHRpb24gaGFuZGxlci4gSWYgd2UgZGlkIHRoaXMsIHdl
IGNvdWxkIHJlbW92ZSB0aGlzIHRlcnJpYmxlIGhhY2suCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQ0MAogICAgIGJpdHdpc2VfY2FzdDx1aW50NjRf
dCo+KGV4ZWMpW0NhbGxGcmFtZVNsb3Q6OmNhbGxlZV0gPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+
KGluc3RhbmNlLT53ZWJBc3NlbWJseVRvSlNDYWxsZWUoKSk7Ci0gICAgcmV0dXJuIHZtLT50YXJn
ZXRNYWNoaW5lUENGb3JUaHJvdzsKKyAgICByZXR1cm4gdm0udGFyZ2V0TWFjaGluZVBDRm9yVGhy
b3c7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIyNDc5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29ucwogICAgIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0
aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0s
IGV4ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBpbnN0YW5jZVN0cnVjdHVyZSwgV2FzbTo6SW5z
dGFuY2U6OmNyZWF0ZSgmdm0ud2FzbUNvbnRleHQsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+
bW9kdWxlKCkpLCAmdm0udG9wRW50cnlGcmFtZSkpOworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9k
dWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPiht
b2R1bGUtPm1vZHVsZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
IAogICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBleGVjLCBtb2R1bGUtPm1vZHVs
ZSgpLmNvbXBpbGVTeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwg
Jldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhjZXB0aW9uKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMjQ3OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0
CiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIC8vIElu
IG9yZGVyIHRvIGF2b2lkIHBvdGVudGlhbGx5IHJlY29tcGlsaW5nIGEgbW9kdWxlLiBXZSBmaXJz
dCBnYXRoZXIgYWxsIHRoZSBpbXBvcnQvbWVtb3J5IGluZm9ybWF0aW9uIHByaW9yIHRvIGNvbXBp
bGluZyBjb2RlLgotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgp
LCBXYXNtOjpJbnN0YW5jZTo6Y3JlYXRlKCZ2bS53YXNtQ29udGV4dCwgUmVmPFdhc206Ok1vZHVs
ZT4obW9kdWxlLT5tb2R1bGUoKSksICZ2bS50b3BFbnRyeUZyYW1lKSk7CisgICAgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZt
LCBleGVjLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCksIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVs
ZS0+bW9kdWxlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZXhl
Yywgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5k
ZW5jaWVzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>