<?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>222648</bug_id>
          
          <creation_ts>2021-03-03 03:43:41 -0800</creation_ts>
          <short_desc>[JSC] Simplify OSRExit side state materialization</short_desc>
          <delta_ts>2021-03-05 18:26:15 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735227</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-03 03:43:41 -0800</bug_when>
    <thetext>[JSC] Simplify OSRExit side state materialization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735228</commentid>
    <comment_count>1</comment_count>
      <attachid>422057</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-03 03:50:38 -0800</bug_when>
    <thetext>Created attachment 422057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735233</commentid>
    <comment_count>2</comment_count>
      <attachid>422061</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-03 03:57:05 -0800</bug_when>
    <thetext>Created attachment 422061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735235</commentid>
    <comment_count>3</comment_count>
      <attachid>422062</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-03 04:11:53 -0800</bug_when>
    <thetext>Created attachment 422062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735236</commentid>
    <comment_count>4</comment_count>
      <attachid>422063</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-03 04:18:50 -0800</bug_when>
    <thetext>Created attachment 422063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735238</commentid>
    <comment_count>5</comment_count>
      <attachid>422064</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-03 04:31:18 -0800</bug_when>
    <thetext>Created attachment 422064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735239</commentid>
    <comment_count>6</comment_count>
      <attachid>422065</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-03 04:38:19 -0800</bug_when>
    <thetext>Created attachment 422065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735250</commentid>
    <comment_count>7</comment_count>
      <attachid>422069</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-03 05:14:27 -0800</bug_when>
    <thetext>Created attachment 422069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736320</commentid>
    <comment_count>8</comment_count>
      <attachid>422069</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-03-05 06:39:44 -0800</bug_when>
    <thetext>Comment on attachment 422069
Patch

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

I tested the patch locally with 2 changes below, and it passes tests.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:636
&gt; +#if USE(JSVALUE64_32)

It should be `#if USE(JSVALUE64_32)`

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:659
&gt; +            break

Missing &apos;&apos;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736322</commentid>
    <comment_count>9</comment_count>
      <attachid>422069</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-03-05 06:46:08 -0800</bug_when>
    <thetext>Comment on attachment 422069
Patch

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

Patch LGTM. Informal r+. It also fixes support for double on `CheckpointOSRExitSideState`!

&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:636
&gt;&gt; +#if USE(JSVALUE64_32)
&gt; 
&gt; It should be `#if USE(JSVALUE64_32)`

I meant `#if USE(JSVALUE32_64)`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736486</commentid>
    <comment_count>10</comment_count>
      <attachid>422398</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-05 12:50:42 -0800</bug_when>
    <thetext>Created attachment 422398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736494</commentid>
    <comment_count>11</comment_count>
      <attachid>422400</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-05 13:04:38 -0800</bug_when>
    <thetext>Created attachment 422400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736608</commentid>
    <comment_count>12</comment_count>
      <attachid>422400</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-03-05 15:36:51 -0800</bug_when>
    <thetext>Comment on attachment 422400
Patch

I didn&apos;t know probe leaked memory...

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736697</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-05 18:25:53 -0800</bug_when>
    <thetext>Committed r274024: &lt;https://commits.webkit.org/r274024&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422400.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736698</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-05 18:26:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/75122234&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422057</attachid>
            <date>2021-03-03 03:50:38 -0800</date>
            <delta_ts>2021-03-03 04:06:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210303035038.patch</filename>
            <type>text/plain</type>
            <size>40493</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Mzk3NzdkODI0M2M1OTFhZGE2YWIwYTQ0NTlhNDhhOWEwZjAzOWRlLi45YTNjNGZhODA5NjgxOTAy
NWZjZDcxMmE5MzMyMzFjMGFkZmQyZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZURlYnVnKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlND
Ojp0ZXN0Q2xlYXJCaXRzNjRXaXRoTWFzayk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHM2
NFdpdGhNYXNrVGVybmFyeSk6CisgICAgICAgIChKU0M6OnRlc3RTaGlmdEFuZEFkZCk6CisgICAg
ICAgIChKU0M6OnRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQ
cm9iZVByZXNlcnZlc0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
UG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIp
OgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKToKKyAgICAgICAg
KiBiMy9haXIvdGVzdGFpci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisgICAgICAgICogZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKwog
MjAyMS0wMy0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXByb3ZlIGxvZ2dpbmcgb2YgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcyB2YWxpZGF0aW9uIGZh
aWx1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4MTJjNzYu
LjA5N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3Nl
bWJsZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKK3ZvaWQg
TWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
PiBmdW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4oc3RkRnVu
Y3Rpb25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1v
dmUoZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZmYThhYTNj
OTQyLi44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xOTc5
LDcgKzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ckJhc2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1
bmN0aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShG
dW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtzIG1lbW9y
eS4gTXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAg
ICAvLyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAv
LyBTZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9m
IGhvdyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2MWFhZi4u
NjY1ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIyLDEzIEBA
IHZvaWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBjb21waWxl
KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0czY0V2l0
aE1hc2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxs
SGVscGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAKLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
Q0hFQ0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEzIEBAIHZv
aWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQu
bW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKLSAg
ICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
aml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAg
ICAgc2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNrKEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJlc2VydmVN
YXNrKTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2NF90PihH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2OTcsNyBA
QCB2b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRBZGQoYmFz
ZUdQUiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNNX1BST0JF
KQotICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAgICAgICAg
ICAgICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJhc2VQb2lu
dGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAgLTE3NjYs
NyArMTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hF
Q0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CkBAIC0x
ODE1LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkK
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
RlBSSW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29y
ZCgwKTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRS
ZWdpc3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVj
dGVkIHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1Owog
ICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5n
cHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3ICsxODc0
LDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0
aGUgcmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnBy
b2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlRGVi
dWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0byYgY3B1
ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAg
ICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IEND
YWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAtMTg5MCwx
NCArMTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVuY3Rpb25z
IGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VR
KHRlc3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAx
MCk7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygwLCAxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBW
YWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBq
aXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIo
KTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7
CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAg
ICAgICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwog
ICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7
IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpA
QCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAg
ICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2Fz
IHJlc3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHBy
b2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6
OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQg
PSBuZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29t
cHV0ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1v
ZGlmeSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBv
dGhlciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVn
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9
IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAg
IGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2Fs
bEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIwMDMsNyAr
MjAwMyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlv
bjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMu
Ci0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291
bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdp
c3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChp
ZCkpIHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1Bv
aW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQu
cHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBA
IC0yMDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9y
ZWQuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxs
Q291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RS
ZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJ
RChpZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9n
cmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Y29udGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWco
WyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CkBA
IC0yMTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIo
KQogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRl
IGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpTRW50cnlQ
dHJUYWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJz
LgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIx
OTYsNyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3Rh
Y2sgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9i
ZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNw
dTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAg
ICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVzdFByb2Jl
TW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUg
dGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4
dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAg
ICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2Fs
bEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0
ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5ODliLi5l
NWM4NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgdGVz
dEVsaWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQobGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewotICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY29udGV4
dC5ncHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2MzZDVhODAz
MTY1NThhZi4uNmYzNzRhYjBhNDFlZWZiMjY1ZjU3ZGRkYjAyYTYxYWFkYjUxNGQyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4LDQ2IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwgdm9pZCwg
KENhbGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0g
ZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQs
IChWTSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVuY29kZWRK
U1ZhbHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCA9ICpl
eGl0UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVT
aWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0byBzaWRl
U3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hDaGVja3Bv
aW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOworCisgICAg
YXV0byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXgg
aW5kZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUtPmJ5dGVj
b2RlSW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1D
aGVja3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNW
YWx1ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAgIHNpZGVT
dGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNvbnN0IENv
ZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2Rl
T3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5n
VGFpbENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9
IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
KiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAg
ICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zm
c2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNh
bGxGcmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2Rl
T3JpZ2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQorICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30KKwogdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRUYWdzSW5Q
bGFjZSgpOwpAQCAtNTIxLDEzICs1NjEsOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KEND
YWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAKICAg
ICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERpc3Bs
YWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIENlbGxEaXNw
bGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3Vi
bGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAg
ICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODMsMTYxIEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwg
Y29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAgICAgICAgY2FzZSBDb25zdGFu
dDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkp
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdU
MCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25z
dGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAg
IGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKKyAgICAgICAgICAgICAgICAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0Jp
dHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBqaXQubG9hZDMyKAorICAgICAg
ICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2gg
KyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAgICAgICAgICAgICAgICAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5h
c0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyNlbmRpZgor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFj
azoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9Xb3JkKEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisjZWxzZQorICAgICAgICAgICAgaml0Lmxv
YWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3Zl
cnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsK
KyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0Jp
dHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyNlbmRpZgorICAg
ICAgICAgICAgYnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0XzMyKQorICAgICAgICBjYXNlIFVu
Ym94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgICAgICBqaXQubG9hZDMyKAorICAgICAgICAgICAg
ICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRl
eCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAorICAgICAgICAgICAgICAgICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0
cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAorICAgICAg
ICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2gg
KyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgor
ICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwK
KyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmUz
MigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAg
ICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRl
eCktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgY2FzZSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lz
dGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAg
ICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRj
aCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYK
KworICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0
LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsK
KyNlbHNlCisgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKEdQUkluZm86OnJlZ1QwKSk7CisjZW5kaWYKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgor
ICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0
Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5sb2FkRG91Ymxl
KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSks
IEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpm
cFJlZ1QwKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmJveERvdWJsZShG
UFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBq
aXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNz
Rm9yKEdQUkluZm86OnJlZ1QwKSk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworCisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKKyAgICAgICAg
ICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBqaXQucnNoaWZ0NjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
aW50NTJTaGlmdEFtb3VudCksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5ib3hJ
bnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBz
Y3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQ1
MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgaml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6CisgICAgICAgICAgICBqaXQubG9hZDY0
KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJveElu
dDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUklu
Zm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNj
cmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFN0cmlj
dEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAg
ICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAg
ICAgIGJyZWFrOworI2VuZGlmCisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC01ODUsMTAxICs3NzYsMTEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxl
RXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25z
dAogICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIodm0udG9wRW50cnlGcmFtZSk7CiAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5l
U3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgewotICAgICAgICAvLyBGSVhNRTogTWF5
YmUgd2Ugc2hvdWxkbid0IHVzZSBhIHByb2JlIGJ1dCBmaWxsaW5nIGFsbCB0aGUgc2lkZSBzdGF0
ZSBvYmplY3RzIGlzIHRyaWNreSBvdGhlcndpc2UuLi4KLSAgICAgICAgVmVjdG9yPFZhbHVlUmVj
b3Zlcnk+IHZhbHVlcyhvcGVyYW5kcy5udW1iZXJPZlRtcHMoKSk7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb3BlcmFuZHMubnVtYmVyT2ZUbXBzKCk7ICsraSkKLSAgICAgICAgICAg
IHZhbHVlc1tpXSA9IG9wZXJhbmRzLnRtcChpKTsKLQotICAgICAgICBWTSogdm1QdHIgPSAmdm07
Ci0gICAgICAgIGF1dG8qIHRtcFNjcmF0Y2ggPSBzY3JhdGNoICsgb3BlcmFuZHMudG1wSW5kZXgo
MCk7Ci0gICAgICAgIGppdC5wcm9iZShbPSwgdmFsdWVzID0gV1RGTW92ZSh2YWx1ZXMpXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVTaWRl
U3RhdGVDb3VudD4gc2lkZVN0YXRlczsKLSAgICAgICAgICAgIHNpZGVTdGF0ZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVEZXB0aCgpKTsKLSAgICAgICAg
ICAgIGF1dG8gc2lkZVN0YXRlQ29tbWl0dGVyID0gbWFrZVNjb3BlRXhpdChbJl0gewotICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKLSAgICAg
ICAgICAgICAgICAgICAgdm1QdHItPnB1c2hDaGVja3BvaW50T1NSU2lkZVN0YXRlKFdURk1vdmUo
c2lkZVN0YXRlc1tpXSkpOwotICAgICAgICAgICAgfSk7Ci0KLQotICAgICAgICAgICAgYXV0byBh
ZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXggaW5kZXgs
IHNpemVfdCB0bXBPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2hl
Y2twb2ludE9TUkV4aXRTaWRlU3RhdGU+IHNpZGVTdGF0ZSA9IFdURjo6bWFrZVVuaXF1ZTxDaGVj
a3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4oZnJhbWUpOwotCi0gICAgICAgICAgICAgICAgc2lkZVN0
YXRlLT5ieXRlY29kZUluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtYXhOdW1DaGVja3BvaW50VG1wczsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGF1dG8mIHJlY292ZXJ5ID0gdmFsdWVzW2kgKyB0bXBPZmZzZXRdOwotICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHdoYXQgdGhlIEZUTCBkb2VzIGFuZCBtYXRl
cmlhbGl6ZSBhbGwgdGhlIEpTVmFsdWVzIGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgotICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDb25zdGFudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVT
dGF0ZS0+dG1wc1tpXSA9IHJlY292ZXJ5LmNvbnN0YW50KCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BS
OgotICAgICAgICAgICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90Pih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjogewotICAgICAgICAgICAgICAgICAg
ICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0ganNCb29sZWFuKHN0YXRpY19jYXN0PGJvb2w+KHRt
cFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAg
ICAgICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBVbmJveGVkQ2VsbEluR1BSOgotICAgICAgICAgICAgICAgICAgICBjYXNlIEluR1BSOgot
ICAgICAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAg
ICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVpbnRlcnByZXRfY2FzdDxKU1Zh
bHVlKj4odG1wU2NyYXRjaClbaSArIHRtcE9mZnNldF07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82
NCkKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJblBhaXI6Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaWRl
U3RhdGUtPnRtcHNbaV0gPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPih0bXBTY3JhdGNoKVtp
ICsgdG1wT2Zmc2V0XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqIHZhbHVlRGVzY3Jp
cHRvciA9IGJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4odG1wU2NyYXRjaCAr
IGkgKyB0bXBPZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBz
W2ldID0gSlNWYWx1ZShKU1ZhbHVlOjpDZWxsVGFnLCB2YWx1ZURlc2NyaXB0b3ItPmFzQml0cy5w
YXlsb2FkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0
YWNrOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc0Jv
b2xlYW4oc3RhdGljX2Nhc3Q8Ym9vbD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTY0KQotCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBzaWRlU3RhdGVzLmFwcGVuZChXVEZNb3ZlKHNp
ZGVTdGF0ZSkpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgY29uc3QgQ29kZU9yaWdp
biogY29kZU9yaWdpbjsKLSAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gY29udGV4
dC5ncHI8Q2FsbEZyYW1lKj4oR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICAg
ICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luICYmIGNv
ZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi0+aW5s
aW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5nVGFpbENhbGxzKCkpIHsKLSAgICAgICAg
ICAgICAgICBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi0+Ynl0
ZWNvZGVJbmRleCgpOwotICAgICAgICAgICAgICAgIGlmICghY2FsbEJ5dGVjb2RlSW5kZXguY2hl
Y2twb2ludCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
ICAgIGF1dG8qIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgp
OwotICAgICAgICAgICAgICAgIGFkZFNpZGVTdGF0ZShyZWludGVycHJldF9jYXN0X3B0cjxDYWxs
RnJhbWUqPihyZWludGVycHJldF9jYXN0PGNoYXIqPihjYWxsRnJhbWUpICsgaW5saW5lQ2FsbEZy
YW1lLT5yZXR1cm5QQ09mZnNldCgpIC0gc2l6ZW9mKENQVVJlZ2lzdGVyKSksIGNhbGxCeXRlY29k
ZUluZGV4LCBpbmxpbmVDYWxsRnJhbWUtPnRtcE9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmICghY29kZU9yaWdpbikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLT5i
eXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQotICAgICAgICAgICAg
ICAgIGFkZFNpZGVTdGF0ZShjYWxsRnJhbWUsIGJ5dGVjb2RlSW5kZXgsIDApOwotICAgICAgICB9
KTsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUqIHRtcFNjcmF0Y2ggPSBzY3JhdGNoICsgb3BlcmFu
ZHMudG1wSW5kZXgoMCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUpPigmdm0sICZleGl0LCB0bXBTY3JhdGNo
KTsKKyAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICAgICAgaml0Lm1v
dmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25Q
dHJUYWc+KG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0ZSkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0
aW9uUHRyVGFnKTsKICAgICB9CiAKICAgICAvLyBEbyBhbGwgZGF0YSBmb3JtYXQgY29udmVyc2lv
bnMgYW5kIHN0b3JlIHRoZSByZXN1bHRzIGludG8gdGhlIHN0YWNrLgpAQCAtNjk1LDE3ICs3OTYs
MjYgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZt
LCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogCiAgICAgICAgIHN3aXRjaCAocmVjb3Zlcnku
dGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAg
IGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIEJvb2xlYW5EaXNw
bGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Cisg
ICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBVbmJveGVk
SW50MzJJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICBjYXNl
IENvbnN0YW50OgogICAgICAgICBjYXNlIEluRlBSOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgIGNhc2UgSW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAg
Y2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CisgICAgICAgIGNh
c2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdElu
dDUySW5HUFI6CisgICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CiAg
ICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwog
ICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlIC8vIG5vdCBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluUGFpcjoKKyAgICAgICAgY2FzZSBVbmJveGVk
Qm9vbGVhbkluR1BSOgogICAgICAgICAgICAgaml0LmxvYWQzMigKICAgICAgICAgICAgICAgICAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5h
c0JpdHMudGFnLAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKQEAgLTcxOSwxMDAg
KzgyOSw4IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZN
JiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUMSwKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3Bl
cmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBVbmJveGVkQ2VsbElu
R1BSOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBq
aXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAot
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6Ci0gICAg
ICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2Fk
MzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
Kj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCi0gICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAg
ICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICAgICAgY2FzZSBVbmJv
eGVkSW50MzJJbkdQUjoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgs
IEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BS
SW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
c3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJh
bmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZi
aXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFz
Qml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAg
ICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3Iob3BlcmFuZCkpOwotI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKLQotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6Ci0gICAgICAg
IGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNj
cmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnJzaGlmdDY0
KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6
OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94
SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBS
SW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdEludDUySW5HUFI6Ci0gICAgICAgIGNhc2Ug
U3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDY0KHNj
cmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmJveEludDUy
KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86
OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKLSNl
bmRpZgotCi0gICAgICAgIGNhc2UgVW5ib3hlZERvdWJsZUluRlBSOgotICAgICAgICBjYXNlIERv
dWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnB1cmlmeU5hTihG
UFJJbmZvOjpmcFJlZ1QwKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0LmJv
eERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBq
aXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9w
ZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDb25zdGFudDoKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICAgICAgaml0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKHJlY292ZXJ5LmNvbnN0YW50KCkp
KSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkp
OwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkudGFnKCkpLAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAg
ICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwotI2VuZGlmCi0gICAgICAgICAg
ICBicmVhazsKLQogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRl
ZDoKICAgICAgICAgY2FzZSBDbG9uZWRBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CiAgICAg
ICAgICAgICAvLyBEb24ndCBkbyB0aGlzLCB5ZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5oCmluZGV4IGVhZmM1ZmY0NzA4MGFhYjg0YzY5ODEyMjEyMDdhZGE1OTA2MDhmODUu
LjFiNjMzNmEyZDJmYTZlMjY1OWIzMTY5Mjk3MWFlZmU1ZTg4MzdlZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCkBAIC0xNDAsNiArMTQwLDcgQEAgc3RydWN0IE9TUkV4
aXRTdGF0ZSA6IFJlZkNvdW50ZWQ8T1NSRXhpdFN0YXRlPiB7CiAKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQsIHZvaWQsIChDYWxsRnJhbWUqKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRlYnVnUHJpbnRTcGVjdWxhdGlvbkZh
aWx1cmUsIHZvaWQsIChDYWxsRnJhbWUqLCB2b2lkKiwgdm9pZCopKTsKK0pTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlLCB2b2lkLCAo
Vk0qLCBjb25zdCBPU1JFeGl0QmFzZSosIEVuY29kZWRKU1ZhbHVlKikpOwogCiAvLyA9PT0gT1NS
RXhpdCA9PT0KIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggNDU4NzZlMjBkMGU5YmVjNWZkNzMwZGE0NGVkYmE4MTQ2NjdkZWM0Ny4uMWNl
MTIzODFlZWZkZWQwOTZhY2Y2ODg2MGI4NWY2YzM4OThiNGY2NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjQ2LDcgKzY0Niw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIGZwUmVnID0gcGFyYW1zWzBd
LmZwcigpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmVnID0g
cGFyYW1zWzBdLmdwcigpOwotICAgICAgICAgICAgICAgIGppdC5wcm9iZShbPV0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgaml0LnByb2JlRGVidWcoWz1dIChQ
cm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGlu
cHV0OwogICAgICAgICAgICAgICAgICAgICBkb3VibGUgZG91YmxlSW5wdXQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCAzODM2
Nzc4Y2EzYzdhMTFmNjhkNGFiNmU3NGE4ZDI0Yzk0ODQxZmNjLi5mMGFlMjAzNDliOGI4NTcwMWRm
ZmI1ZmVjM2JmYWM4OTE4OTNkMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC00ODAsNDMgKzQ4MCwxMSBAQCBzdGF0aWMgdm9p
ZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwg
T1NSRXhpdCYgZXhpdAogICAgIHNpemVfdCBiYXNlbGluZVZpcnR1YWxSZWdpc3RlcnNGb3JDYWxs
ZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdp
c3RlcnMoKTsKIAogICAgIGlmIChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRhaW5z
QWN0aXZlQ2hlY2twb2ludCgpKSB7Ci0gICAgICAgIEpTVmFsdWUqIHRtcFNjcmF0Y2ggPSByZWlu
dGVycHJldF9jYXN0PEpTVmFsdWUqPihzY3JhdGNoICsgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFs
dWVzLnRtcEluZGV4KDApKTsKLSAgICAgICAgVk0qIHZtUHRyID0gJnZtOwotICAgICAgICBqaXQu
cHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4sIFZNOjpleHBlY3Rl
ZE1heEFjdGl2ZVNpZGVTdGF0ZUNvdW50PiBzaWRlU3RhdGVzOwotICAgICAgICAgICAgc2lkZVN0
YXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4aXQubV9jb2RlT3JpZ2luLmlubGluZURlcHRo
KCkpOwotICAgICAgICAgICAgYXV0byBzaWRlU3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0
KFsmXSB7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IHNpZGVTdGF0ZXMuc2l6ZSgp
OyBpLS07KQotICAgICAgICAgICAgICAgICAgICB2bVB0ci0+cHVzaENoZWNrcG9pbnRPU1JTaWRl
U3RhdGUoV1RGTW92ZShzaWRlU3RhdGVzW2ldKSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgYXV0byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2Rl
SW5kZXggaW5kZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+IHNpZGVTdGF0ZSA9IFdURjo6bWFr
ZVVuaXF1ZTxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4oZnJhbWUpOwotCi0gICAgICAgICAg
ICAgICAgc2lkZVN0YXRlLT5ieXRlY29kZUluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1DaGVja3BvaW50VG1wczsgKytpKQotICAgICAg
ICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSB0bXBTY3JhdGNoW2kgKyB0bXBPZmZz
ZXRdOwotCi0gICAgICAgICAgICAgICAgc2lkZVN0YXRlcy5hcHBlbmQoV1RGTW92ZShzaWRlU3Rh
dGUpKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGNvbnN0IENvZGVPcmlnaW4qIGNv
ZGVPcmlnaW47Ci0gICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGNvbnRleHQuZ3By
PENhbGxGcmFtZSo+KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGZv
ciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbiAmJiBjb2RlT3Jp
Z2luLT5pbmxpbmVDYWxsRnJhbWUoKTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4tPmlubGluZUNh
bGxGcmFtZSgpLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7Ci0gICAgICAgICAgICAg
ICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2Rl
SW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxCeXRlY29kZUluZGV4LmNoZWNrcG9p
bnQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBh
dXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKLSAg
ICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUocmVpbnRlcnByZXRfY2FzdDxDYWxsRnJhbWUqPihy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjYWxsRnJhbWUpICsgaW5saW5lQ2FsbEZyYW1lLT5yZXR1
cm5QQ09mZnNldCgpIC0gc2l6ZW9mKENQVVJlZ2lzdGVyKSksIGNhbGxCeXRlY29kZUluZGV4LCBp
bmxpbmVDYWxsRnJhbWUtPnRtcE9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICghY29kZU9yaWdpbikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLT5ieXRlY29kZUlu
ZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQotICAgICAgICAgICAgICAgIGFkZFNp
ZGVTdGF0ZShjYWxsRnJhbWUsIGJ5dGVjb2RlSW5kZXgsIDApOwotICAgICAgICB9KTsKKyAgICAg
ICAgRW5jb2RlZEpTVmFsdWUqIHRtcFNjcmF0Y2ggPSBzY3JhdGNoICsgZXhpdC5tX2Rlc2NyaXB0
b3ItPm1fdmFsdWVzLnRtcEluZGV4KDApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZtLCAmZXhpdCwg
dG1wU2NyYXRjaCk7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAg
ICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgfQogCiAgICAgLy8gTm93IGdldCBzdGF0ZSBvdXQg
b2YgdGhlIHNjcmF0Y2ggYnVmZmVyIGFuZCBwbGFjZSBpdCBiYWNrIGludG8gdGhlIHN0YWNrLiBU
aGUgdmFsdWVzIGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDZhM2ZiZDc2YzUx
ZGE0ZDdhZDVhMDJhZDkzOTI5MzUyMWE1MzAyZDIuLmRlYTE5NDUxMzczMDBjYzA1NjQyODY5OTFl
ZTkxZjVjM2E5MmExMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI3Miw3ICsy
NzIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAjaWYgRU5BQkxFKE1B
U01fUFJPQkUpCiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp0cmFjZUJhc2VsaW5lSklU
RXhlY3V0aW9uKCkpKSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29k
ZUJsb2NrOwotICAgICAgICAgICAgcHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7Cisg
ICAgICAgICAgICBwcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGN0eCkgewogICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbigiSklUIFsiLCBieXRlY29kZU9mZnNldCwgIl0gIiwgb3Bjb2Rl
TmFtZXNbb3Bjb2RlSURdLCAiIGNmciAiLCBSYXdQb2ludGVyKGN0eC5mcCgpKSwgIiBAICIsIGNv
ZGVCbG9jayk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtNTQzLDcgKzU0Myw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwogICAg
ICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICAgICAgICAg
IHByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgcHJvYmVEZWJ1
ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
IkpJVCBbIiwgYnl0ZWNvZGVPZmZzZXQsICJdIFNMT1cgIiwgb3Bjb2RlTmFtZXNbb3Bjb2RlSURd
LCAiIGNmciAiLCBSYXdQb2ludGVyKGN0eC5mcCgpKSwgIiBAICIsIGNvZGVCbG9jayk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfQo=
</data>
<flag name="commit-queue"
          id="441082"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422061</attachid>
            <date>2021-03-03 03:57:05 -0800</date>
            <delta_ts>2021-03-03 04:11:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210303035705.patch</filename>
            <type>text/plain</type>
            <size>40485</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Mzk3NzdkODI0M2M1OTFhZGE2YWIwYTQ0NTlhNDhhOWEwZjAzOWRlLi45YTNjNGZhODA5NjgxOTAy
NWZjZDcxMmE5MzMyMzFjMGFkZmQyZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZURlYnVnKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlND
Ojp0ZXN0Q2xlYXJCaXRzNjRXaXRoTWFzayk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHM2
NFdpdGhNYXNrVGVybmFyeSk6CisgICAgICAgIChKU0M6OnRlc3RTaGlmdEFuZEFkZCk6CisgICAg
ICAgIChKU0M6OnRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQ
cm9iZVByZXNlcnZlc0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
UG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIp
OgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKToKKyAgICAgICAg
KiBiMy9haXIvdGVzdGFpci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisgICAgICAgICogZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKwog
MjAyMS0wMy0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXByb3ZlIGxvZ2dpbmcgb2YgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcyB2YWxpZGF0aW9uIGZh
aWx1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4MTJjNzYu
LjA5N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3Nl
bWJsZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKK3ZvaWQg
TWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
PiBmdW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4oc3RkRnVu
Y3Rpb25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1v
dmUoZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZmYThhYTNj
OTQyLi44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xOTc5
LDcgKzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ckJhc2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1
bmN0aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShG
dW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtzIG1lbW9y
eS4gTXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAg
ICAvLyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAv
LyBTZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9m
IGhvdyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2MWFhZi4u
NjY1ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIyLDEzIEBA
IHZvaWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBjb21waWxl
KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0czY0V2l0
aE1hc2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxs
SGVscGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAKLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
Q0hFQ0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEzIEBAIHZv
aWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQu
bW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKLSAg
ICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
aml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAg
ICAgc2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNrKEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJlc2VydmVN
YXNrKTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2NF90PihH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2OTcsNyBA
QCB2b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRBZGQoYmFz
ZUdQUiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNNX1BST0JF
KQotICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAgICAgICAg
ICAgICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJhc2VQb2lu
dGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAgLTE3NjYs
NyArMTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hF
Q0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CkBAIC0x
ODE1LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkK
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
RlBSSW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29y
ZCgwKTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRS
ZWdpc3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVj
dGVkIHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1Owog
ICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5n
cHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3ICsxODc0
LDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0
aGUgcmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnBy
b2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlRGVi
dWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0byYgY3B1
ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAg
ICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IEND
YWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAtMTg5MCwx
NCArMTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVuY3Rpb25z
IGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VR
KHRlc3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAx
MCk7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygwLCAxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBW
YWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBq
aXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIo
KTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7
CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAg
ICAgICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwog
ICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7
IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpA
QCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAg
ICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2Fz
IHJlc3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHBy
b2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6
OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQg
PSBuZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29t
cHV0ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1v
ZGlmeSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBv
dGhlciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVn
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9
IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAg
IGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2Fs
bEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIwMDMsNyAr
MjAwMyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlv
bjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMu
Ci0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291
bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdp
c3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChp
ZCkpIHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1Bv
aW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQu
cHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBA
IC0yMDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9y
ZWQuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxs
Q291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RS
ZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJ
RChpZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9n
cmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Y29udGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWco
WyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CkBA
IC0yMTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIo
KQogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRl
IGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpTRW50cnlQ
dHJUYWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJz
LgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIx
OTYsNyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3Rh
Y2sgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9i
ZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNw
dTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAg
ICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVzdFByb2Jl
TW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUg
dGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4
dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAg
ICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2Fs
bEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0
ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5ODliLi5l
NWM4NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgdGVz
dEVsaWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQobGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewotICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY29udGV4
dC5ncHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2MzZDVhODAz
MTY1NThhZi4uMWJhMDAxYWUzYTFiZTdiZGE2MTA4MjhlMDA1ZGJmZTU3YjJmNTEyMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4LDQ2IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwgdm9pZCwg
KENhbGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0g
ZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQs
IChWTSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVuY29kZWRK
U1ZhbHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCA9ICpl
eGl0UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVT
aWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0byBzaWRl
U3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hDaGVja3Bv
aW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOworCisgICAg
YXV0byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXgg
aW5kZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUtPmJ5dGVj
b2RlSW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1D
aGVja3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNW
YWx1ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAgIHNpZGVT
dGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNvbnN0IENv
ZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2Rl
T3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5n
VGFpbENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9
IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
KiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAg
ICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zm
c2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNh
bGxGcmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2Rl
T3JpZ2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQorICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30KKwogdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRUYWdzSW5Q
bGFjZSgpOwpAQCAtNTIxLDEzICs1NjEsOSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KEND
YWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAKICAg
ICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERpc3Bs
YWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIENlbGxEaXNw
bGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBEb3Vi
bGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNl
ZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRy
ZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAg
ICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODMsMTYxIEBAIHZvaWQgT1NSRXhpdDo6Y29t
cGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwg
Y29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAgICAgICAgY2FzZSBDb25zdGFu
dDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkp
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdU
MCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25z
dGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAg
IGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKKyAgICAgICAgICAgICAgICAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0Jp
dHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBqaXQubG9hZDMyKAorICAgICAg
ICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2gg
KyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAgICAgICAgICAgICAgICAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5h
c0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyNlbmRpZgor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFj
azoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9Xb3JkKEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisjZWxzZQorICAgICAgICAgICAgaml0Lmxv
YWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3Zl
cnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsK
KyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0Jp
dHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyNlbmRpZgorICAg
ICAgICAgICAgYnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0XzMyKQorICAgICAgICBjYXNlIFVu
Ym94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgICAgICBqaXQubG9hZDMyKAorICAgICAgICAgICAg
ICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRl
eCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAorICAgICAgICAgICAgICAgICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0
cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAorICAgICAg
ICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2gg
KyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgor
ICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwK
KyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmUz
MigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAg
ICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRl
eCktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgY2FzZSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lz
dGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGpp
dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAg
ICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRj
aCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYK
KworICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgICAgIGppdC5tb3Zl
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0
LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsK
KyNlbHNlCisgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKKyNlbmRpZgorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAg
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCAr
IGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmxvYWREb3VibGUoQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVn
VDApOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUklu
Zm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQ
UkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworI2Vsc2UKKyAgICAgICAgICAgIGppdC5z
dG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMCkpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKKworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CisgICAgICAgICAgICBqaXQu
bG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0
LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hp
ZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuYm94SW50NTIoR1BS
SW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCAr
IGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSW50NTJEaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1Zh
bHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0
LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEs
IEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNo
ICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJ
bmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJl
Z1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsg
aW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRp
c3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0
b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBicmVh
azsKKyNlbmRpZgorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtNTg1LDEwMSArNzc2LDExIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAg
ICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRv
cEVudHJ5RnJhbWUpOwogCiAgICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZVN0YWNrQ29u
dGFpbnNBY3RpdmVDaGVja3BvaW50KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNo
b3VsZG4ndCB1c2UgYSBwcm9iZSBidXQgZmlsbGluZyBhbGwgdGhlIHNpZGUgc3RhdGUgb2JqZWN0
cyBpcyB0cmlja3kgb3RoZXJ3aXNlLi4uCi0gICAgICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiB2
YWx1ZXMob3BlcmFuZHMubnVtYmVyT2ZUbXBzKCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG9wZXJhbmRzLm51bWJlck9mVG1wcygpOyArK2kpCi0gICAgICAgICAgICB2YWx1ZXNb
aV0gPSBvcGVyYW5kcy50bXAoaSk7Ci0KLSAgICAgICAgVk0qIHZtUHRyID0gJnZtOwotICAgICAg
ICBhdXRvKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOwotICAg
ICAgICBqaXQucHJvYmUoWz0sIHZhbHVlcyA9IFdURk1vdmUodmFsdWVzKV0gKFByb2JlOjpDb250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiwgVk06OmV4cGVjdGVkTWF4QWN0aXZlU2lkZVN0YXRlQ291
bnQ+IHNpZGVTdGF0ZXM7Ci0gICAgICAgICAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7Ci0gICAgICAgICAgICBhdXRv
IHNpZGVTdGF0ZUNvbW1pdHRlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gc2lkZVN0YXRlcy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAg
ICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShXVEZNb3ZlKHNpZGVTdGF0
ZXNbaV0pKTsKLSAgICAgICAgICAgIH0pOwotCi0KLSAgICAgICAgICAgIGF1dG8gYWRkU2lkZVN0
YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBCeXRlY29kZUluZGV4IGluZGV4LCBzaXplX3Qg
dG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRP
U1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2ludE9T
UkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+Ynl0
ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBhdXRv
JiByZWNvdmVyeSA9IHZhbHVlc1tpICsgdG1wT2Zmc2V0XTsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBkbyB3aGF0IHRoZSBGVEwgZG9lcyBhbmQgbWF0ZXJpYWxpemUg
YWxsIHRoZSBKU1ZhbHVlcyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KLSAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotCi0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRt
cHNbaV0gPSByZWNvdmVyeS5jb25zdGFudCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAg
ICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0ganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNp
ZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2FzdDxib29sPih0bXBTY3JhdGNo
W2kgKyB0bXBPZmZzZXRdKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgICAgICAgICBj
YXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVW5i
b3hlZENlbGxJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHRt
cFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICAgICAgICAgICAgICBjYXNlIERp
c3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50
bXBzW2ldID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4odG1wU2NyYXRjaClbaSArIHRtcE9m
ZnNldF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOiB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKiB2YWx1ZURlc2NyaXB0b3IgPSBi
aXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHRtcFNjcmF0Y2ggKyBpICsgdG1w
T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IEpT
VmFsdWUoSlNWYWx1ZTo6Q2VsbFRhZywgdmFsdWVEZXNjcmlwdG9yLT5hc0JpdHMucGF5bG9hZCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazogewot
ICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0ganNCb29sZWFuKHN0
YXRpY19jYXN0PGJvb2w+KHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKLQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgc2lkZVN0YXRlcy5hcHBlbmQoV1RGTW92ZShzaWRlU3RhdGUp
KTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGNvbnN0IENvZGVPcmlnaW4qIGNvZGVP
cmlnaW47Ci0gICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGNvbnRleHQuZ3ByPENh
bGxGcmFtZSo+KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGZvciAo
Y29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbiAmJiBjb2RlT3JpZ2lu
LT5pbmxpbmVDYWxsRnJhbWUoKTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxG
cmFtZSgpLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7Ci0gICAgICAgICAgICAgICAg
Qnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5k
ZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxCeXRlY29kZUluZGV4LmNoZWNrcG9pbnQo
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBhdXRv
KiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAg
ICAgICAgICAgICBhZGRTaWRlU3RhdGUocmVpbnRlcnByZXRfY2FzdF9wdHI8Q2FsbEZyYW1lKj4o
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSArIGlubGluZUNhbGxGcmFtZS0+cmV0
dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3RlcikpLCBjYWxsQnl0ZWNvZGVJbmRleCwg
aW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAg
ICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi0+Ynl0ZWNvZGVJ
bmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgICAgICBhZGRT
aWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKLSAgICAgICAgfSk7CisgICAg
ICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcElu
ZGV4KDApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0
ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZtLCAmZXhpdCwgdG1wU2NyYXRjaCk7CisgICAg
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgICAgIGppdC5tb3ZlKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CisgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRh
Zyk7CiAgICAgfQogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBz
dG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KQEAgLTY5NSwxNyArNzk2LDI2IEBAIHZv
aWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3Qg
T1NSRXhpdCYgZXhpdCwgY29uc3QKIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1
ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIERv
dWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBj
YXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5H
UFI6CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKyAgICAgICAgY2FzZSBDb25zdGFu
dDoKICAgICAgICAgY2FzZSBJbkZQUjoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNl
IEluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2Vs
bERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0
YWNrOgorICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgorICAgICAgICBjYXNlIEludDUy
RGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BS
OgorICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAg
ICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFM
VUU2NCkKICAgICAgICAgY2FzZSBJblBhaXI6CisgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5J
bkdQUjoKICAgICAgICAgICAgIGppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRh
ZywKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkBAIC03MTksMTAwICs4MjksOCBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNv
bnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEs
CiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsK
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAg
ICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQz
MigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKLSAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBq
aXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgotICAgICAgICBjYXNl
IEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAotICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5z
dG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVh
azsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgICAgIGNhc2UgVW5ib3hlZEludDMy
SW5HUFI6Ci0gICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9Xb3JkKEdQUkluZm86OnJl
Z1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQo
R1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0j
ZWxzZQotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5
bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
c3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpJbnQzMlRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdG
b3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2Fk
Rm9yKG9wZXJhbmQpKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0KLSNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgotICAgICAgICBjYXNlIElu
dDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsg
aW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5yc2hpZnQ2NCgKLSAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNo
aWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmJveEludDUyKEdQ
UkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZw
UmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgotICAgICAgICBjYXNlIFN0cmljdElu
dDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsg
aW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZv
OjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQot
ICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNw
bGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAg
ICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAp
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6
ZnBSZWdUMCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5ib3hEb3VibGUo
RlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3Jl
NjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7
Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgICAgIGppdC5zdG9yZTY0KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksCi0gICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNl
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKLSAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQu
c3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihy
ZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7
Ci0KICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CiAgICAg
ICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgogICAgICAgICAgICAg
Ly8gRG9uJ3QgZG8gdGhpcywgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAppbmRleCBlYWZjNWZmNDcwODBhYWI4NGM2OTgxMjIxMjA3YWRhNTkwNjA4Zjg1Li4xYjYzMzZh
MmQyZmE2ZTI2NTliMzE2OTI5NzFhZWZlNWU4ODM3ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaApAQCAtMTQwLDYgKzE0MCw3IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGUg
OiBSZWZDb3VudGVkPE9TUkV4aXRTdGF0ZT4gewogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0LCB2b2lkLCAoQ2FsbEZyYW1lKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlLCB2
b2lkLCAoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0ZSwgdm9pZCwgKFZNKiwgY29u
c3QgT1NSRXhpdEJhc2UqLCBFbmNvZGVkSlNWYWx1ZSopKTsKIAogLy8gPT09IE9TUkV4aXQgPT09
CiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmlu
ZGV4IDQ1ODc2ZTIwZDBlOWJlYzVmZDczMGRhNDRlZGJhODE0NjY3ZGVjNDcuLjFjZTEyMzgxZWVm
ZGVkMDk2YWNmNjg4NjBiODVmNmMzODk4YjRmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTY0Niw3ICs2NDYsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBmcFJlZyA9IHBhcmFtc1swXS5mcHIoKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJlZyA9IHBhcmFtc1sw
XS5ncHIoKTsKLSAgICAgICAgICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBpbnB1dDsKICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlIGRvdWJsZUlucHV0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggMzgzNjc3OGNhM2M3
YTExZjY4ZDRhYjZlNzRhOGQyNGM5NDg0MWZjYy4uZjBhZTIwMzQ5YjhiODU3MDFkZmZiNWZlYzNi
ZmFjODkxODkzZDI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RXhpdENvbXBpbGVyLmNwcApAQCAtNDgwLDQzICs0ODAsMTEgQEAgc3RhdGljIHZvaWQgY29tcGls
ZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQm
IGV4aXQKICAgICBzaXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXMg
PSBiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7
CiAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lU3RhY2tDb250YWluc0FjdGl2ZUNo
ZWNrcG9pbnQoKSkgewotICAgICAgICBKU1ZhbHVlKiB0bXBTY3JhdGNoID0gcmVpbnRlcnByZXRf
Y2FzdDxKU1ZhbHVlKj4oc2NyYXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJ
bmRleCgwKSk7Ci0gICAgICAgIFZNKiB2bVB0ciA9ICZ2bTsKLSAgICAgICAgaml0LnByb2JlKFs9
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3Rp
dmVTaWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKLSAgICAgICAgICAgIHNpZGVTdGF0ZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVEZXB0aCgpKTsKLSAg
ICAgICAgICAgIGF1dG8gc2lkZVN0YXRlQ29tbWl0dGVyID0gbWFrZVNjb3BlRXhpdChbJl0gewot
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykK
LSAgICAgICAgICAgICAgICAgICAgdm1QdHItPnB1c2hDaGVja3BvaW50T1NSU2lkZVN0YXRlKFdU
Rk1vdmUoc2lkZVN0YXRlc1tpXSkpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF1
dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBCeXRlY29kZUluZGV4IGlu
ZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8
Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQotICAgICAgICAgICAgICAgIHNp
ZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsraSkKLSAgICAgICAgICAgICAg
ICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gdG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XTsKLQot
ICAgICAgICAgICAgICAgIHNpZGVTdGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7Ci0g
ICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2lu
OwotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBjb250ZXh0LmdwcjxDYWxsRnJh
bWUqPihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBmb3IgKGNvZGVP
cmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5s
aW5lQ2FsbEZyYW1lKCk7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUo
KS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewotICAgICAgICAgICAgICAgIEJ5dGVj
b2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYXV0byogaW5s
aW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAg
ICAgICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1lKj4ocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSArIGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZz
ZXQoKSAtIHNpemVvZihDUFVSZWdpc3RlcikpLCBjYWxsQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2Fs
bEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWNv
ZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBi
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUo
Y2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKLSAgICAgICAgfSk7CisgICAgICAgIEVuY29k
ZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3Zh
bHVlcy50bXBJbmRleCgwKTsKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0ZSk+KCZ2bSwgJmV4aXQsIHRtcFNjcmF0
Y2gpOworICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgICAgICBqaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKSksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVy
YXRpb25QdHJUYWcpOwogICAgIH0KIAogICAgIC8vIE5vdyBnZXQgc3RhdGUgb3V0IG9mIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBhbmQgcGxhY2UgaXQgYmFjayBpbnRvIHRoZSBzdGFjay4gVGhlIHZhbHVl
cyBhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA2YTNmYmQ3NmM1MWRhNGQ3YWQ1
YTAyYWQ5MzkyOTM1MjFhNTMwMmQyLi5kZWExOTQ1MTM3MzAwY2MwNTY0Mjg2OTkxZWU5MWY1YzNh
OTJhMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogI2lmIEVOQUJMRShNQVNNX1BST0JF
KQogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlv
bigpKSkgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsK
LSAgICAgICAgICAgIHByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAg
ICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKICAgICAgICAgICAgICAg
ICBkYXRhTG9nTG4oIkpJVCBbIiwgYnl0ZWNvZGVPZmZzZXQsICJdICIsIG9wY29kZU5hbWVzW29w
Y29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihjdHguZnAoKSksICIgQCAiLCBjb2RlQmxvY2sp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgICAgICAgICBwcm9iZShb
PV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIHByb2JlRGVidWcoWz1dIChQ
cm9iZTo6Q29udGV4dCYgY3R4KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJKSVQgWyIs
IGJ5dGVjb2RlT2Zmc2V0LCAiXSBTTE9XICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIg
IiwgUmF3UG9pbnRlcihjdHguZnAoKSksICIgQCAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422062</attachid>
            <date>2021-03-03 04:11:53 -0800</date>
            <delta_ts>2021-03-03 04:18:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210303041153.patch</filename>
            <type>text/plain</type>
            <size>40845</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Mzk3NzdkODI0M2M1OTFhZGE2YWIwYTQ0NTlhNDhhOWEwZjAzOWRlLi45YTNjNGZhODA5NjgxOTAy
NWZjZDcxMmE5MzMyMzFjMGFkZmQyZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZURlYnVnKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlND
Ojp0ZXN0Q2xlYXJCaXRzNjRXaXRoTWFzayk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHM2
NFdpdGhNYXNrVGVybmFyeSk6CisgICAgICAgIChKU0M6OnRlc3RTaGlmdEFuZEFkZCk6CisgICAg
ICAgIChKU0M6OnRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQ
cm9iZVByZXNlcnZlc0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
UG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIp
OgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKToKKyAgICAgICAg
KiBiMy9haXIvdGVzdGFpci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisgICAgICAgICogZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKwog
MjAyMS0wMy0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXByb3ZlIGxvZ2dpbmcgb2YgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcyB2YWxpZGF0aW9uIGZh
aWx1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4MTJjNzYu
LjA5N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3Nl
bWJsZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKK3ZvaWQg
TWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
PiBmdW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4oc3RkRnVu
Y3Rpb25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1v
dmUoZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZmYThhYTNj
OTQyLi44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xOTc5
LDcgKzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ckJhc2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1
bmN0aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShG
dW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtzIG1lbW9y
eS4gTXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAg
ICAvLyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAv
LyBTZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9m
IGhvdyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2MWFhZi4u
NjY1ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIyLDEzIEBA
IHZvaWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBjb21waWxl
KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0czY0V2l0
aE1hc2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxs
SGVscGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAKLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
Q0hFQ0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEzIEBAIHZv
aWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQu
bW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKLSAg
ICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
aml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAg
ICAgc2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNrKEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJlc2VydmVN
YXNrKTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2NF90PihH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2OTcsNyBA
QCB2b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRBZGQoYmFz
ZUdQUiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNNX1BST0JF
KQotICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAgICAgICAg
ICAgICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJhc2VQb2lu
dGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAgLTE3NjYs
NyArMTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hF
Q0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CkBAIC0x
ODE1LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkK
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
RlBSSW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29y
ZCgwKTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRS
ZWdpc3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVj
dGVkIHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1Owog
ICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5n
cHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3ICsxODc0
LDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0
aGUgcmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnBy
b2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlRGVi
dWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0byYgY3B1
ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAg
ICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IEND
YWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAtMTg5MCwx
NCArMTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVuY3Rpb25z
IGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VR
KHRlc3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAx
MCk7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygwLCAxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBW
YWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBq
aXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIo
KTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7
CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAg
ICAgICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwog
ICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7
IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpA
QCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAg
ICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2Fz
IHJlc3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHBy
b2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6
OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQg
PSBuZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29t
cHV0ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1v
ZGlmeSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBv
dGhlciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVn
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9
IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAg
IGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2Fs
bEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIwMDMsNyAr
MjAwMyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlv
bjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMu
Ci0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291
bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdp
c3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChp
ZCkpIHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1Bv
aW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQu
cHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBA
IC0yMDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9y
ZWQuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxs
Q291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RS
ZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJ
RChpZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9n
cmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Y29udGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWco
WyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CkBA
IC0yMTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIo
KQogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRl
IGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpTRW50cnlQ
dHJUYWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJz
LgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIx
OTYsNyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3Rh
Y2sgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9i
ZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNw
dTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAg
ICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVzdFByb2Jl
TW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUg
dGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4
dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAg
ICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2Fs
bEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0
ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5ODliLi5l
NWM4NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgdGVz
dEVsaWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQobGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewotICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY29udGV4
dC5ncHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2MzZDVhODAz
MTY1NThhZi4uZDgwOThjZDNlMGUzYTRkMTE4ODQ2NzU5ZWE2MzFkODgyZGEzMjEwZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4LDQ2IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwgdm9pZCwg
KENhbGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0g
ZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQs
IChWTSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVuY29kZWRK
U1ZhbHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCA9ICpl
eGl0UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVT
aWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0byBzaWRl
U3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hDaGVja3Bv
aW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOworCisgICAg
YXV0byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXgg
aW5kZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUtPmJ5dGVj
b2RlSW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1D
aGVja3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNW
YWx1ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAgIHNpZGVT
dGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNvbnN0IENv
ZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2Rl
T3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5n
VGFpbENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9
IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
KiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAg
ICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zm
c2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNh
bGxGcmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2Rl
T3JpZ2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQorICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30KKwogdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRUYWdzSW5Q
bGFjZSgpOwpAQCAtNTE2LDE4ICs1NTYsMTcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChD
Q2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAg
IC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBs
YWNlIG9uIHRoZSBzdGFjay4KICAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4K
IAorICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVj
b3ZlcmllcyBiZWxvdy4KKyAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMo
KTsKKwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVy
YW5kc1tpbmRleF07CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewog
ICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9vbGVhbkRp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBT
dHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNj
cmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODYsMTYxIEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29u
c3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAg
ICAgICAgY2FzZSBDb25zdGFudDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVj
b3ZlcnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAmYml0d2lz
ZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMu
dGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKKyAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBq
aXQubG9hZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwK
KyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5w
YXlsb2FkKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQz
MkRpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0
LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lz
dGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9X
b3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQub3I2
NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisjZWxzZQor
ICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXls
b2FkKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0XzMy
KQorICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgICAgICBqaXQubG9h
ZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAorICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxv
YWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJv
b2xlYW5UYWcpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0
LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBV
bmJveGVkQ2VsbEluR1BSOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMucGF5bG9hZCwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFn
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0
LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAgICAgICAgICAgICZi
aXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFz
Qml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAg
ICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAg
ICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNo
ICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQubG9hZERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBS
SW5mbzo6ZnBSZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsK
KyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAg
aml0LmxvYWREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1
YWxSZWdpc3RlcigpKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQucHVyaWZ5
TmFOKEZQUkluZm86OmZwUmVnVDApOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBq
aXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworI2Vsc2UK
KyAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworI2VuZGlmCisgICAgICAgICAgICBicmVh
azsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6
CisgICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgaml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAg
ICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0KEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0
b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICAgICAg
aml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAg
IGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86
OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGppdC5sb2Fk
NjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJl
Z1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwor
ICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7
CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTg1LDEwMSArNzc5LDExIEBAIHZvaWQgT1NSRXhp
dDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYg
ZXhpdCwgY29uc3QKICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwogCiAgICAgaWYgKGV4aXQubV9jb2RlT3Jp
Z2luLmlubGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IE1heWJlIHdlIHNob3VsZG4ndCB1c2UgYSBwcm9iZSBidXQgZmlsbGluZyBhbGwgdGhl
IHNpZGUgc3RhdGUgb2JqZWN0cyBpcyB0cmlja3kgb3RoZXJ3aXNlLi4uCi0gICAgICAgIFZlY3Rv
cjxWYWx1ZVJlY292ZXJ5PiB2YWx1ZXMob3BlcmFuZHMubnVtYmVyT2ZUbXBzKCkpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhbmRzLm51bWJlck9mVG1wcygpOyArK2kpCi0g
ICAgICAgICAgICB2YWx1ZXNbaV0gPSBvcGVyYW5kcy50bXAoaSk7Ci0KLSAgICAgICAgVk0qIHZt
UHRyID0gJnZtOwotICAgICAgICBhdXRvKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIG9wZXJhbmRz
LnRtcEluZGV4KDApOwotICAgICAgICBqaXQucHJvYmUoWz0sIHZhbHVlcyA9IFdURk1vdmUodmFs
dWVzKV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiwgVk06OmV4cGVjdGVkTWF4
QWN0aXZlU2lkZVN0YXRlQ291bnQ+IHNpZGVTdGF0ZXM7Ci0gICAgICAgICAgICBzaWRlU3RhdGVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7
Ci0gICAgICAgICAgICBhdXRvIHNpZGVTdGF0ZUNvbW1pdHRlciA9IG1ha2VTY29wZUV4aXQoWyZd
IHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gc2lkZVN0YXRlcy5zaXplKCk7IGkt
LTspCi0gICAgICAgICAgICAgICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0
ZShXVEZNb3ZlKHNpZGVTdGF0ZXNbaV0pKTsKLSAgICAgICAgICAgIH0pOwotCi0KLSAgICAgICAg
ICAgIGF1dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBCeXRlY29kZUlu
ZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VV
bmlxdWU8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQotICAgICAgICAgICAg
ICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICBhdXRvJiByZWNvdmVyeSA9IHZhbHVlc1tpICsgdG1wT2Zmc2V0XTsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB3aGF0IHRoZSBGVEwgZG9l
cyBhbmQgbWF0ZXJpYWxpemUgYWxsIHRoZSBKU1ZhbHVlcyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZl
ci4KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewot
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWNvdmVyeS5jb25zdGFudCgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVk
SW50MzJJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNT
dGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0ganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2Fz
dDxib29sPih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNWYWx1ZSo+KHRtcFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNlbHNlIC8vIFVTRShK
U1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICAg
ICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAg
ICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4odG1w
U2NyYXRjaClbaSArIHRtcE9mZnNldF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbElu
R1BSOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKiB2
YWx1ZURlc2NyaXB0b3IgPSBiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHRt
cFNjcmF0Y2ggKyBpICsgdG1wT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVT
dGF0ZS0+dG1wc1tpXSA9IEpTVmFsdWUoSlNWYWx1ZTo6Q2VsbFRhZywgdmFsdWVEZXNjcmlwdG9y
LT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3Bs
YWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBz
W2ldID0ganNCb29sZWFuKHN0YXRpY19jYXN0PGJvb2w+KHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNl
dF0pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLQotICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc2lkZVN0YXRlcy5hcHBlbmQo
V1RGTW92ZShzaWRlU3RhdGUpKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGNvbnN0
IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47Ci0gICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IGNvbnRleHQuZ3ByPENhbGxGcmFtZSo+KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
LSAgICAgICAgICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9y
aWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsgY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW4tPmlubGluZUNhbGxGcmFtZSgpLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7
Ci0gICAgICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9IGNvZGVP
cmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxCeXRlY29k
ZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVD
YWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUocmVpbnRlcnByZXRfY2Fz
dF9wdHI8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSArIGlu
bGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3RlcikpLCBj
YWxsQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29k
ZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAg
ICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsK
LSAgICAgICAgfSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRj
aCArIG9wZXJhbmRzLnRtcEluZGV4KDApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZtLCAmZXhpdCwg
dG1wU2NyYXRjaCk7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAg
ICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgfQogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0
IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KQEAgLTY5
NSwxNyArNzk5LDI2IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBq
aXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKIAogICAgICAgICBzd2l0Y2gg
KHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNr
OgorICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBC
b29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5K
U1N0YWNrOgorICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNh
c2UgVW5ib3hlZEludDMySW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKyAg
ICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgY2FzZSBJbkZQUjoKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgICAgICBjYXNlIEluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6
Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBCb29s
ZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BSOgor
ICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFVuYm94
ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5K
U1N0YWNrOgogICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86
OnJlZ1QwKTsKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZWxz
ZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBJblBhaXI6CisgICAgICAgIGNh
c2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKICAgICAgICAgICAgIGppdC5sb2FkMzIoCiAgICAgICAg
ICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCAr
IGluZGV4KS0+YXNCaXRzLnRhZywKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CkBA
IC03MTksMTAwICs4MzIsOCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVy
cyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVW5i
b3hlZENlbGxJbkdQUjoKLSAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigK
LSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5k
KSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFu
ZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbklu
R1BSOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAg
ICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5U
YWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsK
LSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
LAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7
Ci0gICAgICAgICAgICBicmVhazsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgICAg
IGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRj
aCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMy
VG9Xb3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
b3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAg
ICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsg
aW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIo
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJl
YWs7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BS
OgotICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0
LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGpp
dC5yc2hpZnQ2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAg
ICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6
cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5m
bzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgotICAg
ICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0
LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGpp
dC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1Qx
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0jZW5kaWYKLQotICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAg
ICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6
cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5w
dXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
ICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQ
UkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0j
ZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5j
b25zdGFudCgpKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRh
ZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgot
ICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUaGF0V2Vy
ZU5vdENyZWF0ZWQ6CiAgICAgICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVh
dGVkOgogICAgICAgICAgICAgLy8gRG9uJ3QgZG8gdGhpcywgeWV0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCBlYWZjNWZmNDcwODBhYWI4NGM2OTgxMjIxMjA3YWRh
NTkwNjA4Zjg1Li4xYjYzMzZhMmQyZmE2ZTI2NTliMzE2OTI5NzFhZWZlNWU4ODM3ZWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApAQCAtMTQwLDYgKzE0MCw3IEBAIHN0
cnVjdCBPU1JFeGl0U3RhdGUgOiBSZWZDb3VudGVkPE9TUkV4aXRTdGF0ZT4gewogCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0LCB2b2lkLCAoQ2FsbEZy
YW1lKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EZWJ1Z1ByaW50U3Bl
Y3VsYXRpb25GYWlsdXJlLCB2b2lkLCAoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQqKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0
ZSwgdm9pZCwgKFZNKiwgY29uc3QgT1NSRXhpdEJhc2UqLCBFbmNvZGVkSlNWYWx1ZSopKTsKIAog
Ly8gPT09IE9TUkV4aXQgPT09CiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDQ1ODc2ZTIwZDBlOWJlYzVmZDczMGRhNDRlZGJhODE0NjY3
ZGVjNDcuLjFjZTEyMzgxZWVmZGVkMDk2YWNmNjg4NjBiODVmNmMzODk4YjRmNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTY0Niw3ICs2
NDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBmcFJlZyA9
IHBhcmFtc1swXS5mcHIoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIHJlZyA9IHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAgICAgICAgICBqaXQucHJvYmUoWz1d
IChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGppdC5wcm9iZURl
YnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZSBpbnB1dDsKICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRvdWJsZUlucHV0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAK
aW5kZXggMzgzNjc3OGNhM2M3YTExZjY4ZDRhYjZlNzRhOGQyNGM5NDg0MWZjYy4uZjBhZTIwMzQ5
YjhiODU3MDFkZmZiNWZlYzNiZmFjODkxODkzZDI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtNDgwLDQzICs0ODAsMTEgQEAg
c3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUq
IGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICBzaXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0
ZXJzRm9yQ2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNW
aXJ0dWFsUmVnaXN0ZXJzKCk7CiAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lU3Rh
Y2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgewotICAgICAgICBKU1ZhbHVlKiB0bXBTY3Jh
dGNoID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oc2NyYXRjaCArIGV4aXQubV9kZXNjcmlw
dG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKSk7Ci0gICAgICAgIFZNKiB2bVB0ciA9ICZ2bTsKLSAg
ICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBW
TTo6ZXhwZWN0ZWRNYXhBY3RpdmVTaWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKLSAgICAgICAg
ICAgIHNpZGVTdGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleGl0Lm1fY29kZU9yaWdpbi5p
bmxpbmVEZXB0aCgpKTsKLSAgICAgICAgICAgIGF1dG8gc2lkZVN0YXRlQ29tbWl0dGVyID0gbWFr
ZVNjb3BlRXhpdChbJl0gewotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBzaWRlU3Rh
dGVzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgdm1QdHItPnB1c2hDaGVja3Bv
aW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOwotICAgICAgICAgICAgfSk7
Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1l
LCBCeXRlY29kZUluZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUg
PSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQot
ICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsr
aSkKLSAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gdG1wU2NyYXRjaFtp
ICsgdG1wT2Zmc2V0XTsKLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZXMuYXBwZW5kKFdURk1v
dmUoc2lkZVN0YXRlKSk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBjb25zdCBDb2Rl
T3JpZ2luKiBjb2RlT3JpZ2luOwotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBj
b250ZXh0LmdwcjxDYWxsRnJhbWUqPihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAg
ICAgICAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4g
JiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
LT5pbmxpbmVDYWxsRnJhbWUoKS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewotICAg
ICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2lu
LT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJbmRl
eC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZy
YW1lKCk7Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Q2Fs
bEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSArIGlubGluZUNhbGxG
cmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3RlcikpLCBjYWxsQnl0ZWNv
ZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi0+
Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKLSAgICAgICAg
fSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIGV4aXQu
bV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKTsKKyAgICAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0ZSk+KCZ2
bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOworICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOworICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFn
Q0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lk
ZVN0YXRlKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuY2FsbChHUFJJbmZv
Ojpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KIAogICAgIC8vIE5vdyBnZXQg
c3RhdGUgb3V0IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBhbmQgcGxhY2UgaXQgYmFjayBpbnRvIHRo
ZSBzdGFjay4gVGhlIHZhbHVlcyBhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA2
YTNmYmQ3NmM1MWRhNGQ3YWQ1YTAyYWQ5MzkyOTM1MjFhNTMwMmQyLi5kZWExOTQ1MTM3MzAwY2Mw
NTY0Mjg2OTkxZWU5MWY1YzNhOTJhMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0yNzIsNyArMjcyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogI2lm
IEVOQUJMRShNQVNNX1BST0JFKQogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dHJhY2VC
YXNlbGluZUpJVEV4ZWN1dGlvbigpKSkgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2NvZGVCbG9jazsKLSAgICAgICAgICAgIHByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQm
IGN0eCkgeworICAgICAgICAgICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgp
IHsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkpJVCBbIiwgYnl0ZWNvZGVPZmZzZXQsICJd
ICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihjdHguZnAoKSks
ICIgQCAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTU0Myw3
ICs1NDMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0g
ICAgICAgICAgICBwcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAg
IHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJKSVQgWyIsIGJ5dGVjb2RlT2Zmc2V0LCAiXSBTTE9XICIsIG9wY29kZU5hbWVz
W29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihjdHguZnAoKSksICIgQCAiLCBjb2RlQmxv
Y2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422063</attachid>
            <date>2021-03-03 04:18:50 -0800</date>
            <delta_ts>2021-03-03 04:31:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210303041850.patch</filename>
            <type>text/plain</type>
            <size>40683</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Mzk3NzdkODI0M2M1OTFhZGE2YWIwYTQ0NTlhNDhhOWEwZjAzOWRlLi45YTNjNGZhODA5NjgxOTAy
NWZjZDcxMmE5MzMyMzFjMGFkZmQyZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZURlYnVnKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlND
Ojp0ZXN0Q2xlYXJCaXRzNjRXaXRoTWFzayk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHM2
NFdpdGhNYXNrVGVybmFyeSk6CisgICAgICAgIChKU0M6OnRlc3RTaGlmdEFuZEFkZCk6CisgICAg
ICAgIChKU0M6OnRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQ
cm9iZVByZXNlcnZlc0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
UG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIp
OgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKToKKyAgICAgICAg
KiBiMy9haXIvdGVzdGFpci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisgICAgICAgICogZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKwog
MjAyMS0wMy0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXByb3ZlIGxvZ2dpbmcgb2YgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcyB2YWxpZGF0aW9uIGZh
aWx1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4MTJjNzYu
LjA5N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3Nl
bWJsZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKK3ZvaWQg
TWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
PiBmdW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4oc3RkRnVu
Y3Rpb25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1v
dmUoZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZmYThhYTNj
OTQyLi44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xOTc5
LDcgKzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ckJhc2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1
bmN0aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShG
dW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtzIG1lbW9y
eS4gTXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAg
ICAvLyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAv
LyBTZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9m
IGhvdyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2MWFhZi4u
NjY1ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIyLDEzIEBA
IHZvaWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBjb21waWxl
KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0czY0V2l0
aE1hc2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxs
SGVscGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAKLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
Q0hFQ0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEzIEBAIHZv
aWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQu
bW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKLSAg
ICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
aml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAg
ICAgc2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNrKEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJlc2VydmVN
YXNrKTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2NF90PihH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2OTcsNyBA
QCB2b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRBZGQoYmFz
ZUdQUiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNNX1BST0JF
KQotICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAgICAgICAg
ICAgICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJhc2VQb2lu
dGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAgLTE3NjYs
NyArMTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hF
Q0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CkBAIC0x
ODE1LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkK
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
RlBSSW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29y
ZCgwKTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRS
ZWdpc3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVj
dGVkIHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1Owog
ICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5n
cHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3ICsxODc0
LDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0
aGUgcmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnBy
b2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlRGVi
dWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0byYgY3B1
ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAg
ICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IEND
YWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAtMTg5MCwx
NCArMTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVuY3Rpb25z
IGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VR
KHRlc3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAx
MCk7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygwLCAxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBW
YWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBq
aXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIo
KTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7
CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAg
ICAgICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwog
ICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7
IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpA
QCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAg
ICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2Fz
IHJlc3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHBy
b2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6
OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQg
PSBuZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29t
cHV0ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1v
ZGlmeSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBv
dGhlciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVn
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9
IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAg
IGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2Fs
bEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIwMDMsNyAr
MjAwMyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlv
bjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMu
Ci0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291
bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdp
c3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChp
ZCkpIHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1Bv
aW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQu
cHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBA
IC0yMDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9y
ZWQuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxs
Q291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RS
ZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJ
RChpZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9n
cmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Y29udGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWco
WyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CkBA
IC0yMTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIo
KQogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRl
IGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpTRW50cnlQ
dHJUYWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJz
LgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIx
OTYsNyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3Rh
Y2sgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9i
ZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNw
dTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAg
ICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVzdFByb2Jl
TW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUg
dGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4
dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAg
ICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2Fs
bEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0
ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5ODliLi5l
NWM4NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgdGVz
dEVsaWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQobGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewotICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY29udGV4
dC5ncHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2MzZDVhODAz
MTY1NThhZi4uNGZlZTE4NjA5MjMwMjY2ZWE3NmIyZDlkYjNjYWU3OTgyMmQwN2Y2OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4LDQ2IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwgdm9pZCwg
KENhbGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0g
ZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQs
IChWTSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVuY29kZWRK
U1ZhbHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCA9ICpl
eGl0UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVT
aWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0byBzaWRl
U3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hDaGVja3Bv
aW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOworCisgICAg
YXV0byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXgg
aW5kZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUtPmJ5dGVj
b2RlSW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1D
aGVja3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNW
YWx1ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAgIHNpZGVT
dGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNvbnN0IENv
ZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2Rl
T3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5n
VGFpbENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9
IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
KiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAg
ICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zm
c2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNh
bGxGcmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2Rl
T3JpZ2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQorICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30KKwogdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRUYWdzSW5Q
bGFjZSgpOwpAQCAtNTE2LDE4ICs1NTYsMTcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChD
Q2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAg
IC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBs
YWNlIG9uIHRoZSBzdGFjay4KICAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4K
IAorICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVj
b3ZlcmllcyBiZWxvdy4KKyAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMo
KTsKKwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVy
YW5kc1tpbmRleF07CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewog
ICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9vbGVhbkRp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBT
dHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNj
cmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODYsMTYxIEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29u
c3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAg
ICAgICAgY2FzZSBDb25zdGFudDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVj
b3ZlcnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAmYml0d2lz
ZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMu
dGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKKyAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBq
aXQubG9hZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwK
KyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5w
YXlsb2FkKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQz
MkRpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0
LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lz
dGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9X
b3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQub3I2
NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisjZWxzZQor
ICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXls
b2FkKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0XzMy
KQorICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgICAgICBqaXQubG9h
ZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAorICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxv
YWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJv
b2xlYW5UYWcpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0
LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBV
bmJveGVkQ2VsbEluR1BSOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMucGF5bG9hZCwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFn
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0
LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAgICAgICAgICAgICZi
aXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFz
Qml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAg
ICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAg
ICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNo
ICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQubG9hZERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBS
SW5mbzo6ZnBSZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsK
KyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFj
ZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAg
aml0LmxvYWREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1
YWxSZWdpc3RlcigpKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQucHVyaWZ5
TmFOKEZQUkluZm86OmZwUmVnVDApOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBq
aXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworI2Vsc2UK
KyAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworI2VuZGlmCisgICAgICAgICAgICBicmVh
azsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6
CisgICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgaml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAg
ICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0KEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0
b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICAgICAg
aml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAg
IGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86
OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGppdC5sb2Fk
NjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJl
Z1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwor
ICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7
CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTg1LDEwMSArNzc5LDExIEBAIHZvaWQgT1NSRXhp
dDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYg
ZXhpdCwgY29uc3QKICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxl
ZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwogCiAgICAgaWYgKGV4aXQubV9jb2RlT3Jp
Z2luLmlubGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IE1heWJlIHdlIHNob3VsZG4ndCB1c2UgYSBwcm9iZSBidXQgZmlsbGluZyBhbGwgdGhl
IHNpZGUgc3RhdGUgb2JqZWN0cyBpcyB0cmlja3kgb3RoZXJ3aXNlLi4uCi0gICAgICAgIFZlY3Rv
cjxWYWx1ZVJlY292ZXJ5PiB2YWx1ZXMob3BlcmFuZHMubnVtYmVyT2ZUbXBzKCkpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhbmRzLm51bWJlck9mVG1wcygpOyArK2kpCi0g
ICAgICAgICAgICB2YWx1ZXNbaV0gPSBvcGVyYW5kcy50bXAoaSk7Ci0KLSAgICAgICAgVk0qIHZt
UHRyID0gJnZtOwotICAgICAgICBhdXRvKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIG9wZXJhbmRz
LnRtcEluZGV4KDApOwotICAgICAgICBqaXQucHJvYmUoWz0sIHZhbHVlcyA9IFdURk1vdmUodmFs
dWVzKV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiwgVk06OmV4cGVjdGVkTWF4
QWN0aXZlU2lkZVN0YXRlQ291bnQ+IHNpZGVTdGF0ZXM7Ci0gICAgICAgICAgICBzaWRlU3RhdGVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7
Ci0gICAgICAgICAgICBhdXRvIHNpZGVTdGF0ZUNvbW1pdHRlciA9IG1ha2VTY29wZUV4aXQoWyZd
IHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gc2lkZVN0YXRlcy5zaXplKCk7IGkt
LTspCi0gICAgICAgICAgICAgICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0
ZShXVEZNb3ZlKHNpZGVTdGF0ZXNbaV0pKTsKLSAgICAgICAgICAgIH0pOwotCi0KLSAgICAgICAg
ICAgIGF1dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBCeXRlY29kZUlu
ZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VV
bmlxdWU8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQotICAgICAgICAgICAg
ICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICBhdXRvJiByZWNvdmVyeSA9IHZhbHVlc1tpICsgdG1wT2Zmc2V0XTsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB3aGF0IHRoZSBGVEwgZG9l
cyBhbmQgbWF0ZXJpYWxpemUgYWxsIHRoZSBKU1ZhbHVlcyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZl
ci4KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewot
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWNvdmVyeS5jb25zdGFudCgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVk
SW50MzJJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNT
dGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0ganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2Fz
dDxib29sPih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNWYWx1ZSo+KHRtcFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNlbHNlIC8vIFVTRShK
U1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICAg
ICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAg
ICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4odG1w
U2NyYXRjaClbaSArIHRtcE9mZnNldF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbElu
R1BSOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKiB2
YWx1ZURlc2NyaXB0b3IgPSBiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHRt
cFNjcmF0Y2ggKyBpICsgdG1wT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVT
dGF0ZS0+dG1wc1tpXSA9IEpTVmFsdWUoSlNWYWx1ZTo6Q2VsbFRhZywgdmFsdWVEZXNjcmlwdG9y
LT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3Bs
YWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBz
W2ldID0ganNCb29sZWFuKHN0YXRpY19jYXN0PGJvb2w+KHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNl
dF0pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLQotICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc2lkZVN0YXRlcy5hcHBlbmQo
V1RGTW92ZShzaWRlU3RhdGUpKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGNvbnN0
IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47Ci0gICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IGNvbnRleHQuZ3ByPENhbGxGcmFtZSo+KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
LSAgICAgICAgICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9y
aWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsgY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW4tPmlubGluZUNhbGxGcmFtZSgpLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7
Ci0gICAgICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9IGNvZGVP
cmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxCeXRlY29k
ZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVD
YWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUocmVpbnRlcnByZXRfY2Fz
dF9wdHI8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSArIGlu
bGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3RlcikpLCBj
YWxsQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29k
ZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAg
ICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsK
LSAgICAgICAgfSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRj
aCArIG9wZXJhbmRzLnRtcEluZGV4KDApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZtLCAmZXhpdCwg
dG1wU2NyYXRjaCk7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAg
ICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQ
UjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgfQogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0
IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KQEAgLTY5
NSwxMiArNzk5LDIyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBq
aXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKIAogICAgICAgICBzd2l0Y2gg
KHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNr
OgorICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2Ug
SW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNT
dGFjazoKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNh
c2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoK
KyAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWREb3Vi
bGVJbkZQUjoKKyAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgY2FzZSBJbkZQUjoKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgotICAgICAgICBjYXNlIFVuYm94
ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAg
ICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQ1MkluR1BSOgorICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICBjYXNlIFN0cmljdEludDUy
RGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5k
ZXgsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC03MTksMTAwICs4MzMsOCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KEND
YWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5
bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
c3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBVbmJveGVk
Qm9vbGVhbkluR1BSOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0g
ICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5j
b2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAot
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMy
KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkJvb2xlYW5UYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9w
ZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihv
cGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQog
Ci0gICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgIGNhc2UgSW50MzJEaXNw
bGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5sb2Fk
NjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuemVy
b0V4dGVuZDMyVG9Xb3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDAp
OwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LmxvYWQzMigK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0
LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQ1MkluR1BSOgotICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAg
ICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5yc2hpZnQ2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOwot
ICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3Jl
NjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1Mklu
R1BSOgotICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAg
ICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQ
UkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQ
UjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAg
ICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3Jl
RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVy
YW5kKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29uc3Rh
bnQ6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KAotICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShy
ZWNvdmVyeS5jb25zdGFudCgpKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25z
dGFudCgpLnRhZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcihv
cGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSks
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsK
LSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVu
dHNUaGF0V2VyZU5vdENyZWF0ZWQ6CiAgICAgICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhhdFdl
cmVOb3RDcmVhdGVkOgogICAgICAgICAgICAgLy8gRG9uJ3QgZG8gdGhpcywgeWV0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCBlYWZjNWZmNDcwODBhYWI4NGM2OTgx
MjIxMjA3YWRhNTkwNjA4Zjg1Li4xYjYzMzZhMmQyZmE2ZTI2NTliMzE2OTI5NzFhZWZlNWU4ODM3
ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApAQCAtMTQwLDYgKzE0
MCw3IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGUgOiBSZWZDb3VudGVkPE9TUkV4aXRTdGF0ZT4gewog
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0LCB2b2lk
LCAoQ2FsbEZyYW1lKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EZWJ1
Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlLCB2b2lkLCAoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQq
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhp
dFNpZGVTdGF0ZSwgdm9pZCwgKFZNKiwgY29uc3QgT1NSRXhpdEJhc2UqLCBFbmNvZGVkSlNWYWx1
ZSopKTsKIAogLy8gPT09IE9TUkV4aXQgPT09CiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDQ1ODc2ZTIwZDBlOWJlYzVmZDczMGRhNDRl
ZGJhODE0NjY3ZGVjNDcuLjFjZTEyMzgxZWVmZGVkMDk2YWNmNjg4NjBiODVmNmMzODk4YjRmNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAg
LTY0Niw3ICs2NDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAg
ICBmcFJlZyA9IHBhcmFtc1swXS5mcHIoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIHJlZyA9IHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAgICAgICAgICBqaXQu
cHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGpp
dC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZSBpbnB1dDsKICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRvdWJs
ZUlucHV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4
aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHAKaW5kZXggMzgzNjc3OGNhM2M3YTExZjY4ZDRhYjZlNzRhOGQyNGM5NDg0MWZjYy4u
ZjBhZTIwMzQ5YjhiODU3MDFkZmZiNWZlYzNiZmFjODkxODkzZDI4MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtNDgwLDQzICs0
ODAsMTEgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQs
IEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICBzaXplX3QgYmFzZWxpbmVWaXJ0
dWFsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4u
aW5saW5lU3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgewotICAgICAgICBKU1ZhbHVl
KiB0bXBTY3JhdGNoID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oc2NyYXRjaCArIGV4aXQu
bV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKSk7Ci0gICAgICAgIFZNKiB2bVB0ciA9
ICZ2bTsKLSAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRl
U3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVTaWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsK
LSAgICAgICAgICAgIHNpZGVTdGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleGl0Lm1fY29k
ZU9yaWdpbi5pbmxpbmVEZXB0aCgpKTsKLSAgICAgICAgICAgIGF1dG8gc2lkZVN0YXRlQ29tbWl0
dGVyID0gbWFrZVNjb3BlRXhpdChbJl0gewotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgdm1QdHItPnB1
c2hDaGVja3BvaW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOwotICAgICAg
ICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJh
bWUqIGZyYW1lLCBCeXRlY29kZUluZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBz
aWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZy
YW1lKTsKLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4
OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2lu
dFRtcHM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gdG1w
U2NyYXRjaFtpICsgdG1wT2Zmc2V0XTsKLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZXMuYXBw
ZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBj
b25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOwotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBjb250ZXh0LmdwcjxDYWxsRnJhbWUqPihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgICAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47IGNv
ZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7IGNvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMo
KSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXggPSBj
b2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsQnl0
ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5s
aW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0
X2Nhc3Q8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSArIGlu
bGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3RlcikpLCBj
YWxsQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29k
ZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAg
ICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsK
LSAgICAgICAgfSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRj
aCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKTsKKyAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVT
dGF0ZSk+KCZ2bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOworICAgICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOworICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVP
U1JFeGl0U2lkZVN0YXRlKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuY2Fs
bChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KIAogICAgIC8v
IE5vdyBnZXQgc3RhdGUgb3V0IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBhbmQgcGxhY2UgaXQgYmFj
ayBpbnRvIHRoZSBzdGFjay4gVGhlIHZhbHVlcyBhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCA2YTNmYmQ3NmM1MWRhNGQ3YWQ1YTAyYWQ5MzkyOTM1MjFhNTMwMmQyLi5kZWExOTQ1
MTM3MzAwY2MwNTY0Mjg2OTkxZWU5MWY1YzNhOTJhMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbigpKSkgewogICAgICAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICAgICAgICAgIHByb2JlKFs9XSAoUHJvYmU6
OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250
ZXh0JiBjdHgpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkpJVCBbIiwgYnl0ZWNvZGVP
ZmZzZXQsICJdICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihj
dHguZnAoKSksICIgQCAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
QEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQog
ICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29k
ZUlEKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2Rl
QmxvY2s7Ci0gICAgICAgICAgICBwcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAg
ICAgICAgICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7CiAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJKSVQgWyIsIGJ5dGVjb2RlT2Zmc2V0LCAiXSBTTE9XICIsIG9w
Y29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihjdHguZnAoKSksICIgQCAi
LCBjb2RlQmxvY2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422064</attachid>
            <date>2021-03-03 04:31:18 -0800</date>
            <delta_ts>2021-03-03 04:44:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210303043117.patch</filename>
            <type>text/plain</type>
            <size>40699</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Mzk3NzdkODI0M2M1OTFhZGE2YWIwYTQ0NTlhNDhhOWEwZjAzOWRlLi45YTNjNGZhODA5NjgxOTAy
NWZjZDcxMmE5MzMyMzFjMGFkZmQyZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZURlYnVnKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlND
Ojp0ZXN0Q2xlYXJCaXRzNjRXaXRoTWFzayk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHM2
NFdpdGhNYXNrVGVybmFyeSk6CisgICAgICAgIChKU0M6OnRlc3RTaGlmdEFuZEFkZCk6CisgICAg
ICAgIChKU0M6OnRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQ
cm9iZVByZXNlcnZlc0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
UG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIp
OgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKToKKyAgICAgICAg
KiBiMy9haXIvdGVzdGFpci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisgICAgICAgICogZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKwog
MjAyMS0wMy0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXByb3ZlIGxvZ2dpbmcgb2YgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcyB2YWxpZGF0aW9uIGZh
aWx1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4MTJjNzYu
LjA5N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3Nl
bWJsZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKK3ZvaWQg
TWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
PiBmdW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4oc3RkRnVu
Y3Rpb25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1v
dmUoZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZmYThhYTNj
OTQyLi44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xOTc5
LDcgKzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ckJhc2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1
bmN0aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShG
dW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtzIG1lbW9y
eS4gTXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAg
ICAvLyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAv
LyBTZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9m
IGhvdyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2MWFhZi4u
NjY1ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIyLDEzIEBA
IHZvaWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBjb21waWxl
KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0czY0V2l0
aE1hc2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxs
SGVscGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAKLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
Q0hFQ0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEzIEBAIHZv
aWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQu
bW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKLSAg
ICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
aml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAg
ICAgc2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNrKEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJlc2VydmVN
YXNrKTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2NF90PihH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2OTcsNyBA
QCB2b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRBZGQoYmFz
ZUdQUiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNNX1BST0JF
KQotICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAgICAgICAg
ICAgICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJhc2VQb2lu
dGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAgLTE3NjYs
NyArMTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hF
Q0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CkBAIC0x
ODE1LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkK
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
RlBSSW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29y
ZCgwKTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRS
ZWdpc3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVj
dGVkIHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1Owog
ICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5n
cHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3ICsxODc0
LDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0
aGUgcmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnBy
b2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlRGVi
dWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0byYgY3B1
ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAg
ICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IEND
YWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAtMTg5MCwx
NCArMTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVuY3Rpb25z
IGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VR
KHRlc3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAx
MCk7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygwLCAxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBW
YWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBq
aXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIo
KTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7
CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAg
ICAgICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwog
ICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7
IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpA
QCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAg
ICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2Fz
IHJlc3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHBy
b2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6
OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQg
PSBuZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29t
cHV0ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1v
ZGlmeSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBv
dGhlciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVn
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9
IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAg
IGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2Fs
bEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIwMDMsNyAr
MjAwMyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlv
bjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMu
Ci0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291
bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdp
c3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChp
ZCkpIHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1Bv
aW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQu
cHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBA
IC0yMDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9y
ZWQuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxs
Q291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RS
ZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJ
RChpZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9n
cmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Y29udGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWco
WyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CkBA
IC0yMTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIo
KQogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRl
IGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpTRW50cnlQ
dHJUYWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJz
LgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIx
OTYsNyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3Rh
Y2sgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9i
ZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNw
dTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAg
ICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVzdFByb2Jl
TW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUg
dGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4
dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAg
ICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2Fs
bEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0
ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5ODliLi5l
NWM4NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgdGVz
dEVsaWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQobGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewotICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY29udGV4
dC5ncHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2MzZDVhODAz
MTY1NThhZi4uZjJlOWExMzUxZjkxYmY2MzFkNjE2YzUwMmIyNTgwNTJiYjRkODE0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4LDQ2IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwgdm9pZCwg
KENhbGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0g
ZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQs
IChWTSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVuY29kZWRK
U1ZhbHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCA9ICpl
eGl0UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVT
aWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0byBzaWRl
U3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hDaGVja3Bv
aW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOworCisgICAg
YXV0byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXgg
aW5kZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUtPmJ5dGVj
b2RlSW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1D
aGVja3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNW
YWx1ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAgIHNpZGVT
dGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNvbnN0IENv
ZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2Rl
T3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5n
VGFpbENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9
IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
KiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAg
ICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zm
c2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNh
bGxGcmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2Rl
T3JpZ2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQorICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30KKwogdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRUYWdzSW5Q
bGFjZSgpOwpAQCAtNTE2LDE4ICs1NTYsMTcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChD
Q2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAg
IC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBs
YWNlIG9uIHRoZSBzdGFjay4KICAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4K
IAorICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVj
b3ZlcmllcyBiZWxvdy4KKyAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMo
KTsKKwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVy
YW5kc1tpbmRleF07CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewog
ICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9vbGVhbkRp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBT
dHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNj
cmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODYsMTYxIEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29u
c3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAg
ICAgICAgY2FzZSBDb25zdGFudDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVj
b3ZlcnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAmYml0d2lz
ZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMu
dGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKKyAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBq
aXQubG9hZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwK
KyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5w
YXlsb2FkKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQz
MkRpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0
LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lz
dGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9X
b3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQub3I2
NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisjZWxzZQor
ICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXls
b2FkKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0XzMy
KQorICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgICAgICBqaXQubG9h
ZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAorICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxv
YWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJv
b2xlYW5UYWcpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0
LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBV
bmJveGVkQ2VsbEluR1BSOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMucGF5bG9hZCwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFn
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0
LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAgICAgICAgICAgICZi
aXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFz
Qml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAg
ICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAg
ICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNo
ICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICBqaXQubG9hZERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSkpOworI2Vsc2UKKyAgICAgICAgICAgIGppdC5zdG9yZURv
dWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpy
ZWdUMSkpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIERvdWJs
ZURpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAg
ICAgICAgICBqaXQubG9hZERvdWJsZShBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3Zl
cnkudmlydHVhbFJlZ2lzdGVyKCkpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGpp
dC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFkZHJlc3MoR1BSSW5mbzo6
cmVnVDEpKTsKKyNlbHNlCisgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEpKTsKKyNlbmRpZgor
ICAgICAgICAgICAgYnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQ1MkluR1BSOgorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgs
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0
LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAg
ICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVh
bFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQucnNoaWZ0NjQo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCks
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQ
UjoKKyAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQu
c3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAg
ICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52
aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5ib3hJ
bnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBz
Y3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU4NSwxMDEgKzc3OSwx
MSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0s
IGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNU
b0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKIAogICAgIGlm
IChleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgp
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGRuJ3QgdXNlIGEgcHJvYmUgYnV0
IGZpbGxpbmcgYWxsIHRoZSBzaWRlIHN0YXRlIG9iamVjdHMgaXMgdHJpY2t5IG90aGVyd2lzZS4u
LgotICAgICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeT4gdmFsdWVzKG9wZXJhbmRzLm51bWJlck9m
VG1wcygpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYW5kcy5udW1iZXJP
ZlRtcHMoKTsgKytpKQotICAgICAgICAgICAgdmFsdWVzW2ldID0gb3BlcmFuZHMudG1wKGkpOwot
Ci0gICAgICAgIFZNKiB2bVB0ciA9ICZ2bTsKLSAgICAgICAgYXV0byogdG1wU2NyYXRjaCA9IHNj
cmF0Y2ggKyBvcGVyYW5kcy50bXBJbmRleCgwKTsKLSAgICAgICAgaml0LnByb2JlKFs9LCB2YWx1
ZXMgPSBXVEZNb3ZlKHZhbHVlcyldIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4s
IFZNOjpleHBlY3RlZE1heEFjdGl2ZVNpZGVTdGF0ZUNvdW50PiBzaWRlU3RhdGVzOwotICAgICAg
ICAgICAgc2lkZVN0YXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4aXQubV9jb2RlT3JpZ2lu
LmlubGluZURlcHRoKCkpOwotICAgICAgICAgICAgYXV0byBzaWRlU3RhdGVDb21taXR0ZXIgPSBt
YWtlU2NvcGVFeGl0KFsmXSB7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IHNpZGVT
dGF0ZXMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgICAgICAgICB2bVB0ci0+cHVzaENoZWNr
cG9pbnRPU1JTaWRlU3RhdGUoV1RGTW92ZShzaWRlU3RhdGVzW2ldKSk7Ci0gICAgICAgICAgICB9
KTsKLQotCi0gICAgICAgICAgICBhdXRvIGFkZFNpZGVTdGF0ZSA9IFsmXSAoQ2FsbEZyYW1lKiBm
cmFtZSwgQnl0ZWNvZGVJbmRleCBpbmRleCwgc2l6ZV90IHRtcE9mZnNldCkgewotICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4gc2lkZVN0
YXRlID0gV1RGOjptYWtlVW5pcXVlPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPihmcmFtZSk7
Ci0KLSAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPmJ5dGVjb2RlSW5kZXggPSBpbmRleDsKLSAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE51bUNoZWNrcG9pbnRUbXBz
OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byYgcmVjb3ZlcnkgPSB2YWx1ZXNbaSAr
IHRtcE9mZnNldF07Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8g
d2hhdCB0aGUgRlRMIGRvZXMgYW5kIG1hdGVyaWFsaXplIGFsbCB0aGUgSlNWYWx1ZXMgaW50byB0
aGUgc2NyYXRjaCBidWZmZXIuCi0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVjb3Zlcnku
dGVjaG5pcXVlKCkpIHsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIENvbnN0YW50OgotICAg
ICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVjb3ZlcnkuY29uc3Rh
bnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW50
MzJEaXNwbGFjZWRJbkpTU3RhY2s6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0
ZS0+dG1wc1tpXSA9IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHRtcFNjcmF0Y2hbaSAr
IHRtcE9mZnNldF0pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbklu
R1BSOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc0Jv
b2xlYW4oc3RhdGljX2Nhc3Q8Ym9vbD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNl
ZEluSlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgSW5HUFI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRGlzcGxh
Y2VkSW5KU1N0YWNrOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNb
aV0gPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPih0bXBTY3JhdGNoKVtpICsgdG1wT2Zmc2V0
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9
Ci0jZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgICAgICAgICBjYXNlIElu
UGFpcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SlNWYWx1ZSo+KHRtcFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgVW5ib3hlZENlbGxJbkdQUjogewotICAgICAgICAgICAgICAgICAgICAgICAgRW5jb2RlZFZh
bHVlRGVzY3JpcHRvciogdmFsdWVEZXNjcmlwdG9yID0gYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IqPih0bXBTY3JhdGNoICsgaSArIHRtcE9mZnNldCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBKU1ZhbHVlKEpTVmFsdWU6OkNlbGxUYWcs
IHZhbHVlRGVzY3JpcHRvci0+YXNCaXRzLnBheWxvYWQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBj
YXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2FzdDxib29sPih0bXBTY3Jh
dGNoW2kgKyB0bXBPZmZzZXRdKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgfQotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0KLSAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHNp
ZGVTdGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7Ci0gICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOwotICAgICAgICAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBjb250ZXh0LmdwcjxDYWxsRnJhbWUqPihHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2Nv
ZGVPcmlnaW47IGNvZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7IGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKS0+Z2V0Q2FsbGVyU2tpcHBp
bmdUYWlsQ2FsbHMoKSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVj
b2RlSW5kZXggPSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29k
ZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRl
KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCkgLSBzaXplb2Yo
Q1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxGcmFtZS0+dG1wT2Zm
c2V0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFjb2RlT3JpZ2luKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsgYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKGNhbGxGcmFtZSwgYnl0
ZWNvZGVJbmRleCwgMCk7Ci0gICAgICAgIH0pOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSogdG1w
U2NyYXRjaCA9IHNjcmF0Y2ggKyBvcGVyYW5kcy50bXBJbmRleCgwKTsKKyAgICAgICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0
ZSk+KCZ2bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOworICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOworICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JF
eGl0U2lkZVN0YXRlKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuY2FsbChH
UFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KIAogICAgIC8vIERv
IGFsbCBkYXRhIGZvcm1hdCBjb252ZXJzaW9ucyBhbmQgc3RvcmUgdGhlIHJlc3VsdHMgaW50byB0
aGUgc3RhY2suCkBAIC02OTUsMTIgKzc5OSwyMiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAK
ICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERp
c3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNr
OgorICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIENl
bGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0
YWNrOgorICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgIGNhc2UgVW5i
b3hlZEludDMySW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKyAgICAgICAg
Y2FzZSBVbmJveGVkRG91YmxlSW5GUFI6CisgICAgICAgIGNhc2UgQ29uc3RhbnQ6CiAgICAgICAg
IGNhc2UgSW5GUFI6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBJbkdQUjoKLSAg
ICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAg
ICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKKyAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZElu
SlNTdGFjazoKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKKyAgICAgICAg
Y2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2Fk
NjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQp
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzE5LDEwMCArODMzLDggQEAgdm9pZCBPU1JFeGl0
Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBl
eGl0LCBjb25zdAogICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAogICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2Vs
bERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAg
ICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGlu
ZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwot
ICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0g
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxh
Y2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5h
c0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKIAotICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAg
ICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvV29yZChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6
cmVnVDApOwotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIs
IEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1Qw
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAg
ICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsK
LSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
LAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7
Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQucnNoaWZ0NjQoCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIEdQ
UkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBVbmJv
eGVkU3RyaWN0SW50NTJJbkdQUjoKLSAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZv
OjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAg
ICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgY2FzZSBV
bmJveGVkRG91YmxlSW5GUFI6Ci0gICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNr
OgotICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNj
cmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5sb2FkRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7Ci0gICAgICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOwotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVn
VDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAg
ICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIENvbnN0YW50OgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQu
c3RvcmU2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChK
U1ZhbHVlOjplbmNvZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkpLAotICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAg
aml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIocmVjb3ZlcnkuY29uc3RhbnQoKS50YWcoKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3Rh
bnQoKS5wYXlsb2FkKCkpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9h
ZEZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNh
c2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgogICAgICAgICBjYXNlIENsb25l
ZEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKICAgICAgICAgICAgIC8vIERvbid0IGRvIHRo
aXMsIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggZWFmYzVm
ZjQ3MDgwYWFiODRjNjk4MTIyMTIwN2FkYTU5MDYwOGY4NS4uMWI2MzM2YTJkMmZhNmUyNjU5YjMx
NjkyOTcxYWVmZTVlODgzN2VlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmgKQEAgLTE0MCw2ICsxNDAsNyBAQCBzdHJ1Y3QgT1NSRXhpdFN0YXRlIDogUmVmQ291bnRlZDxP
U1JFeGl0U3RhdGU+IHsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21w
aWxlT1NSRXhpdCwgdm9pZCwgKENhbGxGcmFtZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZSwgdm9pZCwgKENhbGxGcmFt
ZSosIHZvaWQqLCB2b2lkKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25N
YXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQsIChWTSosIGNvbnN0IE9TUkV4aXRCYXNl
KiwgRW5jb2RlZEpTVmFsdWUqKSk7CiAKIC8vID09PSBPU1JFeGl0ID09PQogLy8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0NTg3NmUyMGQw
ZTliZWM1ZmQ3MzBkYTQ0ZWRiYTgxNDY2N2RlYzQ3Li4xY2UxMjM4MWVlZmRlZDA5NmFjZjY4ODYw
Yjg1ZjZjMzg5OGI0ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC02NDYsNyArNjQ2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgICAgICAgICAgICAgZnBSZWcgPSBwYXJhbXNbMF0uZnByKCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICByZWcgPSBwYXJhbXNbMF0uZ3ByKCk7Ci0gICAg
ICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgaW5wdXQ7CiAgICAgICAgICAgICAgICAg
ICAgIGRvdWJsZSBkb3VibGVJbnB1dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDM4MzY3NzhjYTNjN2ExMWY2OGQ0YWI2ZTc0
YThkMjRjOTQ4NDFmY2MuLmYwYWUyMDM0OWI4Yjg1NzAxZGZmYjVmZWMzYmZhYzg5MTg5M2QyODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5j
cHAKQEAgLTQ4MCw0MyArNDgwLDExIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwg
dW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAgc2l6
ZV90IGJhc2VsaW5lVmlydHVhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwogCiAgICAgaWYgKGV4
aXQubV9jb2RlT3JpZ2luLmlubGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KCkpIHsK
LSAgICAgICAgSlNWYWx1ZSogdG1wU2NyYXRjaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+
KHNjcmF0Y2ggKyBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMudG1wSW5kZXgoMCkpOwotICAg
ICAgICBWTSogdm1QdHIgPSAmdm07Ci0gICAgICAgIGppdC5wcm9iZShbPV0gKFByb2JlOjpDb250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiwgVk06OmV4cGVjdGVkTWF4QWN0aXZlU2lkZVN0YXRlQ291
bnQ+IHNpZGVTdGF0ZXM7Ci0gICAgICAgICAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7Ci0gICAgICAgICAgICBhdXRv
IHNpZGVTdGF0ZUNvbW1pdHRlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKLSAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gc2lkZVN0YXRlcy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAg
ICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShXVEZNb3ZlKHNpZGVTdGF0
ZXNbaV0pKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBhdXRvIGFkZFNpZGVTdGF0
ZSA9IFsmXSAoQ2FsbEZyYW1lKiBmcmFtZSwgQnl0ZWNvZGVJbmRleCBpbmRleCwgc2l6ZV90IHRt
cE9mZnNldCkgewotICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NS
RXhpdFNpZGVTdGF0ZT4gc2lkZVN0YXRlID0gV1RGOjptYWtlVW5pcXVlPENoZWNrcG9pbnRPU1JF
eGl0U2lkZVN0YXRlPihmcmFtZSk7Ci0KLSAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPmJ5dGVj
b2RlSW5kZXggPSBpbmRleDsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1heE51bUNoZWNrcG9pbnRUbXBzOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0
ZS0+dG1wc1tpXSA9IHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF07Ci0KLSAgICAgICAgICAgICAg
ICBzaWRlU3RhdGVzLmFwcGVuZChXVEZNb3ZlKHNpZGVTdGF0ZSkpOwotICAgICAgICAgICAgfTsK
LQotICAgICAgICAgICAgY29uc3QgQ29kZU9yaWdpbiogY29kZU9yaWdpbjsKLSAgICAgICAgICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gY29udGV4dC5ncHI8Q2FsbEZyYW1lKj4oR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICAgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQu
bV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgp
OyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNr
aXBwaW5nVGFpbENhbGxzKCkpIHsKLSAgICAgICAgICAgICAgICBCeXRlY29kZUluZGV4IGNhbGxC
eXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOwotICAgICAgICAgICAg
ICAgIGlmICghY2FsbEJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGF1dG8qIGlubGluZUNhbGxGcmFtZSA9
IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICAgICAgICAgIGFkZFNpZGVT
dGF0ZShyZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCkgLSBzaXplb2Yo
Q1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxGcmFtZS0+dG1wT2Zm
c2V0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFjb2RlT3JpZ2luKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsgYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKGNhbGxGcmFtZSwgYnl0
ZWNvZGVJbmRleCwgMCk7Ci0gICAgICAgIH0pOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSogdG1w
U2NyYXRjaCA9IHNjcmF0Y2ggKyBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMudG1wSW5kZXgo
MCk7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25NYXRlcmlh
bGl6ZU9TUkV4aXRTaWRlU3RhdGUpPigmdm0sICZleGl0LCB0bXBTY3JhdGNoKTsKKyAgICAgICAg
aml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0ZSkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsK
KyAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsK
ICAgICB9CiAKICAgICAvLyBOb3cgZ2V0IHN0YXRlIG91dCBvZiB0aGUgc2NyYXRjaCBidWZmZXIg
YW5kIHBsYWNlIGl0IGJhY2sgaW50byB0aGUgc3RhY2suIFRoZSB2YWx1ZXMgYXJlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggNmEzZmJkNzZjNTFkYTRkN2FkNWEwMmFkOTM5MjkzNTIx
YTUzMDJkMi4uZGVhMTk0NTEzNzMwMGNjMDU2NDI4Njk5MWVlOTFmNWMzYTkyYTEyNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKICAgICAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnRyYWNlQmFzZWxpbmVKSVRFeGVjdXRpb24oKSkpIHsKICAgICAg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgICAgICAgICBw
cm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIHByb2JlRGVidWco
Wz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJK
SVQgWyIsIGJ5dGVjb2RlT2Zmc2V0LCAiXSAiLCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sICIgY2Zy
ICIsIFJhd1BvaW50ZXIoY3R4LmZwKCkpLCAiIEAgIiwgY29kZUJsb2NrKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9CkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudElu
c3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fY29kZUJsb2NrOwotICAgICAgICAgICAgcHJvYmUoWz1dIChQcm9iZTo6Q29u
dGV4dCYgY3R4KSB7CisgICAgICAgICAgICBwcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQm
IGN0eCkgewogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiSklUIFsiLCBieXRlY29kZU9mZnNl
dCwgIl0gU0xPVyAiLCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sICIgY2ZyICIsIFJhd1BvaW50ZXIo
Y3R4LmZwKCkpLCAiIEAgIiwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
Cg==
</data>
<flag name="commit-queue"
          id="441087"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422065</attachid>
            <date>2021-03-03 04:38:19 -0800</date>
            <delta_ts>2021-03-03 05:14:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210303043818.patch</filename>
            <type>text/plain</type>
            <size>40731</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Mzk3NzdkODI0M2M1OTFhZGE2YWIwYTQ0NTlhNDhhOWEwZjAzOWRlLi45YTNjNGZhODA5NjgxOTAy
NWZjZDcxMmE5MzMyMzFjMGFkZmQyZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZURlYnVnKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlND
Ojp0ZXN0Q2xlYXJCaXRzNjRXaXRoTWFzayk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHM2
NFdpdGhNYXNrVGVybmFyeSk6CisgICAgICAgIChKU0M6OnRlc3RTaGlmdEFuZEFkZCk6CisgICAg
ICAgIChKU0M6OnRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQ
cm9iZVByZXNlcnZlc0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
UG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIp
OgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKToKKyAgICAgICAg
KiBiMy9haXIvdGVzdGFpci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisgICAgICAgICogZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKwog
MjAyMS0wMy0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXByb3ZlIGxvZ2dpbmcgb2YgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcyB2YWxpZGF0aW9uIGZh
aWx1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4MTJjNzYu
LjA5N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3Nl
bWJsZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKK3ZvaWQg
TWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYp
PiBmdW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4oc3RkRnVu
Y3Rpb25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1v
dmUoZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZmYThhYTNj
OTQyLi44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xOTc5
LDcgKzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ckJhc2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1
bmN0aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShG
dW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtzIG1lbW9y
eS4gTXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAg
ICAvLyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAv
LyBTZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9m
IGhvdyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2MWFhZi4u
NjY1ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIyLDEzIEBA
IHZvaWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBjb21waWxl
KFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0czY0V2l0
aE1hc2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxs
SGVscGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAKLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
Q0hFQ0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJndW1l
bnRHUFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEzIEBAIHZv
aWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQu
bW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKLSAg
ICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
aml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAg
ICAgc2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3VtZW50R1BS
Mik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNrKEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJlc2VydmVN
YXNrKTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2NF90PihH
UFJJbmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2OTcsNyBA
QCB2b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRBZGQoYmFz
ZUdQUiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNNX1BST0JF
KQotICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAgICAgICAg
ICAgICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJhc2VQb2lu
dGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAgLTE3NjYs
NyArMTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hF
Q0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CkBAIC0x
ODE1LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkK
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
RlBSSW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29y
ZCgwKTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRS
ZWdpc3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVj
dGVkIHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1Owog
ICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5n
cHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3ICsxODc0
LDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1bmN0aW9u
UHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0
aGUgcmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnBy
b2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlRGVi
dWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0byYgY3B1
ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAg
ICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IEND
YWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAtMTg5MCwx
NCArMTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVuY3Rpb25z
IGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VR
KHRlc3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAx
MCk7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygwLCAxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBW
YWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBq
aXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIo
KTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7
CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAg
ICAgICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
YXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwog
ICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7
IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpA
QCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAg
ICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2Fz
IHJlc3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHBy
b2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6
OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQg
PSBuZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlm
aWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29t
cHV0ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1v
ZGlmeSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBv
dGhlciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9i
ZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVn
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9
IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAg
IGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2Fs
bEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIwMDMsNyAr
MjAwMyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlv
bjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMu
Ci0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291
bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdp
c3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChp
ZCkpIHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1Bv
aW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQu
cHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBA
IC0yMDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdU
Rjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICB9KTsK
IAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9y
ZWQuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxs
Q291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RS
ZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJ
RChpZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9n
cmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Y29udGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAg
IC8vIFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWco
WyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CkBA
IC0yMTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIo
KQogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRl
IGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpTRW50cnlQ
dHJUYWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJz
LgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNr
ID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIx
OTYsNyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAg
ICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3Rh
Y2sgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9i
ZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNw
dTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAg
ICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVzdFByb2Jl
TW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUg
dGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4
dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAg
ICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2Fs
bEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0
ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0
YWlyLmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5ODliLi5l
NWM4NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgdGVz
dEVsaWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQobGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikg
ewotICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY29udGV4
dC5ncHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2MzZDVhODAz
MTY1NThhZi4uMDBlYzczMWU3MjQyMDBlOTFhMjM4YTMwOGJiZWZiNWZlMjM1ZGQ0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4LDQ2IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwgdm9pZCwg
KENhbGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0g
ZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQs
IChWTSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVuY29kZWRK
U1ZhbHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCA9ICpl
eGl0UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVT
aWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0byBzaWRl
U3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hDaGVja3Bv
aW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOworCisgICAg
YXV0byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXgg
aW5kZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNr
cG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2tw
b2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUtPmJ5dGVj
b2RlSW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1D
aGVja3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNW
YWx1ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAgIHNpZGVT
dGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNvbnN0IENv
ZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2Rl
T3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5n
VGFpbENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9
IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJ
bmRleC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
KiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAg
ICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zm
c2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNh
bGxGcmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2Rl
T3JpZ2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQorICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30KKwogdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRUYWdzSW5Q
bGFjZSgpOwpAQCAtNTE2LDE4ICs1NTYsMTcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChD
Q2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAg
IC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBs
YWNlIG9uIHRoZSBzdGFjay4KICAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4K
IAorICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVj
b3ZlcmllcyBiZWxvdy4KKyAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMo
KTsKKwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVy
YW5kc1tpbmRleF07CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewog
ICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAg
ICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9vbGVhbkRp
c3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBT
dHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNj
cmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODYsMTYxIEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29u
c3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAg
ICAgICAgY2FzZSBDb25zdGFudDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVj
b3ZlcnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAmYml0d2lz
ZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMu
dGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKKyAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBq
aXQubG9hZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwK
KyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5w
YXlsb2FkKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJbnQz
MkRpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0
LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lz
dGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9X
b3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQub3I2
NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisjZWxzZQor
ICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwKKyAg
ICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3Jh
dGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXls
b2FkKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0XzMy
KQorICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgICAgICBqaXQubG9h
ZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAorICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxv
YWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAor
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJv
b2xlYW5UYWcpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0
LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBV
bmJveGVkQ2VsbEluR1BSOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMucGF5bG9hZCwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFn
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
Z1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAgICAgIGJyZWFr
CisKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0
LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVj
b3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAgICAgICAgICAgICZi
aXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFz
Qml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQpOworICAgICAgICAg
ICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKKyAg
ICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzY3JhdGNo
ICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICBqaXQubG9hZERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1QwKTsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEpKTsKKyNlbHNlCisgICAgICAg
ICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDEpKTsKKyNlbmRpZgorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubW92
ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5m
bzo6cmVnVDEpOworICAgICAgICAgICAgaml0LmxvYWREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjph
ZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgRlBSSW5mbzo6ZnBSZWdUMCk7
CisgICAgICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSkpOworI2Vsc2UKKyAgICAgICAg
ICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhHUFJJbmZvOjpyZWdUMSkpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKKworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CisgICAgICAg
ICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgaml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6
OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuYm94
SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgRlBS
SW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwg
c2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSW50
NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICAgICAgaml0LmxvYWQ2
NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5ib3hJ
bnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBz
Y3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTdHJp
Y3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJ
bmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAg
ICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtNTg1LDEwMSArNzc5LDExIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGls
ZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29u
c3QKICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwogCiAgICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGlu
ZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IE1h
eWJlIHdlIHNob3VsZG4ndCB1c2UgYSBwcm9iZSBidXQgZmlsbGluZyBhbGwgdGhlIHNpZGUgc3Rh
dGUgb2JqZWN0cyBpcyB0cmlja3kgb3RoZXJ3aXNlLi4uCi0gICAgICAgIFZlY3RvcjxWYWx1ZVJl
Y292ZXJ5PiB2YWx1ZXMob3BlcmFuZHMubnVtYmVyT2ZUbXBzKCkpOwotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG9wZXJhbmRzLm51bWJlck9mVG1wcygpOyArK2kpCi0gICAgICAgICAg
ICB2YWx1ZXNbaV0gPSBvcGVyYW5kcy50bXAoaSk7Ci0KLSAgICAgICAgVk0qIHZtUHRyID0gJnZt
OwotICAgICAgICBhdXRvKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4
KDApOwotICAgICAgICBqaXQucHJvYmUoWz0sIHZhbHVlcyA9IFdURk1vdmUodmFsdWVzKV0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiwgVk06OmV4cGVjdGVkTWF4QWN0aXZlU2lk
ZVN0YXRlQ291bnQ+IHNpZGVTdGF0ZXM7Ci0gICAgICAgICAgICBzaWRlU3RhdGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7Ci0gICAgICAg
ICAgICBhdXRvIHNpZGVTdGF0ZUNvbW1pdHRlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gc2lkZVN0YXRlcy5zaXplKCk7IGktLTspCi0gICAg
ICAgICAgICAgICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShXVEZNb3Zl
KHNpZGVTdGF0ZXNbaV0pKTsKLSAgICAgICAgICAgIH0pOwotCi0KLSAgICAgICAgICAgIGF1dG8g
YWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBCeXRlY29kZUluZGV4IGluZGV4
LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENo
ZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hl
Y2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQotICAgICAgICAgICAgICAgIHNpZGVT
dGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsraSkgewotICAgICAgICAgICAgICAg
ICAgICBhdXRvJiByZWNvdmVyeSA9IHZhbHVlc1tpICsgdG1wT2Zmc2V0XTsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB3aGF0IHRoZSBGVEwgZG9lcyBhbmQgbWF0
ZXJpYWxpemUgYWxsIHRoZSBKU1ZhbHVlcyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KLSAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewotCi0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaWRl
U3RhdGUtPnRtcHNbaV0gPSByZWNvdmVyeS5jb25zdGFudCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQ
UjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazogewot
ICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0ganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2FzdDxib29sPih0
bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAg
ICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJbkdQUjoK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNW
YWx1ZSo+KHRtcFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNlbHNlIC8vIFVTRShKU1ZBTFVFMzJf
NjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAgICAgICAgICAgICAg
ICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lk
ZVN0YXRlLT50bXBzW2ldID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4odG1wU2NyYXRjaClb
aSArIHRtcE9mZnNldF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKiB2YWx1ZURlc2Ny
aXB0b3IgPSBiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHRtcFNjcmF0Y2gg
KyBpICsgdG1wT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1w
c1tpXSA9IEpTVmFsdWUoSlNWYWx1ZTo6Q2VsbFRhZywgdmFsdWVEZXNjcmlwdG9yLT5hc0JpdHMu
cGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNT
dGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0ganNC
b29sZWFuKHN0YXRpY19jYXN0PGJvb2w+KHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKLQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc2lkZVN0YXRlcy5hcHBlbmQoV1RGTW92ZShz
aWRlU3RhdGUpKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGNvbnN0IENvZGVPcmln
aW4qIGNvZGVPcmlnaW47Ci0gICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGNvbnRl
eHQuZ3ByPENhbGxGcmFtZSo+KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAg
ICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbiAmJiBj
b2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4tPmlu
bGluZUNhbGxGcmFtZSgpLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7Ci0gICAgICAg
ICAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4tPmJ5
dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxCeXRlY29kZUluZGV4LmNo
ZWNrcG9pbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAg
ICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUo
KTsKLSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUocmVpbnRlcnByZXRfY2FzdF9wdHI8Q2Fs
bEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSArIGlubGluZUNhbGxG
cmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3RlcikpLCBjYWxsQnl0ZWNv
ZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi0+
Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKLSAgICAgICAg
fSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIG9wZXJh
bmRzLnRtcEluZGV4KDApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3Bl
cmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZtLCAmZXhpdCwgdG1wU2NyYXRj
aCk7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgICAgIGppdC5t
b3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUpKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJh
dGlvblB0clRhZyk7CiAgICAgfQogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNp
b25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KQEAgLTY5NSwxMiArNzk5
LDIyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2
bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5
LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgSW50MzJEaXNw
bGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKKyAg
ICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgVW5ib3hl
ZEJvb2xlYW5JbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyAgICAgICAg
Y2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoK
KyAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgY2FzZSBJbkZQUjoKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5H
UFI6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBC
b29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BS
OgorICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFVu
Ym94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2Vk
SW5KU1N0YWNrOgogICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUklu
Zm86OnJlZ1QwKTsKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3Nl
bWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC03MTksMTAwICs4MzMsOCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVy
cyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVW5i
b3hlZENlbGxJbkdQUjoKLSAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigK
LSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5k
KSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFu
ZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbklu
R1BSOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAg
ICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5U
YWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsK
LSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1Qw
LAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7
Ci0gICAgICAgICAgICBicmVhazsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgICAg
IGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpT
U3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRj
aCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMy
VG9Xb3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
b3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAg
ICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsg
aW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCi0gICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIo
Ci0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJl
YWs7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1MkluR1BS
OgotICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0
LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGpp
dC5yc2hpZnQ2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAg
ICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6
cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5m
bzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgotICAg
ICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0
LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGpp
dC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1Qx
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJl
Z1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0jZW5kaWYKLQotICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAg
ICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6
cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5w
dXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
ICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQ
UkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0j
ZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KAotICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShyZWNvdmVyeS5j
b25zdGFudCgpKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRh
ZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSksCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgot
ICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUaGF0V2Vy
ZU5vdENyZWF0ZWQ6CiAgICAgICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVh
dGVkOgogICAgICAgICAgICAgLy8gRG9uJ3QgZG8gdGhpcywgeWV0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCBlYWZjNWZmNDcwODBhYWI4NGM2OTgxMjIxMjA3YWRh
NTkwNjA4Zjg1Li4xYjYzMzZhMmQyZmE2ZTI2NTliMzE2OTI5NzFhZWZlNWU4ODM3ZWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApAQCAtMTQwLDYgKzE0MCw3IEBAIHN0
cnVjdCBPU1JFeGl0U3RhdGUgOiBSZWZDb3VudGVkPE9TUkV4aXRTdGF0ZT4gewogCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0LCB2b2lkLCAoQ2FsbEZy
YW1lKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EZWJ1Z1ByaW50U3Bl
Y3VsYXRpb25GYWlsdXJlLCB2b2lkLCAoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQqKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0
ZSwgdm9pZCwgKFZNKiwgY29uc3QgT1NSRXhpdEJhc2UqLCBFbmNvZGVkSlNWYWx1ZSopKTsKIAog
Ly8gPT09IE9TUkV4aXQgPT09CiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDQ1ODc2ZTIwZDBlOWJlYzVmZDczMGRhNDRlZGJhODE0NjY3
ZGVjNDcuLjFjZTEyMzgxZWVmZGVkMDk2YWNmNjg4NjBiODVmNmMzODk4YjRmNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTY0Niw3ICs2
NDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICBmcFJlZyA9
IHBhcmFtc1swXS5mcHIoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIHJlZyA9IHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAgICAgICAgICBqaXQucHJvYmUoWz1d
IChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGppdC5wcm9iZURl
YnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZSBpbnB1dDsKICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRvdWJsZUlucHV0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAK
aW5kZXggMzgzNjc3OGNhM2M3YTExZjY4ZDRhYjZlNzRhOGQyNGM5NDg0MWZjYy4uZjBhZTIwMzQ5
YjhiODU3MDFkZmZiNWZlYzNiZmFjODkxODkzZDI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtNDgwLDQzICs0ODAsMTEgQEAg
c3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUq
IGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICBzaXplX3QgYmFzZWxpbmVWaXJ0dWFsUmVnaXN0
ZXJzRm9yQ2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVlU2F2ZVNwYWNlQXNW
aXJ0dWFsUmVnaXN0ZXJzKCk7CiAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lU3Rh
Y2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgewotICAgICAgICBKU1ZhbHVlKiB0bXBTY3Jh
dGNoID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oc2NyYXRjaCArIGV4aXQubV9kZXNjcmlw
dG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKSk7Ci0gICAgICAgIFZNKiB2bVB0ciA9ICZ2bTsKLSAg
ICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBW
TTo6ZXhwZWN0ZWRNYXhBY3RpdmVTaWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKLSAgICAgICAg
ICAgIHNpZGVTdGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleGl0Lm1fY29kZU9yaWdpbi5p
bmxpbmVEZXB0aCgpKTsKLSAgICAgICAgICAgIGF1dG8gc2lkZVN0YXRlQ29tbWl0dGVyID0gbWFr
ZVNjb3BlRXhpdChbJl0gewotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBzaWRlU3Rh
dGVzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgdm1QdHItPnB1c2hDaGVja3Bv
aW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOwotICAgICAgICAgICAgfSk7
Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1l
LCBCeXRlY29kZUluZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUg
PSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQot
ICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsr
aSkKLSAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gdG1wU2NyYXRjaFtp
ICsgdG1wT2Zmc2V0XTsKLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZXMuYXBwZW5kKFdURk1v
dmUoc2lkZVN0YXRlKSk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBjb25zdCBDb2Rl
T3JpZ2luKiBjb2RlT3JpZ2luOwotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBj
b250ZXh0LmdwcjxDYWxsRnJhbWUqPihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAg
ICAgICAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4g
JiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
LT5pbmxpbmVDYWxsRnJhbWUoKS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMoKSkgewotICAg
ICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2lu
LT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJbmRl
eC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZy
YW1lKCk7Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Q2Fs
bEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSArIGlubGluZUNhbGxG
cmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3RlcikpLCBjYWxsQnl0ZWNv
ZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi0+
Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAg
ICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKLSAgICAgICAg
fSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIGV4aXQu
bV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKTsKKyAgICAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0ZSk+KCZ2
bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOworICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOworICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFn
Q0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lk
ZVN0YXRlKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuY2FsbChHUFJJbmZv
Ojpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KIAogICAgIC8vIE5vdyBnZXQg
c3RhdGUgb3V0IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBhbmQgcGxhY2UgaXQgYmFjayBpbnRvIHRo
ZSBzdGFjay4gVGhlIHZhbHVlcyBhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA2
YTNmYmQ3NmM1MWRhNGQ3YWQ1YTAyYWQ5MzkyOTM1MjFhNTMwMmQyLi5kZWExOTQ1MTM3MzAwY2Mw
NTY0Mjg2OTkxZWU5MWY1YzNhOTJhMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0yNzIsNyArMjcyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogI2lm
IEVOQUJMRShNQVNNX1BST0JFKQogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dHJhY2VC
YXNlbGluZUpJVEV4ZWN1dGlvbigpKSkgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2NvZGVCbG9jazsKLSAgICAgICAgICAgIHByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQm
IGN0eCkgeworICAgICAgICAgICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgp
IHsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkpJVCBbIiwgYnl0ZWNvZGVPZmZzZXQsICJd
ICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihjdHguZnAoKSks
ICIgQCAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTU0Myw3
ICs1NDMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0g
ICAgICAgICAgICBwcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAg
IHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJKSVQgWyIsIGJ5dGVjb2RlT2Zmc2V0LCAiXSBTTE9XICIsIG9wY29kZU5hbWVz
W29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihjdHguZnAoKSksICIgQCAiLCBjb2RlQmxv
Y2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422069</attachid>
            <date>2021-03-03 05:14:27 -0800</date>
            <delta_ts>2021-03-05 12:50:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210303051426.patch</filename>
            <type>text/plain</type>
            <size>39840</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MDVlNDFjY2U1NmM2MjhmMjY1NzUyNzhiYjdjMTBhOTY4OTcxYjRjLi4yOGFiMTMxYjkxZDZlZTM1
ZmI5ZmJkZjY0MzRlNTM4MmU3OTRjYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwcm9iZURlYnVnKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OnByb2JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlND
Ojp0ZXN0Q2xlYXJCaXRzNjRXaXRoTWFzayk6CisgICAgICAgIChKU0M6OnRlc3RDbGVhckJpdHM2
NFdpdGhNYXNrVGVybmFyeSk6CisgICAgICAgIChKU0M6OnRlc3RTaGlmdEFuZEFkZCk6CisgICAg
ICAgIChKU0M6OnRlc3RQcm9iZVJlYWRzQXJndW1lbnRSZWdpc3RlcnMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVXcml0ZXNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRlc3RQ
cm9iZVByZXNlcnZlc0dQUlMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
UG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIp
OgorICAgICAgICAoSlNDOjp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKToKKyAgICAgICAg
KiBiMy9haXIvdGVzdGFpci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisgICAgICAgICogZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAg
ICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKwog
MjAyMS0wMy0wMyAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEV4dGVuZCB3YXNtIHR5cGUgd2l0
aCB0eXBlIGluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4
MTJjNzYuLjA5N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNv
bnRleHQmIGNvbnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFj
cm9Bc3NlbWJsZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykK
K3ZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29u
dGV4dCYpPiBmdW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4o
c3RkRnVuY3Rpb25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+
KFdURk1vdmUoZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZm
YThhYTNjOTQyLi44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBA
IC0xOTc5LDcgKzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fz
c2VtYmxlckJhc2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJv
YmU6OkZ1bmN0aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBw
cm9iZShGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtz
IG1lbW9yeS4gTXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7
CiAKICAgICAvLyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4K
ICAgICAvLyBTZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1w
bGVzIG9mIGhvdyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2
MWFhZi4uNjY1ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIy
LDEzIEBAIHZvaWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBj
b21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29u
dGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250
ZXh0KSB7CiAgICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0
czY0V2l0aE1hc2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAs
IENDYWxsSGVscGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAK
LSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAg
ICAgaml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAg
ICAgICAgQ0hFQ0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjph
cmd1bWVudEdQUjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEz
IEBAIHZvaWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAg
ICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7
CiAKLSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgaml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAg
ICAgICAgICAgc2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNr
KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJl
c2VydmVNYXNrKTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29u
dGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250
ZXh0KSB7CiAgICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2
NF90PihHUFJJbmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2
OTcsNyBAQCB2b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRB
ZGQoYmFzZUdQUiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNN
X1BST0JFKQotICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAg
ICAgICAgICAgICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJh
c2VQb2ludGVyKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAg
LTE3NjYsNyArMTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygp
CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMp
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNv
bnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAg
ICAgQ0hFQ0tfRVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7
CkBAIC0xODE1LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0
ZXJzKCkKICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFs
dWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2Fs
bENvdW50Kys7CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0
ZXN0V29yZCgwKTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJn
dW1lbnRSZWdpc3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0
IGV4cGVjdGVkIHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFBy
b2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJv
YmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQu
Y3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VR
KGNwdS5ncHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3
ICsxODc0LDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMg
aW50byB0aGUgcmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAg
aml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnBy
b2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0
byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAg
ICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlk
IDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAt
MTg5MCwxNCArMTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAg
ICB9KTsKIAogICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVu
Y3Rpb25zIGFuZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpDb250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpD
b250ZXh0JikgewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENI
RUNLX0VRKHRlc3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs
IDkpLCAxMCk7CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAg
ICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVz
LgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENv
dW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVn
aXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQo
aWQpKSB7CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMo
KQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4K
LSAgICAgICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAg
ICAgaml0LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAg
ICAgICAgYXV0byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3Vu
dCsrOwogICAgICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lz
dGVyKCk7IGlkIDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlk
KSkgewpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkK
ICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3Rh
dGUgd2FzIHJlc3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBj
b250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAg
ICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhl
bHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIo
KTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9i
ZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQm
KT4gY29tcHV0ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIg
YW5kIG1vZGlmeSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMg
aW50byBvdGhlciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGpp
dC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9i
ZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8m
IGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAg
ICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8
PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIw
MDMsNyArMjAwMyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpG
dW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2
YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
ICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVD
YWxsQ291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmly
c3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5l
eHRJRChpZCkpIHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNT
dGFja1BvaW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRl
CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0
ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQp
KSB7CkBAIC0yMDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2lu
dGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAg
ICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMg
cmVzdG9yZWQuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJv
YmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6
Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9
IG5leHRJRChpZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZp
ZXNQcm9ncmFtQ291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0
clRhZz4gY29udGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAg
ICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2Jl
RGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50
Kys7CiAgICAgICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAg
fSk7CkBAIC0yMTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNv
dW50ZXIoKQogICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8v
IFdyaXRlIGV4cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5w
cm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURl
YnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2Fs
bENvdW50Kys7CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpT
RW50cnlQdHJUYWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0
ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVn
aXN0ZXJzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8m
IHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsK
QEAgLTIxOTYsNyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygp
CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBh
bmQgc3RhY2sgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZd
IChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0g
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250
ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAg
ICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVz
dFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJl
c3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsK
ICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQg
PSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0
UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci90ZXN0YWlyLmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5
ODliLi5lNWM4NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZv
aWQgdGVzdEVsaWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQobGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJikgewotICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAg
Y29udGV4dC5ncHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2Mz
ZDVhODAzMTY1NThhZi4uZDk2NjE3MmM4OTk5NjZjM2VjZDY3NWE4YjZmNmFkZjJiNmZhZjU1YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4
LDQ2IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwg
dm9pZCwgKENhbGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0
aW9uID0gZXhpdC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUs
IHZvaWQsIChWTSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVu
Y29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhp
dCA9ICpleGl0UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhB
Y3RpdmVTaWRlU3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0
byBzaWRlU3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hD
aGVja3BvaW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOwor
CisgICAgYXV0byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2Rl
SW5kZXggaW5kZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8
Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUt
PmJ5dGVjb2RlSW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
YXhOdW1DaGVja3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ld
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAg
IHNpZGVTdGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNv
bnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQu
bV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgp
OyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNr
aXBwaW5nVGFpbENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJ
bmRleCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0
ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsK
KyAgICAgICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVy
blBDT2Zmc2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlu
bGluZUNhbGxGcmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4p
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgg
PSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgp
KQorICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30K
Kwogdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBj
b25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFu
ZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRU
YWdzSW5QbGFjZSgpOwpAQCAtNTE2LDE4ICs1NTYsMTcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxl
RXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25z
dAogICAgIC8vIGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJp
Z2h0IHBsYWNlIG9uIHRoZSBzdGFjay4KICAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBs
YXRlci4KIAorICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxp
emUgcmVjb3ZlcmllcyBiZWxvdy4KKyAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdp
c3RlcnMoKTsKKwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5z
aXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3Zlcnkg
PSBvcGVyYW5kc1tpbmRleF07CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUo
KSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9v
bGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNT
dGFjazoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAg
Y2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2Fk
NjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIHNjcmF0Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODYs
MTQzIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2
bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlm
CiAKKyAgICAgICAgY2FzZSBDb25zdGFudDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBq
aXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAg
ICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAm
Yml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5h
c0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgp
KSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgs
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BS
SW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQu
c3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAg
ICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7
CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSW50MzJEaXNwbGFj
ZWRJbkpTU3RhY2s6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIGppdC5sb2FkNjQo
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwg
R1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvV29yZChHUFJJ
bmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5z
dG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworI2Vsc2UKKyAgICAgICAg
ICAgIGppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2Fk
Rm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKKyAgICAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCisgICAgICAgICAg
ICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGlu
ZGV4KS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Cisj
ZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOworCisjaWYgVVNFKEpTVkFMVUU2NF8zMikKKyAgICAg
ICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgorICAgICAgICAgICAgaml0LnN0b3JlMzIoCisg
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9v
bGVhblRhZyksCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAg
ICBqaXQubG9hZDMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCisgICAgICAgICAg
ICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGlu
ZGV4KS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAg
ICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFn
KTsKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0
YWNrOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
LAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+
KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIo
CisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdp
c2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRz
LnBheWxvYWQpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICBjYXNlIFVu
Ym94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAg
ICAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MSksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZv
OjpmcFJlZ1QwKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmJveERvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDEpKTsKKyNlbHNlCisgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdU
MCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEpKTsKKyNlbmRpZgorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6
CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2Ny
YXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgaml0LmxvYWREb3Vi
bGUoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rlcigp
KSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86
OmZwUmVnVDApOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBqaXQuYm94RG91Ymxl
KEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9y
ZTY0KEdQUkluZm86OnJlZ1QwLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MSkpOworI2Vsc2UKKyAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1Qw
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSkpOworI2VuZGlmCisgICAg
ICAgICAgICBicmVhazsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNhc2UgVW5ib3hl
ZEludDUySW5HUFI6CisgICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BS
SW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBq
aXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVn
aXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BS
SW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAg
ICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgor
ICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsK
KyAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAs
IEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9y
ZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAg
ICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1
YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJveEludDUy
KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86
OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0
Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTg1LDEwMSArNzYxLDExIEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29u
c3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50
cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwogCiAgICAgaWYgKGV4
aXQubV9jb2RlT3JpZ2luLmlubGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KCkpIHsK
LSAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZG4ndCB1c2UgYSBwcm9iZSBidXQgZmls
bGluZyBhbGwgdGhlIHNpZGUgc3RhdGUgb2JqZWN0cyBpcyB0cmlja3kgb3RoZXJ3aXNlLi4uCi0g
ICAgICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiB2YWx1ZXMob3BlcmFuZHMubnVtYmVyT2ZUbXBz
KCkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhbmRzLm51bWJlck9mVG1w
cygpOyArK2kpCi0gICAgICAgICAgICB2YWx1ZXNbaV0gPSBvcGVyYW5kcy50bXAoaSk7Ci0KLSAg
ICAgICAgVk0qIHZtUHRyID0gJnZtOwotICAgICAgICBhdXRvKiB0bXBTY3JhdGNoID0gc2NyYXRj
aCArIG9wZXJhbmRzLnRtcEluZGV4KDApOwotICAgICAgICBqaXQucHJvYmUoWz0sIHZhbHVlcyA9
IFdURk1vdmUodmFsdWVzKV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiwgVk06
OmV4cGVjdGVkTWF4QWN0aXZlU2lkZVN0YXRlQ291bnQ+IHNpZGVTdGF0ZXM7Ci0gICAgICAgICAg
ICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5s
aW5lRGVwdGgoKSk7Ci0gICAgICAgICAgICBhdXRvIHNpZGVTdGF0ZUNvbW1pdHRlciA9IG1ha2VT
Y29wZUV4aXQoWyZdIHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gc2lkZVN0YXRl
cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAgICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2lu
dE9TUlNpZGVTdGF0ZShXVEZNb3ZlKHNpZGVTdGF0ZXNbaV0pKTsKLSAgICAgICAgICAgIH0pOwot
Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1l
LCBCeXRlY29kZUluZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUg
PSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQot
ICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsr
aSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvJiByZWNvdmVyeSA9IHZhbHVlc1tpICsgdG1w
T2Zmc2V0XTsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB3aGF0
IHRoZSBGVEwgZG9lcyBhbmQgbWF0ZXJpYWxpemUgYWxsIHRoZSBKU1ZhbHVlcyBpbnRvIHRoZSBz
Y3JhdGNoIGJ1ZmZlci4KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNo
bmlxdWUoKSkgewotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWNvdmVyeS5jb25zdGFudCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRp
c3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50
bXBzW2ldID0ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odG1wU2NyYXRjaFtpICsgdG1w
T2Zmc2V0XSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVh
bihzdGF0aWNfY2FzdDxib29sPih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0jaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJ
bkpTU3RhY2s6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHRtcFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNl
bHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5QYWly
OgotICAgICAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazogewotICAgICAg
ICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVpbnRlcnByZXRfY2FzdDxK
U1ZhbHVlKj4odG1wU2NyYXRjaClbaSArIHRtcE9mZnNldF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBV
bmJveGVkQ2VsbEluR1BSOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yKiB2YWx1ZURlc2NyaXB0b3IgPSBiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVz
Y3JpcHRvcio+KHRtcFNjcmF0Y2ggKyBpICsgdG1wT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IEpTVmFsdWUoSlNWYWx1ZTo6Q2VsbFRhZywgdmFs
dWVEZXNjcmlwdG9yLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Qm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lk
ZVN0YXRlLT50bXBzW2ldID0ganNCb29sZWFuKHN0YXRpY19jYXN0PGJvb2w+KHRtcFNjcmF0Y2hb
aSArIHRtcE9mZnNldF0pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLQotICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc2lkZVN0
YXRlcy5hcHBlbmQoV1RGTW92ZShzaWRlU3RhdGUpKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAg
ICAgICAgIGNvbnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47Ci0gICAgICAgICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IGNvbnRleHQuZ3ByPENhbGxGcmFtZSo+KEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9y
aWdpbjsgY29kZU9yaWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsgY29kZU9y
aWdpbiA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpLT5nZXRDYWxsZXJTa2lwcGluZ1Rh
aWxDYWxscygpKSB7Ci0gICAgICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJ
bmRleCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IWNhbGxCeXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3Jp
Z2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUocmVp
bnRlcnByZXRfY2FzdF9wdHI8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2Fs
bEZyYW1lKSArIGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVS
ZWdpc3RlcikpLCBjYWxsQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4ID0gY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKSkKLSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29k
ZUluZGV4LCAwKTsKLSAgICAgICAgfSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3Jh
dGNoID0gc2NyYXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOworICAgICAgICBqaXQuc2V0dXBB
cmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4o
JnZtLCAmZXhpdCwgdG1wU2NyYXRjaCk7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CisgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0
YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRT
aWRlU3RhdGUpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5jYWxsKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgfQogCiAgICAgLy8gRG8gYWxs
IGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBz
dGFjay4KQEAgLTY5NSwxMiArNzgxLDIyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKIAogICAg
ICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxh
Y2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6Cisg
ICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgQ2VsbERp
c3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6
CisgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVk
SW50MzJJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICBjYXNl
IFVuYm94ZWREb3VibGVJbkZQUjoKKyAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgY2Fz
ZSBJbkZQUjoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgotICAgICAg
ICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNT
dGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBj
YXNlIFVuYm94ZWRJbnQ1MkluR1BSOgorICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgorICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICBjYXNl
IFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgaml0LmxvYWQ2NChz
Y3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIGppdC5zdG9yZTY0
KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC03MTksMTAwICs4MTUsOCBAQCB2b2lkIE9TUkV4aXQ6OmNv
bXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQs
IGNvbnN0CiAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgY2FzZSBDZWxsRGlz
cGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAg
ICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgp
LT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0
cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogCi0gICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgIGNh
c2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
ICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuemVyb0V4dGVuZDMyVG9Xb3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAg
aml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyks
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAg
ICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0g
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNl
bmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBj
YXNlIFVuYm94ZWRJbnQ1MkluR1BSOgotICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5yc2hpZnQ2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5m
bzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJ
bmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAg
ICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFVuYm94ZWRT
dHJpY3RJbnQ1MkluR1BSOgotICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0
YWNrOgotICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGpp
dC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3Bl
cmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgICAgICBjYXNlIFVuYm94
ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0g
ICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRj
aCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWREb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwg
R1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAs
IEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAg
ICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgQ29uc3RhbnQ6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5zdG9y
ZTY0KAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksCi0gICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQu
c3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihy
ZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgp
LnBheWxvYWQoKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9y
KG9wZXJhbmQpKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBE
aXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CiAgICAgICAgIGNhc2UgQ2xvbmVkQXJn
dW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgogICAgICAgICAgICAgLy8gRG9uJ3QgZG8gdGhpcywg
eWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCBlYWZjNWZmNDcw
ODBhYWI4NGM2OTgxMjIxMjA3YWRhNTkwNjA4Zjg1Li4xYjYzMzZhMmQyZmE2ZTI2NTliMzE2OTI5
NzFhZWZlNWU4ODM3ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApA
QCAtMTQwLDYgKzE0MCw3IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGUgOiBSZWZDb3VudGVkPE9TUkV4
aXRTdGF0ZT4gewogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBpbGVP
U1JFeGl0LCB2b2lkLCAoQ2FsbEZyYW1lKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25EZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlLCB2b2lkLCAoQ2FsbEZyYW1lKiwg
dm9pZCosIHZvaWQqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVy
aWFsaXplT1NSRXhpdFNpZGVTdGF0ZSwgdm9pZCwgKFZNKiwgY29uc3QgT1NSRXhpdEJhc2UqLCBF
bmNvZGVkSlNWYWx1ZSopKTsKIAogLy8gPT09IE9TUkV4aXQgPT09CiAvLwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDQ1ODc2ZTIwZDBlOWJl
YzVmZDczMGRhNDRlZGJhODE0NjY3ZGVjNDcuLjFjZTEyMzgxZWVmZGVkMDk2YWNmNjg4NjBiODVm
NmMzODk4YjRmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTY0Niw3ICs2NDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgICAgICAgICBmcFJlZyA9IHBhcmFtc1swXS5mcHIoKTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIHJlZyA9IHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAg
ICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBpbnB1dDsKICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIGRvdWJsZUlucHV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggMzgzNjc3OGNhM2M3YTExZjY4ZDRhYjZlNzRhOGQy
NGM5NDg0MWZjYy4uZjBhZTIwMzQ5YjhiODU3MDFkZmZiNWZlYzNiZmFjODkxODkzZDI4MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApA
QCAtNDgwLDQzICs0ODAsMTEgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNp
Z25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICBzaXplX3Qg
YmFzZWxpbmVWaXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNvZGVCbG9j
ay0+Y2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAKICAgICBpZiAoZXhpdC5t
X2NvZGVPcmlnaW4uaW5saW5lU3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgewotICAg
ICAgICBKU1ZhbHVlKiB0bXBTY3JhdGNoID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oc2Ny
YXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKSk7Ci0gICAgICAg
IFZNKiB2bVB0ciA9ICZ2bTsKLSAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVTaWRlU3RhdGVDb3VudD4g
c2lkZVN0YXRlczsKLSAgICAgICAgICAgIHNpZGVTdGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShleGl0Lm1fY29kZU9yaWdpbi5pbmxpbmVEZXB0aCgpKTsKLSAgICAgICAgICAgIGF1dG8gc2lk
ZVN0YXRlQ29tbWl0dGVyID0gbWFrZVNjb3BlRXhpdChbJl0gewotICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAg
ICAgdm1QdHItPnB1c2hDaGVja3BvaW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tp
XSkpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkU2lkZVN0YXRlID0g
WyZdIChDYWxsRnJhbWUqIGZyYW1lLCBCeXRlY29kZUluZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zm
c2V0KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0
U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2ludE9TUkV4aXRT
aWRlU3RhdGU+KGZyYW1lKTsKLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJ
bmRleCA9IGluZGV4OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4
TnVtQ2hlY2twb2ludFRtcHM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50
bXBzW2ldID0gdG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XTsKLQotICAgICAgICAgICAgICAgIHNp
ZGVTdGF0ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7Ci0gICAgICAgICAgICB9OwotCi0g
ICAgICAgICAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOwotICAgICAgICAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBjb250ZXh0LmdwcjxDYWxsRnJhbWUqPihHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2Nv
ZGVPcmlnaW47IGNvZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7IGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKS0+Z2V0Q2FsbGVyU2tpcHBp
bmdUYWlsQ2FsbHMoKSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVj
b2RlSW5kZXggPSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29k
ZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2Fs
bEZyYW1lKSArIGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVS
ZWdpc3RlcikpLCBjYWxsQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4ID0gY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKSkKLSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29k
ZUluZGV4LCAwKTsKLSAgICAgICAgfSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3Jh
dGNoID0gc2NyYXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKTsK
KyAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXpl
T1NSRXhpdFNpZGVTdGF0ZSk+KCZ2bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOworICAgICAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
TWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAg
ICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAg
IH0KIAogICAgIC8vIE5vdyBnZXQgc3RhdGUgb3V0IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBhbmQg
cGxhY2UgaXQgYmFjayBpbnRvIHRoZSBzdGFjay4gVGhlIHZhbHVlcyBhcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAppbmRleCA2YTNmYmQ3NmM1MWRhNGQ3YWQ1YTAyYWQ5MzkyOTM1MjFhNTMw
MmQyLi5kZWExOTQ1MTM3MzAwY2MwNTY0Mjg2OTkxZWU5MWY1YzNhOTJhMTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogICAgICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6dHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbigpKSkgewogICAgICAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICAgICAgICAgIHByb2Jl
KFs9XSAoUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgcHJvYmVEZWJ1ZyhbPV0g
KFByb2JlOjpDb250ZXh0JiBjdHgpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkpJVCBb
IiwgYnl0ZWNvZGVPZmZzZXQsICJdICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIgIiwg
UmF3UG9pbnRlcihjdHguZnAoKSksICIgQCAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9
IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgICAgICAgICBwcm9iZShbPV0gKFByb2JlOjpDb250ZXh0
JiBjdHgpIHsKKyAgICAgICAgICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4
KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJKSVQgWyIsIGJ5dGVjb2RlT2Zmc2V0LCAi
XSBTTE9XICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihjdHgu
ZnAoKSksICIgQCAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422398</attachid>
            <date>2021-03-05 12:50:42 -0800</date>
            <delta_ts>2021-03-05 13:10:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210305125042.patch</filename>
            <type>text/plain</type>
            <size>39888</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NzFkZDAyODExMWIyMGZlMmJhOWRiYTAzNjc2NDM4YjliZDM5N2UwLi4xMmNhNmI0ZTQ4OTgwY2Uz
MWQ0MzM2Nzg1ZDE0NGVlYjZkOTUzZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMS0wMy0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICBDYWlvIGhlbHBlZCBtZSB0byBmaXggMzJiaXQgaXNzdWUgaW4gREZH
LgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6cHJvYmUpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RDbGVhckJpdHM2NFdpdGhNYXNrKToKKyAgICAgICAgKEpTQzo6dGVzdENsZWFyQml0czY0V2l0
aE1hc2tUZXJuYXJ5KToKKyAgICAgICAgKEpTQzo6dGVzdFNoaWZ0QW5kQWRkKToKKyAgICAgICAg
KEpTQzo6dGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRl
c3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2Jl
UHJlc2VydmVzR1BSUyk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcik6Cisg
ICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgorICAgICAgICAqIGIz
L2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorCiAyMDIx
LTAzLTA1ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAg
W0NNYWtlXSBCdW1wIGNtYWtlX21pbmltdW1fcmVxdWlyZWQgdmVyc2lvbiB0byAzLjEyIG9yIGxh
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4MTJjNzYuLjA5
N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC01NCw3ICs1
NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQmIGNv
bnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3NlbWJs
ZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKK3ZvaWQgTWFj
cm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPiBm
dW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4oc3RkRnVuY3Rp
b25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1vdmUo
ZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZmYThhYTNjOTQy
Li44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xOTc5LDcg
KzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJh
c2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1bmN0
aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShGdW5j
dGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtzIG1lbW9yeS4g
TXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAgICAv
LyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAvLyBT
ZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9mIGhv
dyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2MWFhZi4uNjY1
ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIyLDEzIEBAIHZv
aWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBjb21waWxlKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0czY0V2l0aE1h
c2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVs
cGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAKLSAgICAgICAg
aml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnBy
b2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgQ0hF
Q0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEzIEBAIHZvaWQg
dGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1vdmUoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQubW92
ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
c2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3VtZW50R1BSMik7
CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNrKEdQUkluZm86
OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJlc2VydmVNYXNr
KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2NF90PihHUFJJ
bmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2
b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRBZGQoYmFzZUdQ
UiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNNX1BST0JFKQot
ICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
ICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAgICAgICAgICAg
ICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJhc2VQb2ludGVy
KTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAgLTE3NjYsNyAr
MTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6
OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1
OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hFQ0tf
RVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CkBAIC0xODE1
LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkKICAg
ICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgRlBS
SW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBq
aXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29yZCgw
KTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRSZWdp
c3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVjdGVk
IHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250
ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAg
ICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5ncHIo
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3ICsxODc0LDcg
QEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUg
cmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnByb2Jl
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWco
WyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0byYgY3B1ID0g
Y29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAg
Zm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxs
SGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAtMTg5MCwxNCAr
MTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsKIAog
ICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVuY3Rpb25zIGFu
ZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpD
b250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0Jikg
ewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKHRl
c3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAxMCk7
CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygwLCAxLCAyLCAz
LCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxp
ZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQu
cHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBA
IC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAg
ICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAgICAg
aml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnBy
b2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0
byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAg
ICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlk
IDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAt
MTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAg
fSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2FzIHJl
c3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2Jl
Q2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZp
cnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBu
ZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVz
U3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0
ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1vZGlm
eSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBvdGhl
ciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNv
bnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGZv
ciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhl
bHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIwMDMsNyArMjAw
Myw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlvbjx2
b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8v
IFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMuCi0g
ICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
IGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAg
ICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQr
KzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3Rl
cigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkp
IHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50
ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAg
IH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJv
YmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRv
JiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQg
PD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBAIC0y
MDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6
RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICB9KTsKIAog
ICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9yZWQu
Ci0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291
bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdp
c3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChp
ZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9ncmFt
Q291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29u
dGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgIC8v
IFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBqaXQu
cHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWcoWyZd
IChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAg
ICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CkBAIC0y
MTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIoKQog
ICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRlIGV4
cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAo
UHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpTRW50cnlQdHJU
YWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0ZXN0UHJvYmVN
b2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
IAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0g
Y29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIxOTYs
NyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAg
IH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3RhY2sg
aGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsK
ICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAg
cHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVzdFByb2JlTW9k
aWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhl
IG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBj
b250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAg
ICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhl
bHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIo
KTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWly
LmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5ODliLi5lNWM4
NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgdGVzdEVs
aWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJTZXQo
bGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewot
ICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY29udGV4dC5n
cHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2MzZDVhODAzMTY1
NThhZi4uZGM2NjRkODk4YmQ5ZTBmZjFjMzY3NDlmN2E1N2NiOTQxMzNlZDUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4LDQ2IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwgdm9pZCwgKENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0gZXhp
dC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQsIChW
TSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVuY29kZWRKU1Zh
bHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCA9ICpleGl0
UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVTaWRl
U3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0byBzaWRlU3Rh
dGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hDaGVja3BvaW50
T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOworCisgICAgYXV0
byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXggaW5k
ZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9p
bnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUtPmJ5dGVjb2Rl
SW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1DaGVj
a3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNWYWx1
ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAgIHNpZGVTdGF0
ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNvbnN0IENvZGVP
cmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2RlT3Jp
Z2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2RlT3Jp
Z2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5nVGFp
bENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9IGNv
ZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJbmRl
eC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvKiBp
bmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAgICAg
YWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0
KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxG
cmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4pCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3Jp
Z2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQorICAgICAg
ICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30KKwogdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JF
eGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1
bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRUYWdzSW5QbGFj
ZSgpOwpAQCAtNTE2LDE4ICs1NTYsMTcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgIC8v
IGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNl
IG9uIHRoZSBzdGFjay4KICAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4KIAor
ICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3Zl
cmllcyBiZWxvdy4KKyAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsK
KwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsr
aW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5k
c1tpbmRleF07CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAg
ICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBTdHJp
Y3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0
Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODYsMTQzIEBAIHZv
aWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3Qg
T1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAgICAg
ICAgY2FzZSBDb25zdGFudDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBqaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3Zl
cnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBq
aXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFn
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKKyAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BSSW5mbzo6cmVn
VDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChH
UFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBqaXQu
c3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpJbnQzMlRhZyksCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7CisjZW5kaWYK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3Rh
Y2s6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvV29yZChHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQ
UkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworI2Vsc2UKKyAgICAgICAgICAgIGppdC5s
b2FkMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHJlY292
ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCisgICAgICAgICAgICAgICAgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNC
aXRzLnRhZyk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAg
ICAgICAgICAgIGJyZWFrOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY2FzZSBV
bmJveGVkQm9vbGVhbkluR1BSOgorICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyks
CisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4o
c2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubG9h
ZDMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVy
eS52aXJ0dWFsUmVnaXN0ZXIoKSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCisgICAgICAgICAgICAgICAgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNC
aXRzLnRhZyk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAgICAgICBq
aXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAg
ICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAg
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAg
ICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2gg
KyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQp
OworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKworICAgICAgICBjYXNlIFVuYm94ZWREb3Vi
bGVJbkZQUjoKKyAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihzY3JhdGNoICsgaW5kZXgpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICBqaXQu
bG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSksIEZQUklu
Zm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1Qw
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZv
OjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEpKTsKKyNl
bHNlCisgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEpKTsKKyNlbmRpZgorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAg
ICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGlu
ZGV4KSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgaml0LmxvYWREb3VibGUoQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDAp
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86
OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSkpOworI2Vs
c2UKKyAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSkpOworI2VuZGlmCisgICAgICAgICAgICBi
cmVhazsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNhc2UgVW5ib3hlZEludDUySW5H
UFI6CisgICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgaml0LnJzaGlmdDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgSW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubG9hZDY0
KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSks
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0
LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICAg
ICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAg
ICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86
OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUklu
Zm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgIGppdC5s
b2FkNjQoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3Rl
cigpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86
OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRl
eCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTg1LDEwMSArNzYxLDExIEBAIHZvaWQgT1NS
RXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhp
dCYgZXhpdCwgY29uc3QKICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNh
bGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwogCiAgICAgaWYgKGV4aXQubV9jb2Rl
T3JpZ2luLmlubGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KCkpIHsKLSAgICAgICAg
Ly8gRklYTUU6IE1heWJlIHdlIHNob3VsZG4ndCB1c2UgYSBwcm9iZSBidXQgZmlsbGluZyBhbGwg
dGhlIHNpZGUgc3RhdGUgb2JqZWN0cyBpcyB0cmlja3kgb3RoZXJ3aXNlLi4uCi0gICAgICAgIFZl
Y3RvcjxWYWx1ZVJlY292ZXJ5PiB2YWx1ZXMob3BlcmFuZHMubnVtYmVyT2ZUbXBzKCkpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhbmRzLm51bWJlck9mVG1wcygpOyArK2kp
Ci0gICAgICAgICAgICB2YWx1ZXNbaV0gPSBvcGVyYW5kcy50bXAoaSk7Ci0KLSAgICAgICAgVk0q
IHZtUHRyID0gJnZtOwotICAgICAgICBhdXRvKiB0bXBTY3JhdGNoID0gc2NyYXRjaCArIG9wZXJh
bmRzLnRtcEluZGV4KDApOwotICAgICAgICBqaXQucHJvYmUoWz0sIHZhbHVlcyA9IFdURk1vdmUo
dmFsdWVzKV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiwgVk06OmV4cGVjdGVk
TWF4QWN0aXZlU2lkZVN0YXRlQ291bnQ+IHNpZGVTdGF0ZXM7Ci0gICAgICAgICAgICBzaWRlU3Rh
dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgo
KSk7Ci0gICAgICAgICAgICBhdXRvIHNpZGVTdGF0ZUNvbW1pdHRlciA9IG1ha2VTY29wZUV4aXQo
WyZdIHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gc2lkZVN0YXRlcy5zaXplKCk7
IGktLTspCi0gICAgICAgICAgICAgICAgICAgIHZtUHRyLT5wdXNoQ2hlY2twb2ludE9TUlNpZGVT
dGF0ZShXVEZNb3ZlKHNpZGVTdGF0ZXNbaV0pKTsKLSAgICAgICAgICAgIH0pOwotCi0KLSAgICAg
ICAgICAgIGF1dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxsRnJhbWUqIGZyYW1lLCBCeXRlY29k
ZUluZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1h
a2VVbmlxdWU8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKLQotICAgICAgICAg
ICAgICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGluZGV4OwotICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2twb2ludFRtcHM7ICsraSkgewotICAg
ICAgICAgICAgICAgICAgICBhdXRvJiByZWNvdmVyeSA9IHZhbHVlc1tpICsgdG1wT2Zmc2V0XTsK
LSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB3aGF0IHRoZSBGVEwg
ZG9lcyBhbmQgbWF0ZXJpYWxpemUgYWxsIHRoZSBKU1ZhbHVlcyBpbnRvIHRoZSBzY3JhdGNoIGJ1
ZmZlci4KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkg
ewotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWNvdmVyeS5jb25zdGFudCgpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJv
eGVkSW50MzJJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZElu
SlNTdGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0g
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNf
Y2FzdDxib29sPih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgot
ICAgICAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBJbkdQUjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8SlNWYWx1ZSo+KHRtcFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNlbHNlIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5QYWlyOgotICAgICAg
ICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAg
ICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4o
dG1wU2NyYXRjaClbaSArIHRtcE9mZnNldF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2Vs
bERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2Vs
bEluR1BSOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
KiB2YWx1ZURlc2NyaXB0b3IgPSBiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+
KHRtcFNjcmF0Y2ggKyBpICsgdG1wT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNp
ZGVTdGF0ZS0+dG1wc1tpXSA9IEpTVmFsdWUoSlNWYWx1ZTo6Q2VsbFRhZywgdmFsdWVEZXNjcmlw
dG9yLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRp
c3BsYWNlZEluSlNTdGFjazogewotICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50
bXBzW2ldID0ganNCb29sZWFuKHN0YXRpY19jYXN0PGJvb2w+KHRtcFNjcmF0Y2hbaSArIHRtcE9m
ZnNldF0pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0jZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLQotICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc2lkZVN0YXRlcy5hcHBl
bmQoV1RGTW92ZShzaWRlU3RhdGUpKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGNv
bnN0IENvZGVPcmlnaW4qIGNvZGVPcmlnaW47Ci0gICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IGNvbnRleHQuZ3ByPENhbGxGcmFtZSo+KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKLSAgICAgICAgICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29k
ZU9yaWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsgY29kZU9yaWdpbiA9IGNv
ZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpLT5nZXRDYWxsZXJTa2lwcGluZ1RhaWxDYWxscygp
KSB7Ci0gICAgICAgICAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9IGNv
ZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxCeXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgICAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxp
bmVDYWxsRnJhbWUoKTsKLSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUocmVpbnRlcnByZXRf
Y2FzdF9wdHI8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSAr
IGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3Rlcikp
LCBjYWxsQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0g
Y29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkK
LSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAw
KTsKLSAgICAgICAgfSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2Ny
YXRjaCArIG9wZXJhbmRzLnRtcEluZGV4KDApOworICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRlKT4oJnZtLCAmZXhp
dCwgdG1wU2NyYXRjaCk7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Cisg
ICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rp
b248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUp
KSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFy
Z0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgfQogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9y
bWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KQEAg
LTY5NSwxMiArNzgxLDIyIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJz
JiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKIAogICAgICAgICBzd2l0
Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0
YWNrOgorICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNh
c2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZElu
SlNTdGFjazoKKyAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAg
IGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQ
UjoKKyAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICBjYXNlIFVuYm94ZWRE
b3VibGVJbkZQUjoKKyAgICAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgY2FzZSBJbkZQUjoK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgotICAgICAgICBjYXNlIFVu
Ym94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIFVuYm94
ZWRJbnQ1MkluR1BSOgorICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAg
ICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1MkluR1BSOgorICAgICAgICBjYXNlIFN0cmljdElu
dDUyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsg
aW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86
OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC03MTksMTAwICs4MTUsOCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKLSAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5K
U1N0YWNrOgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lz
ZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMu
cGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBq
aXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRh
Z0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxv
YWRGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBVbmJv
eGVkQm9vbGVhbkluR1BSOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6
Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2Fk
LAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkJvb2xlYW5UYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9y
KG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogCi0gICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgIGNhc2UgSW50MzJE
aXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5s
b2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQu
emVyb0V4dGVuZDMyVG9Xb3JkKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6cmVn
VDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LmxvYWQz
MigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
PihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKLSAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCi0gICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAg
aml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSNlbmRpZgotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBjYXNlIFVuYm94
ZWRJbnQ1MkluR1BSOgotICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgICAgIGppdC5yc2hpZnQ2NCgKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDAp
OwotICAgICAgICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LnN0
b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5k
KSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFVuYm94ZWRTdHJpY3RJbnQ1
MkluR1BSOgotICAgICAgICBjYXNlIFN0cmljdEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgotICAg
ICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1QwKTsKLSAg
ICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQ
UkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0
KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgICAgICBjYXNlIFVuYm94ZWREb3VibGVJ
bkZQUjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAg
ICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaCArIGluZGV4
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgR1BSSW5mbzo6
cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0
b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29u
c3RhbnQ6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KAotICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29k
ZShyZWNvdmVyeS5jb25zdGFudCgpKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSNlbHNlCi0gICAgICAgICAgICBqaXQuc3RvcmUzMigK
LSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5j
b25zdGFudCgpLnRhZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQo
KSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQp
KTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBEaXJlY3RBcmd1
bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CiAgICAgICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzVGhh
dFdlcmVOb3RDcmVhdGVkOgogICAgICAgICAgICAgLy8gRG9uJ3QgZG8gdGhpcywgeWV0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAppbmRleCBlYWZjNWZmNDcwODBhYWI4NGM2
OTgxMjIxMjA3YWRhNTkwNjA4Zjg1Li4xYjYzMzZhMmQyZmE2ZTI2NTliMzE2OTI5NzFhZWZlNWU4
ODM3ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaApAQCAtMTQwLDYg
KzE0MCw3IEBAIHN0cnVjdCBPU1JFeGl0U3RhdGUgOiBSZWZDb3VudGVkPE9TUkV4aXRTdGF0ZT4g
ewogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0LCB2
b2lkLCAoQ2FsbEZyYW1lKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25E
ZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlLCB2b2lkLCAoQ2FsbEZyYW1lKiwgdm9pZCosIHZv
aWQqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NS
RXhpdFNpZGVTdGF0ZSwgdm9pZCwgKFZNKiwgY29uc3QgT1NSRXhpdEJhc2UqLCBFbmNvZGVkSlNW
YWx1ZSopKTsKIAogLy8gPT09IE9TUkV4aXQgPT09CiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDQ1ODc2ZTIwZDBlOWJlYzVmZDczMGRh
NDRlZGJhODE0NjY3ZGVjNDcuLjFjZTEyMzgxZWVmZGVkMDk2YWNmNjg4NjBiODVmNmMzODk4YjRm
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTY0Niw3ICs2NDYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAg
ICAgICBmcFJlZyA9IHBhcmFtc1swXS5mcHIoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIHJlZyA9IHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAgICAgICAgICBq
aXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
IGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSBpbnB1dDsKICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRv
dWJsZUlucHV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9T
UkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAKaW5kZXggMzgzNjc3OGNhM2M3YTExZjY4ZDRhYjZlNzRhOGQyNGM5NDg0MWZj
Yy4uZjBhZTIwMzQ5YjhiODU3MDFkZmZiNWZlYzNiZmFjODkxODkzZDI4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtNDgwLDQz
ICs0ODAsMTEgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZCBleGl0
SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4aXQKICAgICBzaXplX3QgYmFzZWxpbmVW
aXJ0dWFsUmVnaXN0ZXJzRm9yQ2FsbGVlU2F2ZXMgPSBiYXNlbGluZUNvZGVCbG9jay0+Y2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CiAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmln
aW4uaW5saW5lU3RhY2tDb250YWluc0FjdGl2ZUNoZWNrcG9pbnQoKSkgewotICAgICAgICBKU1Zh
bHVlKiB0bXBTY3JhdGNoID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oc2NyYXRjaCArIGV4
aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKSk7Ci0gICAgICAgIFZNKiB2bVB0
ciA9ICZ2bTsKLSAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2twb2ludE9TUkV4aXRT
aWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVTaWRlU3RhdGVDb3VudD4gc2lkZVN0YXRl
czsKLSAgICAgICAgICAgIHNpZGVTdGF0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleGl0Lm1f
Y29kZU9yaWdpbi5pbmxpbmVEZXB0aCgpKTsKLSAgICAgICAgICAgIGF1dG8gc2lkZVN0YXRlQ29t
bWl0dGVyID0gbWFrZVNjb3BlRXhpdChbJl0gewotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgdm1QdHIt
PnB1c2hDaGVja3BvaW50T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOwotICAg
ICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWRkU2lkZVN0YXRlID0gWyZdIChDYWxs
RnJhbWUqIGZyYW1lLCBCeXRlY29kZUluZGV4IGluZGV4LCBzaXplX3QgdG1wT2Zmc2V0KSB7Ci0g
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRl
PiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+
KGZyYW1lKTsKLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+Ynl0ZWNvZGVJbmRleCA9IGlu
ZGV4OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4TnVtQ2hlY2tw
b2ludFRtcHM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0g
dG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XTsKLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZXMu
YXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAg
ICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOwotICAgICAgICAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBjb250ZXh0LmdwcjxDYWxsRnJhbWUqPihHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3Rlcik7Ci0gICAgICAgICAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47
IGNvZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7IGNvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2Fs
bHMoKSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgg
PSBjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxs
Qnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+
aW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2FsbEZyYW1lKSAr
IGlubGluZUNhbGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSAtIHNpemVvZihDUFVSZWdpc3Rlcikp
LCBjYWxsQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lLT50bXBPZmZzZXQpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0g
Y29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOyBieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkK
LSAgICAgICAgICAgICAgICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAw
KTsKLSAgICAgICAgfSk7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlKiB0bXBTY3JhdGNoID0gc2Ny
YXRjaCArIGV4aXQubV9kZXNjcmlwdG9yLT5tX3ZhbHVlcy50bXBJbmRleCgwKTsKKyAgICAgICAg
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNp
ZGVTdGF0ZSk+KCZ2bSwgJmV4aXQsIHRtcFNjcmF0Y2gpOworICAgICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxp
emVPU1JFeGl0U2lkZVN0YXRlKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQu
Y2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KIAogICAg
IC8vIE5vdyBnZXQgc3RhdGUgb3V0IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlciBhbmQgcGxhY2UgaXQg
YmFjayBpbnRvIHRoZSBzdGFjay4gVGhlIHZhbHVlcyBhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCA2YTNmYmQ3NmM1MWRhNGQ3YWQ1YTAyYWQ5MzkyOTM1MjFhNTMwMmQyLi5kZWEx
OTQ1MTM3MzAwY2MwNTY0Mjg2OTkxZWU5MWY1YzNhOTJhMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6dHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbigpKSkgewogICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICAgICAgICAgIHByb2JlKFs9XSAoUHJv
YmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpD
b250ZXh0JiBjdHgpIHsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkpJVCBbIiwgYnl0ZWNv
ZGVPZmZzZXQsICJdICIsIG9wY29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRl
cihjdHguZnAoKSksICIgQCAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0KQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9w
Y29kZUlEKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNv
ZGVJbmRleC5vZmZzZXQoKTsKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9j
b2RlQmxvY2s7Ci0gICAgICAgICAgICBwcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsK
KyAgICAgICAgICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJKSVQgWyIsIGJ5dGVjb2RlT2Zmc2V0LCAiXSBTTE9XICIs
IG9wY29kZU5hbWVzW29wY29kZUlEXSwgIiBjZnIgIiwgUmF3UG9pbnRlcihjdHguZnAoKSksICIg
QCAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
</data>
<flag name="commit-queue"
          id="441489"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422400</attachid>
            <date>2021-03-05 13:04:38 -0800</date>
            <delta_ts>2021-03-05 18:25:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222648-20210305130437.patch</filename>
            <type>text/plain</type>
            <size>39889</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NzFkZDAyODExMWIyMGZlMmJhOWRiYTAzNjc2NDM4YjliZDM5N2UwLi4xMmNhNmI0ZTQ4OTgwY2Uz
MWQ0MzM2Nzg1ZDE0NGVlYjZkOTUzZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMS0wMy0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNpbXBsaWZ5IE9TUkV4aXQgc2lkZSBzdGF0ZSBtYXRlcmlhbGl6
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjY0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSwgSklUIHByb2JlIHdpdGggbGFtYmRhIGZ1bmN0aW9uIGhhcyBtZW1vcnkgbGVha2lu
ZyBpc3N1ZS4gU28gd2UgbXVzdCBub3QgdXNlIGl0IGluIHByb2R1Y3Rpb24gY29kZS4KKyAgICAg
ICAgVG8gYXZvaWQgdGhlIGZ1dHVyZSB1c2UsIHdlIHJlbmFtZSBwcm9iZSB0byBwcm9iZURlYnVn
LgorCisgICAgICAgIEFuZCB0byBhdm9pZCB1c2luZyBwcm9iZSBmdW5jdGlvbiBpbiBPU1IgZXhp
dCBzaWRlIHN0YXRlIG1hdGVyaWFsaXphdGlvbiwgd2Ugc2ltcGxpZnkgdGhlIE9TUkV4aXQgc2lk
ZSBzdGF0ZSBtYXRlcmlhbGl6YXRpb24gY29kZSwKKyAgICAgICAgYW5kIG1ha2luZyBpdCBqdXN0
IGEgZnVuY3Rpb24gY2FsbC4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBtYXRlcmlhbGl6ZSBleGl0IHZh
bHVlcyBpbnRvIHNjcmF0Y2ggYnVmZmVyIGJlZm9yZSByZXN0b3JpbmcgdGhlbSB0bworICAgICAg
ICB0aGUgc3RhY2suIFRoaXMgYWxpZ25zIERGRyB0byB3aGF0IEZUTCBpcyBkb2luZy4gQW5kIERG
RyBhbmQgRlRMIGNhbiB1c2UgdGhlIHNhbWUgbWF0ZXJpYWxpemF0aW9uIG9wZXJhdGlvbiBmdW5j
dGlvbi4KKworICAgICAgICBDYWlvIGhlbHBlZCBtZSB0byBmaXggMzJiaXQgaXNzdWUgaW4gREZH
LgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXI6OnByb2JlRGVidWcpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6cHJvYmUpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRl
c3RDbGVhckJpdHM2NFdpdGhNYXNrKToKKyAgICAgICAgKEpTQzo6dGVzdENsZWFyQml0czY0V2l0
aE1hc2tUZXJuYXJ5KToKKyAgICAgICAgKEpTQzo6dGVzdFNoaWZ0QW5kQWRkKToKKyAgICAgICAg
KEpTQzo6dGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnRl
c3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2Jl
UHJlc2VydmVzR1BSUyk6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6dGVzdFByb2JlTW9kaWZpZXNQcm9ncmFtQ291bnRlcik6Cisg
ICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgorICAgICAgICAqIGIz
L2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorCiAyMDIx
LTAzLTA1ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAg
W0NNYWtlXSBCdW1wIGNtYWtlX21pbmltdW1fcmVxdWlyZWQgdmVyc2lvbiB0byAzLjEyIG9yIGxh
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuY3BwCmluZGV4IGZkMDgwZTIyYjBjMTE4ZmI2NjRhNWZmZjk1MGU5NjQ2OWY4MTJjNzYuLjA5
N2ZiODA0NTBhZjZiYzMzMWE4ZDZkM2ZlYWUxYjZmMWExNzYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCkBAIC01NCw3ICs1
NCw3IEBAIHN0YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soUHJvYmU6OkNvbnRleHQmIGNv
bnRleHQpCiAgICAgKCpmdW5jKShjb250ZXh0KTsKIH0KICAgICAKLXZvaWQgTWFjcm9Bc3NlbWJs
ZXI6OnByb2JlKEZ1bmN0aW9uPHZvaWQoUHJvYmU6OkNvbnRleHQmKT4gZnVuYykKK3ZvaWQgTWFj
cm9Bc3NlbWJsZXI6OnByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPiBm
dW5jKQogewogICAgIHByb2JlKHRhZ0NGdW5jdGlvbjxKSVRQcm9iZVB0clRhZz4oc3RkRnVuY3Rp
b25DYWxsYmFjayksIG5ldyBGdW5jdGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KFdURk1vdmUo
ZnVuYykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaAppbmRleCBjYTI3OTEwNmQwOGU0Yzg5NGZmOTUwZjAwZmUyMjZmYThhYTNjOTQy
Li44ZDA0MGNkMTU0YzdjZDMwMjYwYTk1YTAzNzI0NTlkNDllYzEyYzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xOTc5LDcg
KzE5NzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJh
c2UgewogICAgIC8vIE1hY3JvQXNzZW1ibGVyLgogICAgIHZvaWQgcHJvYmUoUHJvYmU6OkZ1bmN0
aW9uLCB2b2lkKiBhcmcpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9iZShGdW5j
dGlvbjx2b2lkKFByb2JlOjpDb250ZXh0Jik+KTsKKyAgICAvLyBUaGlzIGxlYWtzIG1lbW9yeS4g
TXVzdCBub3QgYmUgdXNlZCBmb3IgcHJvZHVjdGlvbi4KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHByb2JlRGVidWcoRnVuY3Rpb248dm9pZChQcm9iZTo6Q29udGV4dCYpPik7CiAKICAgICAv
LyBMZXQncyB5b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAvLyBT
ZWUgY29tbWVudHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9mIGhv
dyB0byB1c2UgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAKaW5kZXggOTZiNDM1YzM5OTUxMzMzN2IxZmMzY2FlYTY3YjExZjFmNmI2MWFhZi4uNjY1
ZmNmYjNjYTIwMGFhYzIzZWEyMDdmMGFjN2E3OTBlYWU3MGE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTUyMiwxMyArNTIyLDEzIEBAIHZv
aWQgdGVzdENsZWFyQml0czY0V2l0aE1hc2soKQogICAgIGF1dG8gdGVzdDIgPSBjb21waWxlKFsm
XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0
KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgICAgICBzYXZlZE1hc2sgPSBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaml0LmNsZWFyQml0czY0V2l0aE1h
c2soR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjAsIENDYWxsSGVs
cGVyczo6Q2xlYXJCaXRzQXR0cmlidXRlczo6TXVzdFByZXNlcnZlTWFzayk7CiAKLSAgICAgICAg
aml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnBy
b2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgQ0hF
Q0tfRVEoc2F2ZWRNYXNrLCBjb250ZXh0Lmdwcjx1aW50NjRfdD4oR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSk7CiAgICAgICAgIH0pOwogICAgICAgICBqaXQubW92ZShHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTU4MCwxMyArNTgwLDEzIEBAIHZvaWQg
dGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkKICAgICAgICAgaml0Lm1vdmUoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBqaXQubW92
ZShHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAKLSAgICAg
ICAgaml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0
LnByb2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAg
c2F2ZWRNYXNrID0gY29udGV4dC5ncHI8dWludDY0X3Q+KEdQUkluZm86OmFyZ3VtZW50R1BSMik7
CiAgICAgICAgIH0pOwogCiAgICAgICAgIGppdC5jbGVhckJpdHM2NFdpdGhNYXNrKEdQUkluZm86
OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgQ0NhbGxIZWxwZXJzOjpDbGVhckJpdHNBdHRyaWJ1dGVzOjpNdXN0UHJlc2VydmVNYXNr
KTsKIAotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgICAgICBDSEVDS19FUShzYXZlZE1hc2ssIGNvbnRleHQuZ3ByPHVpbnQ2NF90PihHUFJJ
bmZvOjphcmd1bWVudEdQUjIpKTsKICAgICAgICAgfSk7CiAKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2
b2lkIHRlc3RTaGlmdEFuZEFkZCgpCiAgICAgICAgICAgICBqaXQuc2hpZnRBbmRBZGQoYmFzZUdQ
UiwgaW5kZXhHUFIsIHNoaWZ0LCBkZXN0R1BSKTsKIAogI2lmIEVOQUJMRShNQVNNX1BST0JFKQot
ICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgIGppdC5wcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsK
ICAgICAgICAgICAgICAgICBpZiAoYmFzZVJlZyAhPSBkZXN0UmVnKQogICAgICAgICAgICAgICAg
ICAgICBDSEVDS19FUShjb250ZXh0LmdwcjxpbnRwdHJfdD4oYmFzZUdQUiksIGJhc2VQb2ludGVy
KTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXhSZWcgIT0gZGVzdFJlZykKQEAgLTE3NjYsNyAr
MTc2Niw3IEBAIHZvaWQgdGVzdFByb2JlUmVhZHNBcmd1bWVudFJlZ2lzdGVycygpCiAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRlc3RXb3JkKDMpKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIzKTsKICNlbmRpZgogCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2Jl
OjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6
OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1
OwogICAgICAgICAgICAgcHJvYmVXYXNDYWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgQ0hFQ0tf
RVEoY3B1LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjApLCB0ZXN0V29yZCgwKSk7CkBAIC0xODE1
LDcgKzE4MTUsNyBAQCB2b2lkIHRlc3RQcm9iZVdyaXRlc0FyZ3VtZW50UmVnaXN0ZXJzKCkKICAg
ICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgRlBS
SW5mbzo6ZnBSZWdUMSk7CiAKICAgICAgICAgLy8gV3JpdGUgZXhwZWN0ZWQgdmFsdWVzLgotICAg
ICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBq
aXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAg
ICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBjcHUuZ3ByKEdQUkluZm86OmFyZ3VtZW50R1BSMCkgPSB0ZXN0V29yZCgw
KTsKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHZvaWQgdGVzdFByb2JlV3JpdGVzQXJndW1lbnRSZWdp
c3RlcnMoKQogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGV4cGVjdGVk
IHZhbHVlcyB3ZXJlIHdyaXR0ZW4uCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250
ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRl
eHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAg
ICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKGNwdS5ncHIo
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSwgdGVzdFdvcmQoMCkpOwpAQCAtMTg3NCw3ICsxODc0LDcg
QEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKIAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUg
cmVnaXN0ZXJzIChleGNlcHQgZm9yIHNwLCBmcCwgYW5kIHBjKS4KLSAgICAgICAgaml0LnByb2Jl
KFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWco
WyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0byYgY3B1ID0g
Y29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAgICAgICAgICAg
Zm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlkIDw9IENDYWxs
SGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAtMTg5MCwxNCAr
MTg5MCwxNCBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAgICB9KTsKIAog
ICAgICAgICAvLyBJbnZva2UgdGhlIHByb2JlIHRvIGNhbGwgYSBsb3Qgb2YgZnVuY3Rpb25zIGFu
ZCB0cmFzaCByZWdpc3RlciB2YWx1ZXMuCi0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpD
b250ZXh0JikgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0Jikg
ewogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIENIRUNLX0VRKHRl
c3RGdW5jdGlvblRvVHJhc2hHUFJzKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLCAxMCk7
CiAgICAgICAgICAgICBDSEVDS19FUSh0ZXN0RnVuY3Rpb25Ub1RyYXNoRlBScygwLCAxLCAyLCAz
LCA0LCA1LCA2LCA3LCA4LCA5KSwgMTApOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBWYWxp
ZGF0ZSB0aGF0IHRoZSByZWdpc3RlcnMgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAg
ICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQu
cHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBh
dXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
aWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBA
IC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIHRlc3RQcm9iZVByZXNlcnZlc0dQUlMoKQogICAgICAg
ICB9KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGF0ZS4KLSAgICAgICAg
aml0LnByb2JlKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgaml0LnBy
b2JlRGVidWcoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgYXV0
byYgY3B1ID0gY29udGV4dC5jcHU7CiAgICAgICAgICAgICBwcm9iZUNhbGxDb3VudCsrOwogICAg
ICAgICAgICAgZm9yIChhdXRvIGlkID0gQ0NhbGxIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7IGlk
IDw9IENDYWxsSGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGlkID0gbmV4dElEKGlkKSkgewpAQCAt
MTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0UHJvYmVQcmVzZXJ2ZXNHUFJTKCkKICAgICAgICAg
fSk7CiAKICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgb3JpZ2luYWwgc3RhdGUgd2FzIHJl
c3RvcmVkLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkg
eworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2Jl
Q2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZp
cnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBu
ZXh0SUQoaWQpKSB7CkBAIC0xOTc3LDcgKzE5NzcsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVz
U3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0
ZQogCiAgICAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIHN0YWNrIHBvaW50ZXIgYW5kIG1vZGlm
eSB0aGUgc3AsIGFuZAogICAgICAgICAvLyB3cml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byBvdGhl
ciByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgZnAsIGFuZCBwYykuCi0gICAgICAgIGppdC5wcm9iZShb
Jl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsm
XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGF1dG8mIGNwdSA9IGNv
bnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKICAgICAgICAgICAgIGZv
ciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBpZCA8PSBDQ2FsbEhl
bHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkpIHsKQEAgLTIwMDMsNyArMjAw
Myw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlvbjx2
b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8v
IFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZXMuCi0g
ICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
IGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAg
ICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQr
KzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdpc3Rl
cigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChpZCkp
IHsKQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50
ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAgICAgICAg
IH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBq
aXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJv
YmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRv
JiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQg
PD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgaWQgPSBuZXh0SUQoaWQpKSB7CkBAIC0y
MDQ0LDcgKzIwNDQsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6
RnVuY3Rpb248dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogICAgICAgICB9KTsKIAog
ICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBvcmlnaW5hbCBzdGF0ZSB3YXMgcmVzdG9yZWQu
Ci0gICAgICAgIGppdC5wcm9iZShbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIGppdC5wcm9iZURlYnVnKFsmXSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNwdSA9IGNvbnRleHQuY3B1OwogICAgICAgICAgICAgcHJvYmVDYWxsQ291
bnQrKzsKICAgICAgICAgICAgIGZvciAoYXV0byBpZCA9IENDYWxsSGVscGVyczo6Zmlyc3RSZWdp
c3RlcigpOyBpZCA8PSBDQ2FsbEhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBpZCA9IG5leHRJRChp
ZCkpIHsKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNQcm9ncmFt
Q291bnRlcigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29u
dGludWF0aW9uID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgIC8v
IFZhbGlkYXRlIHRoYXQgd2UgcmVhY2hlZCB0aGUgY29udGludWF0aW9uLgotICAgICAgICBqaXQu
cHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYpIHsKKyAgICAgICAgaml0LnByb2JlRGVidWcoWyZd
IChQcm9iZTo6Q29udGV4dCYpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAg
ICAgICAgICBjb250aW51YXRpb25XYXNSZWFjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CkBAIC0y
MTIxLDcgKzIxMjEsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzUHJvZ3JhbUNvdW50ZXIoKQog
ICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogCiAgICAgICAgIC8vIFdyaXRlIGV4
cGVjdGVkIHZhbHVlcyBpbnRvIHRoZSByZWdpc3RlcnMuCi0gICAgICAgIGppdC5wcm9iZShbJl0g
KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGppdC5wcm9iZURlYnVnKFsmXSAo
UHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIHByb2JlQ2FsbENvdW50Kys7
CiAgICAgICAgICAgICBjb250ZXh0LmNwdS5wYygpID0gcmV0YWdDb2RlUHRyPEpTRW50cnlQdHJU
YWcsIEpJVFByb2JlUENQdHJUYWc+KGNvbnRpbnVhdGlvbi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CiAgICAgICAgIH0pOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgdm9pZCB0ZXN0UHJvYmVN
b2RpZmllc1N0YWNrVmFsdWVzKCkKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsK
IAogICAgICAgICAvLyBXcml0ZSBleHBlY3RlZCB2YWx1ZXMgaW50byB0aGUgcmVnaXN0ZXJzLgot
ICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0g
Y29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAgcHJvYmVDYWxsQ291bnQrKzsKQEAgLTIxOTYs
NyArMjE5Niw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAg
IH0pOwogCiAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lzdGVycyBhbmQgc3RhY2sg
aGF2ZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpD
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsK
ICAgICAgICAgICAgIGF1dG8mIHN0YWNrID0gY29udGV4dC5zdGFjaygpOwogICAgICAgICAgICAg
cHJvYmVDYWxsQ291bnQrKzsKQEAgLTIyMzIsNyArMjIzMiw3IEBAIHZvaWQgdGVzdFByb2JlTW9k
aWZpZXNTdGFja1ZhbHVlcygpCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFJlc3RvcmUgdGhl
IG9yaWdpbmFsIHN0YXRlLgotICAgICAgICBqaXQucHJvYmUoWyZdIChQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICBqaXQucHJvYmVEZWJ1ZyhbJl0gKFByb2JlOjpDb250ZXh0JiBj
b250ZXh0KSB7CiAgICAgICAgICAgICBhdXRvJiBjcHUgPSBjb250ZXh0LmNwdTsKICAgICAgICAg
ICAgIHByb2JlQ2FsbENvdW50Kys7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaWQgPSBDQ2FsbEhl
bHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgaWQgPD0gQ0NhbGxIZWxwZXJzOjpsYXN0UmVnaXN0ZXIo
KTsgaWQgPSBuZXh0SUQoaWQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWly
LmNwcAppbmRleCBiY2MxNjAzZTVjODA1OTQ2NTUyNzkxMmIxMTQzMTk3YWFhNTA5ODliLi5lNWM4
NjIyZDQ1MjRhMmY4YTI1Y2UxZDQ1ZWMyZTVjODZlN2M4NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgdGVzdEVs
aWRlSGFuZGxlc0Vhcmx5Q2xvYmJlcigpCiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJTZXQo
bGFzdENhbGxlZVNhdmUpKTsKIAogICAgIHBhdGNoLT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgSlNDOjpCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewot
ICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICBmb3IgKFJlZyByZWcgOiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgY29udGV4dC5n
cHIocmVnLmdwcigpKSA9IDA7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKaW5kZXggZDM2OTRkN2QxY2UyNzc1NDg0OWUxNjljN2MzZDVhODAzMTY1
NThhZi4uMTQ2ZDExN2UzMzU3ZTBhZWQ1NmU5MDdjZmZiYjU0ZWFkNDBiY2Q5NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0yMTgsNiArMjE4LDQ2IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwgdm9pZCwgKENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKICAgICB2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9uID0gZXhp
dC5tX2NvZGUuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKK0pTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRTaWRlU3RhdGUsIHZvaWQsIChW
TSogdm1Qb2ludGVyLCBjb25zdCBPU1JFeGl0QmFzZSogZXhpdFBvaW50ZXIsIEVuY29kZWRKU1Zh
bHVlKiB0bXBTY3JhdGNoKSkKK3sKKyAgICBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCA9ICpleGl0
UG9pbnRlcjsKKyAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGU+LCBWTTo6ZXhwZWN0ZWRNYXhBY3RpdmVTaWRl
U3RhdGVDb3VudD4gc2lkZVN0YXRlczsKKyAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7CisgICAgYXV0byBzaWRlU3Rh
dGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBzaWRlU3RhdGVzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHZtLnB1c2hDaGVja3BvaW50
T1NSU2lkZVN0YXRlKFdURk1vdmUoc2lkZVN0YXRlc1tpXSkpOworICAgIH0pOworCisgICAgYXV0
byBhZGRTaWRlU3RhdGUgPSBbJl0gKENhbGxGcmFtZSogZnJhbWUsIEJ5dGVjb2RlSW5kZXggaW5k
ZXgsIHNpemVfdCB0bXBPZmZzZXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENoZWNrcG9p
bnRPU1JFeGl0U2lkZVN0YXRlPiBzaWRlU3RhdGUgPSBXVEY6Om1ha2VVbmlxdWU8Q2hlY2twb2lu
dE9TUkV4aXRTaWRlU3RhdGU+KGZyYW1lKTsKKworICAgICAgICBzaWRlU3RhdGUtPmJ5dGVjb2Rl
SW5kZXggPSBpbmRleDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhOdW1DaGVj
a3BvaW50VG1wczsgKytpKQorICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNWYWx1
ZTo6ZGVjb2RlKHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pOworCisgICAgICAgIHNpZGVTdGF0
ZXMuYXBwZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7CisgICAgfTsKKworICAgIGNvbnN0IENvZGVP
cmlnaW4qIGNvZGVPcmlnaW47CisgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2RlT3Jp
Z2luOyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2RlT3Jp
Z2luID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5nVGFp
bENhbGxzKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCA9IGNv
ZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgaWYgKCFjYWxsQnl0ZWNvZGVJbmRl
eC5jaGVja3BvaW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvKiBp
bmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKTsKKyAgICAgICAg
YWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkgKyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0
KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIpKSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxG
cmFtZS0+dG1wT2Zmc2V0KTsKKyAgICB9CisKKyAgICBpZiAoIWNvZGVPcmlnaW4pCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3Jp
Z2luLT5ieXRlY29kZUluZGV4KCk7IGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQorICAgICAg
ICBhZGRTaWRlU3RhdGUoY2FsbEZyYW1lLCBieXRlY29kZUluZGV4LCAwKTsKK30KKwogdm9pZCBP
U1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JF
eGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1
bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRUYWdzSW5QbGFj
ZSgpOwpAQCAtNTE2LDE4ICs1NTYsMTcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgIC8v
IGRvIHRoaXMgZXZlbiBmb3Igc3RhdGUgdGhhdCdzIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHBsYWNl
IG9uIHRoZSBzdGFjay4KICAgICAvLyBJdCBtYWtlcyB0aGluZ3Mgc2ltcGxlciBsYXRlci4KIAor
ICAgIC8vIFRoZSB0YWcgcmVnaXN0ZXJzIGFyZSBuZWVkZWQgdG8gbWF0ZXJpYWxpemUgcmVjb3Zl
cmllcyBiZWxvdy4KKyAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsK
KwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsr
aW5kZXgpIHsKICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5k
c1tpbmRleF07CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAg
ICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbnQzMkRpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBTdHJp
Y3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0
Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0Nyw2ICs1ODYsMTQzIEBAIHZv
aWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3Qg
T1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAgICAg
ICAgY2FzZSBDb25zdGFudDogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBqaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3Zl
cnkuY29uc3RhbnQoKSkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBq
aXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFn
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKHJlY292ZXJ5LmNvbnN0YW50KCkucGF5bG9hZCgpKSwKKyAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoR1BSSW5mbzo6cmVn
VDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChH
UFJJbmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyNlbHNlCisgICAgICAgICAgICBqaXQu
c3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpJbnQzMlRhZyksCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7CisjZW5kaWYK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3Rh
Y2s6CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvV29yZChHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQ
UkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworI2Vsc2UKKyAgICAgICAgICAgIGppdC5s
b2FkMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKHJlY292
ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCisgICAgICAgICAgICAgICAgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNC
aXRzLnRhZyk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisjZW5kaWYKKyAg
ICAgICAgICAgIGJyZWFrOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgY2FzZSBV
bmJveGVkQm9vbGVhbkluR1BSOgorICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyks
CisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4o
c2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQubG9h
ZDMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVy
eS52aXJ0dWFsUmVnaXN0ZXIoKSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCisgICAgICAgICAgICAgICAgJmJp
dHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNC
aXRzLnRhZyk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBHUFJJ
bmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6CisgICAgICAgICAgICBq
aXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKKyAg
ICAgICAgICAgIGppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpw
YXlsb2FkRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKKyAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMudGFnKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2Fk
KTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKKyAgICAgICAgY2FzZSBVbmJveGVkRG91
YmxlSW5GUFI6CisgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgaml0
LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEpLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdU
MCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5m
bzo6ZnBSZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxKSk7Cisj
ZWxzZQorICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxKSk7CisjZW5kaWYKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBp
bmRleCksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEZQUklu
Zm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnB1cmlmeU5hTihGUFJJbmZvOjpmcFJlZ1Qw
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaml0LmJveERvdWJsZShGUFJJbmZv
OjpmcFJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEpKTsKKyNl
bHNlCisgICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEpKTsKKyNlbmRpZgorICAgICAgICAgICAg
YnJlYWs7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjYXNlIFVuYm94ZWRJbnQ1Mklu
R1BSOgorICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgIGppdC5yc2hpZnQ2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgaml0LmJveEludDUyKEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIHNjcmF0Y2ggKyBpbmRleCk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQ2
NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IocmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkp
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQucnNoaWZ0NjQoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGpp
dC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKKyAgICAgICAg
ICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjpyZWdUMCwgc2NyYXRjaCArIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICBqaXQu
bG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZv
OjpyZWdUMCwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5k
ZXgpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU4NSwxMDEgKzc2MSwxMSBAQCB2b2lkIE9T
UkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4
aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKIAogICAgIGlmIChleGl0Lm1fY29k
ZU9yaWdpbi5pbmxpbmVTdGFja0NvbnRhaW5zQWN0aXZlQ2hlY2twb2ludCgpKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGRuJ3QgdXNlIGEgcHJvYmUgYnV0IGZpbGxpbmcgYWxs
IHRoZSBzaWRlIHN0YXRlIG9iamVjdHMgaXMgdHJpY2t5IG90aGVyd2lzZS4uLgotICAgICAgICBW
ZWN0b3I8VmFsdWVSZWNvdmVyeT4gdmFsdWVzKG9wZXJhbmRzLm51bWJlck9mVG1wcygpKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYW5kcy5udW1iZXJPZlRtcHMoKTsgKytp
KQotICAgICAgICAgICAgdmFsdWVzW2ldID0gb3BlcmFuZHMudG1wKGkpOwotCi0gICAgICAgIFZN
KiB2bVB0ciA9ICZ2bTsKLSAgICAgICAgYXV0byogdG1wU2NyYXRjaCA9IHNjcmF0Y2ggKyBvcGVy
YW5kcy50bXBJbmRleCgwKTsKLSAgICAgICAgaml0LnByb2JlKFs9LCB2YWx1ZXMgPSBXVEZNb3Zl
KHZhbHVlcyldIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4sIFZNOjpleHBlY3Rl
ZE1heEFjdGl2ZVNpZGVTdGF0ZUNvdW50PiBzaWRlU3RhdGVzOwotICAgICAgICAgICAgc2lkZVN0
YXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4aXQubV9jb2RlT3JpZ2luLmlubGluZURlcHRo
KCkpOwotICAgICAgICAgICAgYXV0byBzaWRlU3RhdGVDb21taXR0ZXIgPSBtYWtlU2NvcGVFeGl0
KFsmXSB7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IHNpZGVTdGF0ZXMuc2l6ZSgp
OyBpLS07KQotICAgICAgICAgICAgICAgICAgICB2bVB0ci0+cHVzaENoZWNrcG9pbnRPU1JTaWRl
U3RhdGUoV1RGTW92ZShzaWRlU3RhdGVzW2ldKSk7Ci0gICAgICAgICAgICB9KTsKLQotCi0gICAg
ICAgICAgICBhdXRvIGFkZFNpZGVTdGF0ZSA9IFsmXSAoQ2FsbEZyYW1lKiBmcmFtZSwgQnl0ZWNv
ZGVJbmRleCBpbmRleCwgc2l6ZV90IHRtcE9mZnNldCkgewotICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0ZT4gc2lkZVN0YXRlID0gV1RGOjpt
YWtlVW5pcXVlPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRlPihmcmFtZSk7Ci0KLSAgICAgICAg
ICAgICAgICBzaWRlU3RhdGUtPmJ5dGVjb2RlSW5kZXggPSBpbmRleDsKLSAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE51bUNoZWNrcG9pbnRUbXBzOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byYgcmVjb3ZlcnkgPSB2YWx1ZXNbaSArIHRtcE9mZnNldF07
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gd2hhdCB0aGUgRlRM
IGRvZXMgYW5kIG1hdGVyaWFsaXplIGFsbCB0aGUgSlNWYWx1ZXMgaW50byB0aGUgc2NyYXRjaCBi
dWZmZXIuCi0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkp
IHsKLQotICAgICAgICAgICAgICAgICAgICBjYXNlIENvbnN0YW50OgotICAgICAgICAgICAgICAg
ICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVjb3ZlcnkuY29uc3RhbnQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgVW5i
b3hlZEludDMySW5HUFI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJ
bkpTU3RhY2s6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0p
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc0Jvb2xlYW4oc3RhdGlj
X2Nhc3Q8Ym9vbD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAg
ICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgSW5HUFI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNr
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWludGVy
cHJldF9jYXN0PEpTVmFsdWUqPih0bXBTY3JhdGNoKVtpICsgdG1wT2Zmc2V0XTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0jZWxzZSAvLyBV
U0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+
KHRtcFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBjYXNlIENl
bGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZENl
bGxJbkdQUjogewotICAgICAgICAgICAgICAgICAgICAgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciogdmFsdWVEZXNjcmlwdG9yID0gYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3Iq
Pih0bXBTY3JhdGNoICsgaSArIHRtcE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
aWRlU3RhdGUtPnRtcHNbaV0gPSBKU1ZhbHVlKEpTVmFsdWU6OkNlbGxUYWcsIHZhbHVlRGVzY3Jp
cHRvci0+YXNCaXRzLnBheWxvYWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBjYXNlIEJvb2xlYW5E
aXNwbGFjZWRJbkpTU3RhY2s6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+
dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2FzdDxib29sPih0bXBTY3JhdGNoW2kgKyB0bXBP
ZmZzZXRdKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCi0KLSAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHNpZGVTdGF0ZXMuYXBw
ZW5kKFdURk1vdmUoc2lkZVN0YXRlKSk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBj
b25zdCBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luOwotICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBjb250ZXh0LmdwcjxDYWxsRnJhbWUqPihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7Ci0gICAgICAgICAgICBmb3IgKGNvZGVPcmlnaW4gPSAmZXhpdC5tX2NvZGVPcmlnaW47IGNv
ZGVPcmlnaW4gJiYgY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7IGNvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUoKS0+Z2V0Q2FsbGVyU2tpcHBpbmdUYWlsQ2FsbHMo
KSkgewotICAgICAgICAgICAgICAgIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXggPSBj
b2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsQnl0
ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICAgICAgYXV0byogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5s
aW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPENhbGxGcmFtZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkg
KyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIp
KSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxGcmFtZS0+dG1wT2Zmc2V0KTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFjb2RlT3JpZ2luKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgaWYgKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9
IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKGNhbGxGcmFtZSwgYnl0ZWNvZGVJbmRleCwg
MCk7Ci0gICAgICAgIH0pOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSogdG1wU2NyYXRjaCA9IHNj
cmF0Y2ggKyBvcGVyYW5kcy50bXBJbmRleCgwKTsKKyAgICAgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbk1hdGVyaWFsaXplT1NSRXhpdFNpZGVTdGF0ZSk+KCZ2bSwgJmV4
aXQsIHRtcFNjcmF0Y2gpOworICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwor
ICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0
aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPU1JFeGl0U2lkZVN0YXRl
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25B
cmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KIAogICAgIC8vIERvIGFsbCBkYXRhIGZv
cm1hdCBjb252ZXJzaW9ucyBhbmQgc3RvcmUgdGhlIHJlc3VsdHMgaW50byB0aGUgc3RhY2suCkBA
IC02OTUsMTIgKzc4MSwyMiBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVy
cyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAKICAgICAgICAgc3dp
dGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNT
dGFjazoKKyAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBj
YXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJ
bkpTU3RhY2s6CisgICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAg
ICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5H
UFI6CisgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVk
RG91YmxlSW5GUFI6CisgICAgICAgIGNhc2UgQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgSW5GUFI6
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBJbkdQUjoKLSAgICAgICAgY2FzZSBV
bmJveGVkQ2VsbEluR1BSOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6Ci0g
ICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBVbmJv
eGVkSW50NTJJbkdQUjoKKyAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKKyAg
ICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50NTJJbkdQUjoKKyAgICAgICAgY2FzZSBTdHJpY3RJ
bnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCAr
IGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZv
OjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNzE5LDEwMCArODE1LDggQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhp
dChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAog
ICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxLAogICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CiAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdp
c2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRz
LnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAg
aml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0
YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXls
b2FkRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVW5i
b3hlZEJvb2xlYW5JbkdQUjoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNr
OgotICAgICAgICAgICAgaml0LmxvYWQzMigKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0
PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9h
ZCwKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpCb29sZWFuVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2
NCkKIAotICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgotICAgICAgICBjYXNlIEludDMy
RGlzcGxhY2VkSW5KU1N0YWNrOgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQu
bG9hZDY0KHNjcmF0Y2ggKyBpbmRleCwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0
Lnplcm9FeHRlbmQzMlRvV29yZChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5sb2Fk
MzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9y
Kj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BS
SW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLAotICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAg
IGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7Ci0jZW5kaWYKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgY2FzZSBVbmJv
eGVkSW50NTJJbkdQUjoKLSAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgICAgICBqaXQucnNoaWZ0NjQoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIEdQUkluZm86OnJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVn
VDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5z
dG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFu
ZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBVbmJveGVkU3RyaWN0SW50
NTJJbkdQUjoKLSAgICAgICAgY2FzZSBTdHJpY3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKLSAg
ICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7Ci0g
ICAgICAgICAgICBqaXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgY2FzZSBVbmJveGVkRG91Ymxl
SW5GUFI6Ci0gICAgICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICAg
ICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRl
eCksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAg
ICAgICAgICBqaXQucHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOwotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86
OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5z
dG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
b3BlcmFuZCkpOwotI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENv
bnN0YW50OgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBqaXQuc3RvcmU2NCgKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUocmVjb3ZlcnkuY29uc3RhbnQoKSkpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7Ci0jZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlMzIo
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3Zlcnku
Y29uc3RhbnQoKS50YWcoKSksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdG
b3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS5wYXlsb2Fk
KCkpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5k
KSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2UgRGlyZWN0QXJn
dW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgogICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50c1Ro
YXRXZXJlTm90Q3JlYXRlZDoKICAgICAgICAgICAgIC8vIERvbid0IGRvIHRoaXMsIHlldC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKaW5kZXggZWFmYzVmZjQ3MDgwYWFiODRj
Njk4MTIyMTIwN2FkYTU5MDYwOGY4NS4uMWI2MzM2YTJkMmZhNmUyNjU5YjMxNjkyOTcxYWVmZTVl
ODgzN2VlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTE0MCw2
ICsxNDAsNyBAQCBzdHJ1Y3QgT1NSRXhpdFN0YXRlIDogUmVmQ291bnRlZDxPU1JFeGl0U3RhdGU+
IHsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWxlT1NSRXhpdCwg
dm9pZCwgKENhbGxGcmFtZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
RGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZSwgdm9pZCwgKENhbGxGcmFtZSosIHZvaWQqLCB2
b2lkKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXRlcmlhbGl6ZU9T
UkV4aXRTaWRlU3RhdGUsIHZvaWQsIChWTSosIGNvbnN0IE9TUkV4aXRCYXNlKiwgRW5jb2RlZEpT
VmFsdWUqKSk7CiAKIC8vID09PSBPU1JFeGl0ID09PQogLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0NTg3NmUyMGQwZTliZWM1ZmQ3MzBk
YTQ0ZWRiYTgxNDY2N2RlYzQ3Li4xY2UxMjM4MWVlZmRlZDA5NmFjZjY4ODYwYjg1ZjZjMzg5OGI0
ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC02NDYsNyArNjQ2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAg
ICAgICAgZnBSZWcgPSBwYXJhbXNbMF0uZnByKCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICByZWcgPSBwYXJhbXNbMF0uZ3ByKCk7Ci0gICAgICAgICAgICAgICAg
aml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAg
ICBqaXQucHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWUgaW5wdXQ7CiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBk
b3VibGVJbnB1dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0
Q29tcGlsZXIuY3BwCmluZGV4IDM4MzY3NzhjYTNjN2ExMWY2OGQ0YWI2ZTc0YThkMjRjOTQ4NDFm
Y2MuLmYwYWUyMDM0OWI4Yjg1NzAxZGZmYjVmZWMzYmZhYzg5MTg5M2QyODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAgLTQ4MCw0
MyArNDgwLDExIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhp
dElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0JiBleGl0CiAgICAgc2l6ZV90IGJhc2VsaW5l
VmlydHVhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxl
ZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwogCiAgICAgaWYgKGV4aXQubV9jb2RlT3Jp
Z2luLmlubGluZVN0YWNrQ29udGFpbnNBY3RpdmVDaGVja3BvaW50KCkpIHsKLSAgICAgICAgSlNW
YWx1ZSogdG1wU2NyYXRjaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHNjcmF0Y2ggKyBl
eGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMudG1wSW5kZXgoMCkpOwotICAgICAgICBWTSogdm1Q
dHIgPSAmdm07Ci0gICAgICAgIGppdC5wcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoZWNrcG9pbnRPU1JFeGl0
U2lkZVN0YXRlPiwgVk06OmV4cGVjdGVkTWF4QWN0aXZlU2lkZVN0YXRlQ291bnQ+IHNpZGVTdGF0
ZXM7Ci0gICAgICAgICAgICBzaWRlU3RhdGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZXhpdC5t
X2NvZGVPcmlnaW4uaW5saW5lRGVwdGgoKSk7Ci0gICAgICAgICAgICBhdXRvIHNpZGVTdGF0ZUNv
bW1pdHRlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gc2lkZVN0YXRlcy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAgICAgICAgIHZtUHRy
LT5wdXNoQ2hlY2twb2ludE9TUlNpZGVTdGF0ZShXVEZNb3ZlKHNpZGVTdGF0ZXNbaV0pKTsKLSAg
ICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBhdXRvIGFkZFNpZGVTdGF0ZSA9IFsmXSAoQ2Fs
bEZyYW1lKiBmcmFtZSwgQnl0ZWNvZGVJbmRleCBpbmRleCwgc2l6ZV90IHRtcE9mZnNldCkgewot
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDaGVja3BvaW50T1NSRXhpdFNpZGVTdGF0
ZT4gc2lkZVN0YXRlID0gV1RGOjptYWtlVW5pcXVlPENoZWNrcG9pbnRPU1JFeGl0U2lkZVN0YXRl
PihmcmFtZSk7Ci0KLSAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPmJ5dGVjb2RlSW5kZXggPSBp
bmRleDsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE51bUNoZWNr
cG9pbnRUbXBzOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9
IHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF07Ci0KLSAgICAgICAgICAgICAgICBzaWRlU3RhdGVz
LmFwcGVuZChXVEZNb3ZlKHNpZGVTdGF0ZSkpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAg
ICAgY29uc3QgQ29kZU9yaWdpbiogY29kZU9yaWdpbjsKLSAgICAgICAgICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gY29udGV4dC5ncHI8Q2FsbEZyYW1lKj4oR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOwotICAgICAgICAgICAgZm9yIChjb2RlT3JpZ2luID0gJmV4aXQubV9jb2RlT3JpZ2lu
OyBjb2RlT3JpZ2luICYmIGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpOyBjb2RlT3JpZ2lu
ID0gY29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxlclNraXBwaW5nVGFpbENh
bGxzKCkpIHsKLSAgICAgICAgICAgICAgICBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29kZUluZGV4
ID0gY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCgpOwotICAgICAgICAgICAgICAgIGlmICghY2Fs
bEJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAgICAgICAgIGF1dG8qIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4t
PmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICAgICAgICAgIGFkZFNpZGVTdGF0ZShyZWludGVy
cHJldF9jYXN0PENhbGxGcmFtZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNhbGxGcmFtZSkg
KyBpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCkgLSBzaXplb2YoQ1BVUmVnaXN0ZXIp
KSwgY2FsbEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxGcmFtZS0+dG1wT2Zmc2V0KTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFjb2RlT3JpZ2luKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgICAgaWYgKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9
IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXgoKTsgYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkp
Ci0gICAgICAgICAgICAgICAgYWRkU2lkZVN0YXRlKGNhbGxGcmFtZSwgYnl0ZWNvZGVJbmRleCwg
MCk7Ci0gICAgICAgIH0pOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSogdG1wU2NyYXRjaCA9IHNj
cmF0Y2ggKyBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMudG1wSW5kZXgoMCk7CisgICAgICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25NYXRlcmlhbGl6ZU9TUkV4aXRT
aWRlU3RhdGUpPigmdm0sICZleGl0LCB0bXBTY3JhdGNoKTsKKyAgICAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKKyAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk1hdGVyaWFs
aXplT1NSRXhpdFNpZGVTdGF0ZSkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgaml0
LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICB9CiAKICAg
ICAvLyBOb3cgZ2V0IHN0YXRlIG91dCBvZiB0aGUgc2NyYXRjaCBidWZmZXIgYW5kIHBsYWNlIGl0
IGJhY2sgaW50byB0aGUgc3RhY2suIFRoZSB2YWx1ZXMgYXJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKaW5kZXggNmEzZmJkNzZjNTFkYTRkN2FkNWEwMmFkOTM5MjkzNTIxYTUzMDJkMi4uZGVh
MTk0NTEzNzMwMGNjMDU2NDI4Njk5MWVlOTFmNWMzYTkyYTEyNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKICAgICAgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnRyYWNlQmFzZWxpbmVKSVRFeGVjdXRpb24oKSkpIHsKICAgICAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgICAgICAgICBwcm9iZShbPV0gKFBy
b2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgICAgIHByb2JlRGVidWcoWz1dIChQcm9iZTo6
Q29udGV4dCYgY3R4KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJKSVQgWyIsIGJ5dGVj
b2RlT2Zmc2V0LCAiXSAiLCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sICIgY2ZyICIsIFJhd1BvaW50
ZXIoY3R4LmZwKCkpLCAiIEAgIiwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudEluc3RydWN0aW9uLT5v
cGNvZGVJRCgpOwogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
Y29kZUJsb2NrOwotICAgICAgICAgICAgcHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7
CisgICAgICAgICAgICBwcm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGN0eCkgewogICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbigiSklUIFsiLCBieXRlY29kZU9mZnNldCwgIl0gU0xPVyAi
LCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sICIgY2ZyICIsIFJhd1BvaW50ZXIoY3R4LmZwKCkpLCAi
IEAgIiwgY29kZUJsb2NrKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>