<?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>198087</bug_id>
          
          <creation_ts>2019-05-21 15:06:14 -0700</creation_ts>
          <short_desc>WHLSL: fix enum parsing</short_desc>
          <delta_ts>2019-05-22 17:35:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1538005</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-21 15:06:14 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538103</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-21 19:38:58 -0700</bug_when>
    <thetext>Doing this next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538104</commentid>
    <comment_count>2</comment_count>
      <attachid>370375</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-21 20:04:18 -0700</bug_when>
    <thetext>Created attachment 370375
WIP

contains all the dumper code. Will rebase once that lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538119</commentid>
    <comment_count>3</comment_count>
      <attachid>370380</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-21 22:00:15 -0700</bug_when>
    <thetext>Created attachment 370380
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538120</commentid>
    <comment_count>4</comment_count>
      <attachid>370380</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-21 22:00:56 -0700</bug_when>
    <thetext>Comment on attachment 370380
patch

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

&gt; LayoutTests/webgpu/whlsl-dont-crash-parsing-enum.html:1
&gt; +&lt;!DOCTYPE html&gt;

Will try to reduce this test case to just run the WHLSL parser. But I don&apos;t have a build yet to get against. Will fix for final patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538228</commentid>
    <comment_count>5</comment_count>
      <attachid>370380</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-05-22 09:57:05 -0700</bug_when>
    <thetext>Comment on attachment 370380
patch

Thanks for catching this! Is this the only place in the file where this bad pattern occurs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538362</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-22 13:58:10 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #5)
&gt; Comment on attachment 370380 [details]
&gt; patch
&gt; 
&gt; Thanks for catching this! Is this the only place in the file where this bad
&gt; pattern occurs?

Which file are we talking about here?

(Maybe we should make the name() method not return &quot;String&amp;&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538455</commentid>
    <comment_count>7</comment_count>
      <attachid>370380</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-22 16:25:09 -0700</bug_when>
    <thetext>Comment on attachment 370380
patch

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

&gt;&gt; LayoutTests/webgpu/whlsl-dont-crash-parsing-enum.html:1
&gt;&gt; +&lt;!DOCTYPE html&gt;
&gt; 
&gt; Will try to reduce this test case to just run the WHLSL parser. But I don&apos;t have a build yet to get against. Will fix for final patch.

gonna just stick with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538467</commentid>
    <comment_count>8</comment_count>
      <attachid>370466</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-22 16:43:32 -0700</bug_when>
    <thetext>Created attachment 370466
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538489</commentid>
    <comment_count>9</comment_count>
      <attachid>370466</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-22 17:33:52 -0700</bug_when>
    <thetext>Comment on attachment 370466
patch for landing

Clearing flags on attachment: 370466

Committed r245662: &lt;https://trac.webkit.org/changeset/245662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538490</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-22 17:33:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538491</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-22 17:35:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/51049758&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370375</attachid>
            <date>2019-05-21 20:04:18 -0700</date>
            <delta_ts>2019-05-21 22:00:15 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>47674</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTYwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE5LTA1LTIxICBTYWFtIGJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFdITFNMOiBBZGQgYW4gQVNUIGR1
bXBlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
MDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBtYWtlcyBpdCBzbyB3ZSBjYW4gZHVtcCB0aGUgV0hMU0wgcHJvZ3JhbSdzIEFTVC4K
KyAgICAgICAgVGhpcyB3aWxsIGJlY29tZSB1c2VmdWwgd2hlbiB3ZSdyZSBkZWJ1Z2dpbmcgcGFz
c2VzIHRoYXQKKyAgICAgICAgdHJhbnNmb3JtIHRoZSBBU1QuCisgICAgICAgIAorICAgICAgICBU
aGUgZHVtcGVyIG1vc3RseSBwcmludHMgaW4gYSBzdHlsZSB3aGVyZSB0aGUgZHVtcCBpcyBhbG1v
c3QKKyAgICAgICAgdmFsaWQgV0hMU0wgY29kZS4gRS5nLCB0aGlzIFdITFNMIHByb2dyYW06Cisg
ICAgICAgIGBgYAorICAgICAgICBpbnQgZm9vKGludCBhcmcpIHsKKyAgICAgICAgICAgIHJldHVy
biBhcmcgKyAxOworICAgICAgICB9CisgICAgICAgIGBgYAorICAgICAgICAKKyAgICAgICAgZ2V0
cyBkdW1wZWQgYXM6CisgICAgICAgIGBgYAorICAgICAgICBpbnQgZm9vKGludCBhcmcpIHsKKyAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdG9yKyhhcmcsIDEpOworICAgICAgICB9CisgICAgICAgIGBg
YAorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgYSB3YXkgdG8gZHVtcCBi
ZXR3ZWVuIGVhY2ggcGFzcywgYWZ0ZXIKKyAgICAgICAgcGFyc2luZywgb3IgYXQgdGhlIGVuZCBv
ZiBhbGwgcGFzc2VzLiBDdXJyZW50bHksIHRoaXMgaXMgY29udHJvbGxlZAorICAgICAgICBieSBh
IHN0YXRpYyB2YXJpYWJsZS4gSSdsbCBtYWtlIHRoZXNlIHJ1bnRpbWUgY29uZmlndXJhYmxlIGlu
IGEgZm9sbG93CisgICAgICAgIHVwOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4MDk3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyB1c2Vk
IGZvciBsb2dnaW5nLgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QVNULmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFk
ZHJlc3NTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6dG9TdHJpbmcpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjp0b1N0cmlu
ZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQ
b2ludFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OnRvU3RyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmg6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjp0b1N0cmlu
Zyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjp0b1N0cmluZyk6IERlbGV0ZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1REdW1wZXI6OnZpc2l0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1REdW1wZXI6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1REdW1wZXI6OkluZGVudDo6SW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1REdW1wZXI6OmJ1bXBJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnRv
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpkdW1wQVNUKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OmR1bXBBU1RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6ZHVtcEFT
VEFmdGVyUGFyc2luZ0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpkdW1wQVNU
QmV0d2VlbkVhY2hQYXNzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmR1bXBB
U1RBdEVuZElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpwcmVwYXJlU2hhcmVk
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxOS0wNS0yMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIGZvbnQtb3B0aWNhbC1zaXppbmcgYXBwbGllcyB0aGUgd3Jvbmcg
dmFyaWF0aW9uIHZhbHVlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjQ1NTM5KQorKysg
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYs
NyBAQCBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvCiAKIE1vZHVsZXMv
d2ViZ3B1L0dQVUNhbnZhc0NvbnRleHQuY3BwCiBNb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUu
Y3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAKIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TGV4ZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1
bXBlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMQVNURHVt
cGVyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xBU1QuaCIKKyNp
bmNsdWRlICJXSExTTFByb2dyYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgV0hMU0wgeworCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkKK3sK
KyAgICBtX291dC5wcmludGxuKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dy
YW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQorICAgICAgICB2aXNpdChw
cm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKVtpXSk7CisgICAgaWYgKHByb2dyYW0ubmF0
aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKSkKKyAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4i
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQorICAgICAgICB2aXNpdChwcm9ncmFtLm5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOworICAgIGlmIChwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb25zKCkuc2l6ZSgpKQorICAgICAgICBtX291dC5wcmludCgiXG5cbiIpOworCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpLnNpemUo
KTsgKytpKQorICAgICAgICB2aXNpdChwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpW2ldKTsKKyAg
ICBpZiAocHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKS5zaXplKCkpCisgICAgICAgIG1fb3V0LnBy
aW50KCJcblxuIik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uc3RydWN0
dXJlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKKyAgICAgICAgdmlzaXQocHJvZ3JhbS5zdHJ1
Y3R1cmVEZWZpbml0aW9ucygpW2ldKTsKKyAgICBpZiAocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0
aW9ucygpLnNpemUoKSkKKyAgICAgICAgbV9vdXQucHJpbnQoIlxuXG4iKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgp
OyArK2kpCisgICAgICAgIHZpc2l0KHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpW2ld
KTsKKyAgICBpZiAocHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpKQorICAg
ICAgICBtX291dC5wcmludCgiXG5cbiIpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKKyAgICAgICAgdmlzaXQo
cHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pOworCisgICAgbV9vdXQucHJpbnRsbigp
OworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5
cGUpCit7CisgICAgQmFzZTo6dmlzaXQodW5uYW1lZFR5cGUpOworfQorCit2b2lkIEFTVER1bXBl
cjo6dmlzaXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKK3sKKyAgICBCYXNlOjp2aXNpdChu
YW1lZFR5cGUpOworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlv
biYgdHlwZURlZmluaXRpb24pCit7CisgICAgbV9vdXQucHJpbnQoInR5cGVkZWYgIiwgdHlwZURl
ZmluaXRpb24ubmFtZSgpLCAiID0gIik7CisgICAgdmlzaXQodHlwZURlZmluaXRpb24udHlwZSgp
KTsKKyAgICBtX291dC5wcmludGxuKCI7Iik7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCit7CisgICAgbV9v
dXQucHJpbnRsbihtX2luZGVudCwgInN0cnVjdCAiLCBzdHJ1Y3R1cmVEZWZpbml0aW9uLm5hbWUo
KSwgIiB7Iik7CisgICAgeworICAgICAgICBhdXRvIGluZGVudCA9IGJ1bXBJbmRlbnQoKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5z
dHJ1Y3R1cmVFbGVtZW50cygpKQorICAgICAgICAgICAgdmlzaXQoc3RydWN0dXJlRWxlbWVudCk7
CisgICAgfQorICAgIG1fb3V0LnByaW50bG4obV9pbmRlbnQsICJ9Iik7CisgICAgbV9vdXQucHJp
bnRsbigpOworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50
JiBzdHJ1Y3R1cmVFbGVtZW50KQoreworICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKKyAgICB2
aXNpdChzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7CisgICAgbV9vdXQucHJpbnQoIiAiLCBzdHJ1
Y3R1cmVFbGVtZW50Lm5hbWUoKSk7CisgICAgaWYgKHN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMo
KSkKKyAgICAgICAgdmlzaXQoKnN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSk7CisgICAgbV9v
dXQucHJpbnRsbigiOyIpOworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKK3sKKyAgICBtX291dC5wcmlu
dChtX2luZGVudCwgImVudW0gIik7CisgICAgdmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5
cGUoKSk7CisgICAgbV9vdXQucHJpbnQoIiB7Iik7CisKKyAgICB7CisgICAgICAgIGF1dG8gaW5k
ZW50ID0gYnVtcEluZGVudCgpOworICAgICAgICBib29sIG9uY2UgPSBmYWxzZTsKKyAgICAgICAg
Zm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVt
ZXJhdGlvbk1lbWJlcnMoKSkgeworICAgICAgICAgICAgaWYgKG9uY2UpCisgICAgICAgICAgICAg
ICAgbV9vdXQucHJpbnQoIiwgIik7CisgICAgICAgICAgICBtX291dC5wcmludGxuKCk7CisgICAg
ICAgICAgICBtX291dC5wcmludChtX2luZGVudCk7CisgICAgICAgICAgICB2aXNpdChlbnVtZXJh
dGlvbk1lbWJlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX291dC5wcmludGxuKCk7Cisg
ICAgbV9vdXQucHJpbnRsbihtX2luZGVudCwgIn0iKTsKKyAgICBtX291dC5wcmludGxuKCk7Cit9
CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJh
dGlvbk1lbWJlcikKK3sKKyAgICBtX291dC5wcmludChlbnVtZXJhdGlvbk1lbWJlci5uYW1lKCkp
OworICAgIGlmIChlbnVtZXJhdGlvbk1lbWJlci52YWx1ZSgpKSB7CisgICAgICAgIG1fb3V0LnBy
aW50KCIgPSAiKTsKKyAgICAgICAgdmlzaXQoKmVudW1lcmF0aW9uTWVtYmVyLnZhbHVlKCkpOwor
ICAgIH0KK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
JiBmdW5jdGlvbkRlZmluaXRpb24pCit7CisgICAgbV9vdXQucHJpbnQobV9pbmRlbnQpOworICAg
IHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KGZ1bmN0aW9uRGVm
aW5pdGlvbikpOworICAgIHZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKKyAgICBt
X291dC5wcmludCgiXG5cbiIpOworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQoreworICAg
IG1fb3V0LnByaW50KG1faW5kZW50KTsKKyAgICBtX291dC5wcmludCgibmF0aXZlICIpOworICAg
IHZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pKTsKKyAgICBtX291dC5wcmludGxuKCk7Cit9CisKK3ZvaWQgQVNURHVt
cGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGZ1bmN0aW9uRGVjbGFyYXRpb24p
Cit7CisgICAgdmlzaXQoZnVuY3Rpb25EZWNsYXJhdGlvbi5hdHRyaWJ1dGVCbG9jaygpKTsKKyAg
ICBpZiAoZnVuY3Rpb25EZWNsYXJhdGlvbi5lbnRyeVBvaW50VHlwZSgpKQorICAgICAgICBtX291
dC5wcmludChBU1Q6OnRvU3RyaW5nKCpmdW5jdGlvbkRlY2xhcmF0aW9uLmVudHJ5UG9pbnRUeXBl
KCkpLCAiICIpOworICAgIHZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKKyAgICBt
X291dC5wcmludCgiICIsIGZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCAiKCIpOworICAgIGJv
b2wgb25jZSA9IGZhbHNlOworICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkpIHsKKyAgICAgICAgaWYgKG9uY2UpCisgICAgICAgICAgICBt
X291dC5wcmludCgiLCAiKTsKKyAgICAgICAgb25jZSA9IHRydWU7CisgICAgICAgIHZpc2l0KHBh
cmFtZXRlcik7CisgICAgfQorICAgIG1fb3V0LnByaW50KCIpIik7CisgICAgaWYgKGZ1bmN0aW9u
RGVjbGFyYXRpb24uc2VtYW50aWMoKSkKKyAgICAgICAgdmlzaXQoKmZ1bmN0aW9uRGVjbGFyYXRp
b24uc2VtYW50aWMoKSk7CisgICAgbV9vdXQucHJpbnQoIiAiKTsKK30KKwordm9pZCBBU1REdW1w
ZXI6OnZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRp
b24pCit7CisgICAgbV9vdXQucHJpbnQobV9pbmRlbnQsICJuYXRpdmUgdHlwZWRlZiAiKTsKKyAg
ICBtX291dC5wcmludChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpKTsKKyAgICBpZiAobmF0
aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkpIHsKKyAgICAgICAgbV9v
dXQucHJpbnQoIjwiKTsKKyAgICAgICAgYm9vbCBvbmNlID0gZmFsc2U7CisgICAgICAgIGZvciAo
YXV0byYgdHlwZUFyZ3VtZW50IDogbmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMo
KSkgeworICAgICAgICAgICAgaWYgKG9uY2UpCisgICAgICAgICAgICAgICAgbV9vdXQucHJpbnQo
IiwgIik7CisgICAgICAgICAgICBvbmNlID0gdHJ1ZTsKKyAgICAgICAgICAgIHZpc2l0KHR5cGVB
cmd1bWVudCk7CisgICAgICAgIH0KKyAgICAgICAgbV9vdXQucHJpbnQoIj4iKTsKKyAgICB9Cisg
ICAgbV9vdXQucHJpbnRsbigiOyIpOworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpU
eXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQoreworICAgIG1fb3V0LnByaW50KHR5cGVSZWZl
cmVuY2UubmFtZSgpKTsKKworICAgIGlmICh0eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKS5z
aXplKCkpIHsKKyAgICAgICAgYm9vbCBvbmNlID0gZmFsc2U7CisgICAgICAgIG1fb3V0LnByaW50
KCI8Iik7CisgICAgICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZVJlZmVyZW5jZS50
eXBlQXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGlmIChvbmNlKQorICAgICAgICAgICAgICAg
IG1fb3V0LnByaW50KCIsICIpOworICAgICAgICAgICAgb25jZSA9IHRydWU7CisgICAgICAgICAg
ICB2aXNpdCh0eXBlQXJndW1lbnQpOworICAgICAgICB9CisgICAgICAgIG1fb3V0LnByaW50KCI+
Iik7CisgICAgfQorfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYg
cG9pbnRlclR5cGUpCit7CisgICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBl
Jj4ocG9pbnRlclR5cGUpKTsKKyAgICBtX291dC5wcmludCgiKiIpOworfQorCit2b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlVHlwZSkK
K3sKKyAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihhcnJheVJlZmVy
ZW5jZVR5cGUpKTsKKyAgICBtX291dC5wcmludCgiW10iKTsKK30KKwordm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCit7CisgICAgdmlzaXQoYXJyYXlUeXBl
LnR5cGUoKSk7CisgICAgbV9vdXQucHJpbnQoIlsiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwg
Il0iKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50JiB0eXBl
QXJndW1lbnQpCit7CisgICAgQmFzZTo6dmlzaXQodHlwZUFyZ3VtZW50KTsKK30KKwordm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYgcmVmZXJlbmNlVHlwZSkKK3sKKyAg
ICBtX291dC5wcmludChBU1Q6OnRvU3RyaW5nKHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkp
LCAiICIpOworICAgIHZpc2l0KHJlZmVyZW5jZVR5cGUuZWxlbWVudFR5cGUoKSk7Cit9CisKK3Zv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlNlbWFudGljJiBzZW1hbnRpYykKK3sKKyAgICBtX291
dC5wcmludCgiIDogIik7CisgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6
OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKSB7CisgICAgICAgIHZpc2l0KGJ1aWx0
SW5TZW1hbnRpYyk7CisgICAgfSwgWyZdKEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3VyY2VT
ZW1hbnRpYykgeworICAgICAgICB2aXNpdChyZXNvdXJjZVNlbWFudGljKTsKKyAgICB9LCBbJl0o
QVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmIHNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYykgeworICAgICAgICB2aXNpdChzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMpOworICAgIH0sIFsmXShBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFu
dGljKSB7CisgICAgICAgIHZpc2l0KHN0YWdlSW5PdXRTZW1hbnRpYyk7CisgICAgfSksIHNlbWFu
dGljKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9u
JiBjb25zdGFudEV4cHJlc3Npb24pCit7CisgICAgQmFzZTo6dmlzaXQoY29uc3RhbnRFeHByZXNz
aW9uKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smIGF0
dHJpYnV0ZUJsb2NrKQoreworICAgIGlmIChhdHRyaWJ1dGVCbG9jay5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fb3V0LnByaW50KCJbIik7CisgICAgZm9yIChhdXRvJiBmdW5j
dGlvbkF0dHJpYnV0ZSA6IGF0dHJpYnV0ZUJsb2NrKQorICAgICAgICB2aXNpdChmdW5jdGlvbkF0
dHJpYnV0ZSk7CisgICAgbV9vdXQucHJpbnQoIl0gIik7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKQoreworICAgIG1fb3V0
LnByaW50KGJ1aWx0SW5TZW1hbnRpYy50b1N0cmluZygpKTsKK30KKwordm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3VyY2VTZW1hbnRpYykKK3sKKyAgICBt
X291dC5wcmludChyZXNvdXJjZVNlbWFudGljLnRvU3RyaW5nKCkpOworfQorCit2b2lkIEFTVER1
bXBlcjo6dmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKQoreworICAg
IC8vIEZJWE1FOiBIYW5kbGUgdGhpcyB3aGVuIHdlIGltcGxlbWVudCBpdC4KK30KKwordm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50
aWMpCit7CisgICAgbV9vdXQucHJpbnQoImF0dHJpYnV0ZSgiLCBzdGFnZUluT3V0U2VtYW50aWMu
aW5kZXgoKSwgIikiKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6SW50ZWdlckxp
dGVyYWwmIGludGVnZXJMaXRlcmFsKQoreworICAgIG1fb3V0LnByaW50KGludGVnZXJMaXRlcmFs
LnZhbHVlKCkpOworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQoreworICAgIG1fb3V0LnByaW50KHVu
c2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKQoreworICAgIG1fb3V0LnByaW50KGZs
b2F0TGl0ZXJhbC52YWx1ZSgpKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TnVs
bExpdGVyYWwmIG51bGxMaXRlcmFsKQoreworICAgIG1fb3V0LnByaW50KCJudWxsIik7CisgICAg
dmlzaXQobnVsbExpdGVyYWwudHlwZSgpKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKQoreworICAgIGlmIChib29sZWFuTGl0
ZXJhbC52YWx1ZSgpKQorICAgICAgICBtX291dC5wcmludCgidHJ1ZSIpOworICAgIGVsc2UKKyAg
ICAgICAgbV9vdXQucHJpbnQoImZhbHNlIik7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpCit7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlJikKK3sKK30KKwordm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYpCit7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2
aXNpdChBU1Q6Ok51bGxMaXRlcmFsVHlwZSYpCit7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNp
dChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KQoreworICAgIG1fb3V0LnByaW50KGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5sZWZ0KCksICIu
IiwgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLnJpZ2h0KCkpOworfQorCit2b2lkIEFTVER1bXBl
cjo6dmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYgZnVuY3Rpb25BdHRyaWJ1dGUpCit7Cisg
ICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Ok51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSB7CisgICAgICAgIHZpc2l0
KG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7CisgICAgfSksIGZ1bmN0aW9uQXR0cmlidXRl
KTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlJiBudW1UaHJlYWRzQXR0cmlidXRlKQoreworICAgIG1fb3V0LnByaW50KCJudW10aHJl
YWRzKCIsIG51bVRocmVhZHNBdHRyaWJ1dGUud2lkdGgoKSwgIiwgIiwgbnVtVGhyZWFkc0F0dHJp
YnV0ZS5oZWlnaHQoKSwgIiwgIiwgbnVtVGhyZWFkc0F0dHJpYnV0ZS5kZXB0aCgpLCAiKSIpOwor
fQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpCbG9jayYgYmxvY2spCit7CisgICAgbV9v
dXQucHJpbnRsbigieyIpOworICAgIHsKKyAgICAgICAgYXV0byBpbmRlbnQgPSBidW1wSW5kZW50
KCk7CisgICAgICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKSB7
CisgICAgICAgICAgICBtX291dC5wcmludChtX2luZGVudCk7CisgICAgICAgICAgICB2aXNpdChz
dGF0ZW1lbnQpOworICAgICAgICAgICAgbV9vdXQucHJpbnRsbigiOyIpOworICAgICAgICB9Cisg
ICAgfQorICAgIG1fb3V0LnByaW50KG1faW5kZW50LCAifSIpOworfQorCit2b2lkIEFTVER1bXBl
cjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkKK3sKKyAgICBCYXNlOjp2aXNpdChz
dGF0ZW1lbnQpOworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpCcmVhayYpCit7Cisg
ICAgbV9vdXQucHJpbnQoImJyZWFrIik7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6
OkNvbnRpbnVlJikKK3sKKyAgICBtX291dC5wcmludCgiY29udGludWUiKTsKK30KKwordm9pZCBB
U1REdW1wZXI6OnZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCit7CisgICAgbV9vdXQu
cHJpbnQoIndoaWxlICgiKTsKKyAgICB2aXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Cisg
ICAgbV9vdXQucHJpbnQoIikiKTsKKyAgICB2aXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKK30KKwor
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKQorewor
ICAgIG1fb3V0LnByaW50KCJkbyAiKTsKKyAgICB2aXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOwor
ICAgIG1fb3V0LnByaW50KCIgd2hpbGUoIik7CisgICAgdmlzaXQoZG9XaGlsZUxvb3AuY29uZGl0
aW9uYWwoKSk7CisgICAgbV9vdXQucHJpbnQoIikiKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkKK3sKKyAgICBtX291dC5wcmludCgiZm9yICgiKTsK
KyAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KSB7CisgICAgICAg
IHZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KTsKKyAgICB9LCBbJl0oVW5pcXVl
UmVmPEFTVDo6RXhwcmVzc2lvbj4mIGV4cHJlc3Npb24pIHsKKyAgICAgICAgdmlzaXQoZXhwcmVz
c2lvbik7CisgICAgfSksIGZvckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7CisgICAgbV9vdXQucHJp
bnQoIjsgIik7CisgICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpCisgICAgICAgIHZpc2l0KCpm
b3JMb29wLmNvbmRpdGlvbigpKTsKKyAgICBtX291dC5wcmludCgiOyAiKTsKKyAgICBpZiAoZm9y
TG9vcC5pbmNyZW1lbnQoKSkKKyAgICAgICAgdmlzaXQoKmZvckxvb3AuaW5jcmVtZW50KCkpOwor
ICAgIG1fb3V0LnByaW50KCIpICIpOworICAgIHZpc2l0KGZvckxvb3AuYm9keSgpKTsKK30KKwor
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKK3sKKyAg
ICBCYXNlOjp2aXNpdChleHByZXNzaW9uKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6RG90RXhwcmVzc2lvbiYgZG90RXhwcmVzc2lvbikKK3sKKyAgICB2aXNpdChzdGF0aWNfY2Fz
dDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiY+KGRvdEV4cHJlc3Npb24pKTsKKyAgICBt
X291dC5wcmludCgiLiIsIGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpOworfQorCit2b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikKK3sK
KyAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiY+KGlu
ZGV4RXhwcmVzc2lvbikpOworICAgIG1fb3V0LnByaW50KCJbIik7CisgICAgdmlzaXQoaW5kZXhF
eHByZXNzaW9uLmluZGV4RXhwcmVzc2lvbigpKTsKKyAgICBtX291dC5wcmludCgiXSIpOworfQor
Cit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGV4
cHJlc3Npb24pCit7CisgICAgQmFzZTo6dmlzaXQoZXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgQVNU
RHVtcGVyOjp2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmIGVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQpCit7CisgICAgQmFzZTo6dmlzaXQoZWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCk7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZhbGx0aHJv
dWdoJikKK3sKKyAgICBtX291dC5wcmludCgiZmFsbHRocm91Z2giKTsKK30KKwordm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQoreworICAgIG1fb3V0
LnByaW50KCJpZiAoIik7CisgICAgdmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7Cisg
ICAgbV9vdXQucHJpbnQoIikgIik7CisgICAgdmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKKyAg
ICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkgeworICAgICAgICBtX291dC5wcmludCgiIGVs
c2UgIik7CisgICAgICAgIHZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKKyAgICB9Cit9
CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQor
eworICAgIG1fb3V0LnByaW50KCJyZXR1cm4iKTsKKyAgICBpZiAocmV0dXJuU3RhdGVtZW50LnZh
bHVlKCkpIHsKKyAgICAgICAgbV9vdXQucHJpbnQoIiAiKTsKKyAgICAgICAgdmlzaXQoKnJldHVy
blN0YXRlbWVudC52YWx1ZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChB
U1Q6OlRyYXAmKQoreworICAgIG1fb3V0LnByaW50KCJ0cmFwIik7Cit9CisKK3ZvaWQgQVNURHVt
cGVyOjp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQoreworICAg
IG1fb3V0LnByaW50KCJzd2l0Y2ggKCIpOworICAgIHZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1
ZSgpKTsKKyAgICBtX291dC5wcmludGxuKCIpIHsiKTsKKyAgICBib29sIG9uY2UgPSBmYWxzZTsK
KyAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMo
KSkgeworICAgICAgICBpZiAob25jZSkKKyAgICAgICAgICAgIG1fb3V0LnByaW50bG4oKTsKKyAg
ICAgICAgb25jZSA9IHRydWU7CisgICAgICAgIG1fb3V0LnByaW50KG1faW5kZW50KTsKKyAgICAg
ICAgdmlzaXQoc3dpdGNoQ2FzZSk7CisgICAgfQorICAgIG1fb3V0LnByaW50KCJcbiIsIG1faW5k
ZW50LCAifSIpOworCit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlN3aXRjaENhc2Um
IHN3aXRjaENhc2UpCit7CisgICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkgeworICAgICAgICBt
X291dC5wcmludCgiY2FzZSAiKTsKKyAgICAgICAgdmlzaXQoKnN3aXRjaENhc2UudmFsdWUoKSk7
CisgICAgICAgIG1fb3V0LnByaW50KCI6ICIpOworICAgIH0gZWxzZQorICAgICAgICBtX291dC5w
cmludCgiZGVmYXVsdDogIik7CisgICAgdmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKK30KKwor
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQm
IHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KQoreworICAgIEJhc2U6OnZpc2l0KHZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKK3sKKyAgICBpZiAo
dmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpIHsKKyAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVj
bGFyYXRpb24udHlwZSgpKTsKKyAgICAgICAgbV9vdXQucHJpbnQoIiAiKTsKKyAgICB9CisgICAg
bV9vdXQucHJpbnQodmFyaWFibGVEZWNsYXJhdGlvbi5uYW1lKCkpOworICAgIGlmICh2YXJpYWJs
ZURlY2xhcmF0aW9uLnNlbWFudGljKCkpCisgICAgICAgIHZpc2l0KCp2YXJpYWJsZURlY2xhcmF0
aW9uLnNlbWFudGljKCkpOworICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVy
KCkpIHsKKyAgICAgICAgbV9vdXQucHJpbnQoIiA9ICIpOworICAgICAgICB2aXNpdCgqdmFyaWFi
bGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKKyAgICB9Cit9CisKK3ZvaWQgQVNURHVtcGVy
Ojp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikK
K3sKKyAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOworICAgIG1fb3V0LnBy
aW50KCIgPSAiKTsKKyAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5yaWdodCgpKTsKK30K
Kwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNz
aW9uKQoreworICAgIG1fb3V0LnByaW50KGNhbGxFeHByZXNzaW9uLm5hbWUoKSwgIigiKTsKKyAg
ICBib29sIG9uY2UgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogY2FsbEV4cHJl
c3Npb24uYXJndW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKG9uY2UpCisgICAgICAgICAgICBtX291
dC5wcmludCgiLCAiKTsKKyAgICAgICAgb25jZSA9IHRydWU7CisgICAgICAgIHZpc2l0KGFyZ3Vt
ZW50KTsKKyAgICB9CisgICAgbV9vdXQucHJpbnQoIikiKTsKK30KKwordm9pZCBBU1REdW1wZXI6
OnZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4cHJlc3Npb24pCit7CisgICAgbV9v
dXQucHJpbnQoIigiKTsKKyAgICBib29sIG9uY2UgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIGV4
cHJlc3Npb24gOiBjb21tYUV4cHJlc3Npb24ubGlzdCgpKSB7CisgICAgICAgIGlmIChvbmNlKQor
ICAgICAgICAgICAgbV9vdXQucHJpbnQoIiwgIik7CisgICAgICAgIG9uY2UgPSB0cnVlOworICAg
ICAgICB2aXNpdChleHByZXNzaW9uKTsKKyAgICB9CisgICAgbV9vdXQucHJpbnQoIikiKTsKK30K
Kwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJl
ZmVyZW5jZUV4cHJlc3Npb24pCit7CisgICAgbV9vdXQucHJpbnQoIioiKTsKKyAgICB2aXNpdChk
ZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpKTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZp
c2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQoreworICAgIG1f
b3V0LnByaW50KCIoIik7CisgICAgdmlzaXQobG9naWNhbEV4cHJlc3Npb24ubGVmdCgpKTsKKyAg
ICBzd2l0Y2ggKGxvZ2ljYWxFeHByZXNzaW9uLnR5cGUoKSkgeworICAgIGNhc2UgQVNUOjpMb2dp
Y2FsRXhwcmVzc2lvbjo6VHlwZTo6QW5kOgorICAgICAgICBtX291dC5wcmludCgiICYmICIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6Ok9y
OgorICAgICAgICBtX291dC5wcmludCgiIHx8ICIpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgdmlzaXQobG9naWNhbEV4cHJlc3Npb24ucmlnaHQoKSk7CisgICAgbV9vdXQucHJpbnQoIiki
KTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24m
IGxvZ2ljYWxOb3RFeHByZXNzaW9uKQoreworICAgIG1fb3V0LnByaW50KCIhKCIpOworICAgIHZp
c2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7CisgICAgbV9vdXQucHJpbnQoIiki
KTsKK30KKwordm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKK3sKKyAgICBtX291dC5wcmlu
dCgiQCIpOworICAgIHZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubFZhbHVlKCkp
OworfQorCit2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24m
IG1ha2VQb2ludGVyRXhwcmVzc2lvbikKK3sKKyAgICBtX291dC5wcmludCgiJiIpOworICAgIHZp
c2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sVmFsdWUoKSk7Cit9CisKK3ZvaWQgQVNURHVtcGVy
Ojp2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24pCit7CisgICAgYXV0byBvbGRWYXJpYWJsZSA9IHJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24ub2xkVmFyaWFibGVSZWZlcmVuY2UoKTsKKyAgICBhdXRvIG5ld1ZhcmlhYmxlID0gcmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYXJpYWJsZVJlZmVyZW5jZSgpOworCisgICAgbV9v
dXQucHJpbnQoIigiKTsKKyAgICB2aXNpdChvbGRWYXJpYWJsZS5nZXQoKSk7CisgICAgbV9vdXQu
cHJpbnQoIiA9ICIpOworICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubFZhbHVl
KCkpOworICAgIG1fb3V0LnByaW50KCIsICIpOworCisgICAgdmlzaXQobmV3VmFyaWFibGUuZ2V0
KCkpOworICAgIG1fb3V0LnByaW50KCIgPSAiKTsKKyAgICB2aXNpdCgqcmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7CisgICAgbV9vdXQucHJpbnQoIiwgIik7
CisKKyAgICB2aXNpdChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxWYWx1ZSgpKTsKKyAgICBt
X291dC5wcmludCgiID0gIik7CisgICAgdmlzaXQobmV3VmFyaWFibGUuZ2V0KCkpOworICAgIG1f
b3V0LnByaW50KCIsICIpOworCisgICAgdmlzaXQoKnJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24u
cmVzdWx0RXhwcmVzc2lvbigpKTsKKyAgICBtX291dC5wcmludCgiKSIpOworfQorCit2b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24p
Cit7CisgICAgdmlzaXQodGVybmFyeUV4cHJlc3Npb24ucHJlZGljYXRlKCkpOworICAgIG1fb3V0
LnByaW50KCIgPyAiKTsKKyAgICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5RXhwcmVzc2lv
bigpKTsKKyAgICBtX291dC5wcmludCgiIDogIik7CisgICAgdmlzaXQodGVybmFyeUV4cHJlc3Np
b24uZWxzZUV4cHJlc3Npb24oKSk7Cit9CisKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5jZSkKK3sKKyAgICBpZiAodmFyaWFibGVS
ZWZlcmVuY2UubmFtZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9vdXQucHJpbnQoIiQoIiwgUmF3
UG9pbnRlcih2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKSwgIikiKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fb3V0LnByaW50KHZhcmlhYmxlUmVmZXJlbmNlLm5hbWUoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdITFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNU
RHVtcGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xBU1REdW1wZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgIldITFNMVmlzaXRvci5oIgorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBBU1RE
dW1wZXIgOiBWaXNpdG9yIHsKKyAgICB1c2luZyBCYXNlID0gVmlzaXRvcjsKK3B1YmxpYzoKKyAg
ICB2b2lkIHZpc2l0KFByb2dyYW0mKSBvdmVycmlkZTsKKworICAgIFN0cmluZyB0b1N0cmluZygp
IHsgcmV0dXJuIG1fb3V0LnRvU3RyaW5nKCk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHZpc2l0
KEFTVDo6VW5uYW1lZFR5cGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6TmFtZWRU
eXBlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJikgb3Zl
cnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7
CisgICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpIG92ZXJyaWRlOworICAg
IHZvaWQgdmlzaXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpIG92ZXJyaWRlOworICAg
IHZvaWQgdmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNp
dChBU1Q6OlBvaW50ZXJUeXBlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYpIG92ZXJy
aWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJikgb3ZlcnJpZGU7CisgICAg
dm9pZCB2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQo
QVNUOjpSZWZlcmVuY2VUeXBlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlNlbWFu
dGljJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYp
IG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYpIG92ZXJyaWRl
OworICAgIHZvaWQgdmlzaXQoQVNUOjpCdWlsdEluU2VtYW50aWMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlz
aXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2
aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6
RmxvYXRMaXRlcmFsJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6Ok51bGxMaXRlcmFs
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJikgb3ZlcnJpZGU7CisgICAg
dm9pZCB2aXNpdChBU1Q6Ok51bGxMaXRlcmFsVHlwZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlz
aXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZp
c2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFT
VDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNp
dChBU1Q6OkJsb2NrJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudCYp
IG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpIG92ZXJyaWRlOworICAgIHZv
aWQgdmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpE
b1doaWxlTG9vcCYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJikg
b3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKSBvdmVycmlkZTsK
KyAgICB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB2aXNpdChBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYpIG92ZXJyaWRlOworICAgIHZv
aWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNp
dChBU1Q6OkZvckxvb3AmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1l
bnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaENhc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0
KEFTVDo6U3dpdGNoU3RhdGVtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlRy
YXAmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNT
dGF0ZW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJikgb3Zl
cnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mKSBvdmVycmlkZTsK
KyAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBvdmVycmlkZTsKKyAgICB2b2lk
IHZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChB
U1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNU
OjpMb2dpY2FsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpMb2dp
Y2FsTm90RXhwcmVzc2lvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpNYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6Ok1h
a2VQb2ludGVyRXhwcmVzc2lvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlRl
cm5hcnlFeHByZXNzaW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxl
UmVmZXJlbmNlJikgb3ZlcnJpZGU7CisKKyAgICBzdHJ1Y3QgSW5kZW50IHsKKyAgICAgICAgSW5k
ZW50KEFTVER1bXBlciYgZHVtcGVyKQorICAgICAgICAgICAgOiBtX3Njb3BlKGR1bXBlci5tX2lu
ZGVudCwgZHVtcGVyLm1faW5kZW50ICsgIiAgICIpCisgICAgICAgIHsgfQorICAgICAgICBTZXRG
b3JTY29wZTxTdHJpbmc+IG1fc2NvcGU7CisgICAgfTsKKworICAgIEluZGVudCBidW1wSW5kZW50
KCkgeyByZXR1cm4gSW5kZW50KCp0aGlzKTsgfQorCisgICAgZnJpZW5kIHN0cnVjdCBJbmRlbnQ7
CisKKyAgICBTdHJpbmdQcmludFN0cmVhbSBtX291dDsKKyAgICBTdHJpbmcgbV9pbmRlbnQ7Cit9
OworCitzdGF0aWMgQUxXQVlTX0lOTElORSBTdHJpbmcgdG9TdHJpbmcoUHJvZ3JhbSYgcHJvZ3Jh
bSkKK3sKKyAgICBBU1REdW1wZXIgZHVtcGVyOworICAgIGR1bXBlci52aXNpdChwcm9ncmFtKTsK
KyAgICByZXR1cm4gZHVtcGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgZHVtcEFTVChQcm9ncmFtJiBwcm9ncmFtKQoreworICAgIGRhdGFMb2dMbih0b1N0cmlu
Zyhwcm9ncmFtKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCShyZXZpc2lv
biAyNDU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxOCw2ICs5MTgsNyBAQCBhdXRvIFBhcnNlcjo6
cGFyc2VFbnVtZXJhdGlvbkRlZmluaXRpb24oCiAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEVy
cm9yPihmaXJzdEVudW1lcmF0aW9uTWVtYmVyLmVycm9yKCkpOwogCiAgICAgQVNUOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24gcmVzdWx0KFdURk1vdmUoKm9yaWdpbiksIG5hbWUtPnN0cmluZ1ZpZXcu
dG9TdHJpbmcoKSwgV1RGTW92ZSgqdHlwZSkpOworCiAgICAgYXV0byBzdWNjZXNzID0gcmVzdWx0
LmFkZChXVEZNb3ZlKCpmaXJzdEVudW1lcmF0aW9uTWVtYmVyKSk7CiAgICAgaWYgKCFzdWNjZXNz
KQogICAgICAgICByZXR1cm4gZmFpbCgiQ2Fubm90IGFkZCBlbnVtZXJhdGlvbiBtZW1iZXIiX3N0
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBh
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJlcGFyZS5jcHAJKHJldmlzaW9uIDI0NTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJXSExTTEFTVER1
bXBlci5oIgogI2luY2x1ZGUgIldITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJXSExTTENoZWNrZXIuaCIKICNpbmNsdWRlICJXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2Vy
LmgiCkBAIC01Miw2ICs1Myw0NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBX
SExTTCB7CiAKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgPSBm
YWxzZTsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQWZ0ZXJQYXJzaW5nID0gdHJ1ZTsK
K3N0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wQVNUQXRFbmQgPSBmYWxzZTsKKworc3RhdGljIGJv
b2wgZHVtcEFTVElmTmVlZGVkKGJvb2wgc2hvdWxkRHVtcCwgUHJvZ3JhbSYgcHJvZ3JhbSwgY29u
c3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBpZiAoc2hvdWxkRHVtcCkgeworICAgICAgICBkYXRh
TG9nTG4obWVzc2FnZSk7CisgICAgICAgIGR1bXBBU1QocHJvZ3JhbSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgZHVt
cEFTVEFmdGVyUGFyc2luZ0lmTmVlZGVkKFByb2dyYW0mIHByb2dyYW0pCit7CisgICAgcmV0dXJu
IGR1bXBBU1RJZk5lZWRlZChkdW1wQVNUQWZ0ZXJQYXJzaW5nLCBwcm9ncmFtLCAiQVNUIGFmdGVy
IHBhcnNpbmciKTsKK30KKworc3RhdGljIGJvb2wgZHVtcEFTVEJldHdlZW5FYWNoUGFzc0lmTmVl
ZGVkKFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgcmV0dXJu
IGR1bXBBU1RJZk5lZWRlZChkdW1wQVNUQmVmb3JlRWFjaFBhc3MsIHByb2dyYW0sIG1lc3NhZ2Up
OworfQorCitzdGF0aWMgYm9vbCBkdW1wQVNUQXRFbmRJZk5lZWRlZChQcm9ncmFtJiBwcm9ncmFt
KQoreworICAgIHJldHVybiBkdW1wQVNUSWZOZWVkZWQoZHVtcEFTVEF0RW5kLCBwcm9ncmFtLCAi
QVNUIGF0IGVuZCIpOworfQorCisjZGVmaW5lIFJVTl9QQVNTKHBhc3MsIC4uLikgXAorICAgIGRv
IHsgXAorICAgICAgICBkdW1wQVNUQmV0d2VlbkVhY2hQYXNzSWZOZWVkZWQocHJvZ3JhbSwgIkFT
VCBiZWZvcmUgIiAjIHBhc3MpOyBcCisgICAgICAgIGlmICghcGFzcyhfX1ZBX0FSR1NfXykpIFwK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7IFwKKyAgICB9IHdoaWxlICgwKQorICAg
IAorCiBzdGF0aWMgT3B0aW9uYWw8UHJvZ3JhbT4gcHJlcGFyZVNoYXJlZChTdHJpbmcmIHdobHNs
U291cmNlKQogewogICAgIFByb2dyYW0gcHJvZ3JhbTsKQEAgLTYxLDM1ICsxMDAsMzEgQEAgc3Rh
dGljIE9wdGlvbmFsPFByb2dyYW0+IHByZXBhcmVTaGFyZWQoUwogICAgIEFTU0VSVF9VTlVTRUQo
ZmFpbHVyZSwgIWZhaWx1cmUpOwogICAgIGlmIChwYXJzZXIucGFyc2UocHJvZ3JhbSwgd2hsc2xT
b3VyY2UsIFBhcnNlcjo6TW9kZTo6VXNlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWR1bXBBU1RCZXR3ZWVuRWFjaFBhc3NJZk5lZWRlZChwcm9ncmFtLCAiQVNU
IGFmdGVyIHBhcnNpbmciKSkKKyAgICAgICAgZHVtcEFTVEFmdGVyUGFyc2luZ0lmTmVlZGVkKHBy
b2dyYW0pOworCiAgICAgTmFtZVJlc29sdmVyIG5hbWVSZXNvbHZlcihwcm9ncmFtLm5hbWVDb250
ZXh0KCkpOwotICAgIGlmICghcmVzb2x2ZU5hbWVzSW5UeXBlcyhwcm9ncmFtLCBuYW1lUmVzb2x2
ZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGlmICghY2hlY2tSZWN1cnNp
dmVUeXBlcyhwcm9ncmFtKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAo
IXN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMocHJvZ3JhbSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMocHJv
Z3JhbSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFzeW50aGVzaXpl
QXJyYXlPcGVyYXRvckxlbmd0aChwcm9ncmFtKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICBpZiAoIXN5bnRoZXNpemVDb25zdHJ1Y3RvcnMocHJvZ3JhbSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFyZXNvbHZlTmFtZXNJbkZ1bmN0aW9ucyhwcm9n
cmFtLCBuYW1lUmVzb2x2ZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGlm
ICghY2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMocHJvZ3JhbSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgUlVOX1BBU1MocmVzb2x2ZU5hbWVzSW5UeXBlcywgcHJvZ3JhbSwgbmFt
ZVJlc29sdmVyKTsKKyAgICBSVU5fUEFTUyhjaGVja1JlY3Vyc2l2ZVR5cGVzLCBwcm9ncmFtKTsK
KyAgICBSVU5fUEFTUyhzeW50aGVzaXplU3RydWN0dXJlQWNjZXNzb3JzLCBwcm9ncmFtKTsKKyAg
ICBSVU5fUEFTUyhzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMsIHByb2dyYW0pOworICAg
IFJVTl9QQVNTKHN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoLCBwcm9ncmFtKTsKKyAgICBS
VU5fUEFTUyhzeW50aGVzaXplQ29uc3RydWN0b3JzLCBwcm9ncmFtKTsKKyAgICBSVU5fUEFTUyhy
ZXNvbHZlTmFtZXNJbkZ1bmN0aW9ucywgcHJvZ3JhbSwgbmFtZVJlc29sdmVyKTsKKyAgICBSVU5f
UEFTUyhjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucywgcHJvZ3JhbSk7CisKKyAgICBSVU5fUEFTUyhj
aGVjaywgcHJvZ3JhbSk7CiAKLSAgICBpZiAoIWNoZWNrKHByb2dyYW0pKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIGNoZWNrTGl0ZXJhbFR5cGVzKHByb2dyYW0pOwogICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1Nzg4IFJl
c29sdmUgcHJvcGVydGllcyBoZXJlCiAgICAgZmluZEhpZ2hab21iaWVzKHByb2dyYW0pOwotICAg
IGlmICghY2hlY2tTdGF0ZW1lbnRCZWhhdmlvcihwcm9ncmFtKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICBpZiAoIWNoZWNrUmVjdXJzaW9uKHByb2dyYW0pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGlmICghY2hlY2tGdW5jdGlvblN0YWdlcyhwcm9ncmFt
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBSVU5fUEFTUyhjaGVja1N0YXRl
bWVudEJlaGF2aW9yLCBwcm9ncmFtKTsKKyAgICBSVU5fUEFTUyhjaGVja1JlY3Vyc2lvbiwgcHJv
Z3JhbSk7CisgICAgUlVOX1BBU1MoY2hlY2tGdW5jdGlvblN0YWdlcywgcHJvZ3JhbSk7CisKKyAg
ICBkdW1wQVNUQXRFbmRJZk5lZWRlZChwcm9ncmFtKTsKKwogICAgIHJldHVybiBwcm9ncmFtOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMVmlzaXRvci5jcHAJKHJldmlzaW9uIDI0NTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDczICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaCIKLSNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgotI2luY2x1ZGUg
IldITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRlICJXSExTTEJhc2VGdW5jdGlv
bkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCi0jaW5jbHVkZSAi
V0hMU0xCbG9jay5oIgotI2luY2x1ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIKLSNpbmNsdWRl
ICJXSExTTEJyZWFrLmgiCi0jaW5jbHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKLSNpbmNs
dWRlICJXSExTTENhbGxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb21tYUV4cHJlc3Np
b24uaCIKLSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldI
TFNMQ29udGludWUuaCIKLSNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgot
I2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKLSNpbmNsdWRlICJXSExTTERvdEV4cHJlc3Np
b24uaCIKLSNpbmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKLSNp
bmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMRW51
bWVyYXRpb25NZW1iZXIuaCIKLSNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bC5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMRmFsbHRo
cm91Z2guaCIKLSNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNM
Rm9yTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCIKLSNpbmNsdWRl
ICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVm
aW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMSWZTdGF0ZW1lbnQuaCIKLSNpbmNsdWRlICJXSExT
TEluZGV4RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMSW50ZWdlckxpdGVyYWwuaCIKLSNp
bmNsdWRlICJXSExTTExvZ2ljYWxFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xMb2dpY2Fs
Tm90RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbi5oIgotI2luY2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgiCi0jaW5jbHVk
ZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xOYXRp
dmVUeXBlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJXSExTTE5vZGUuaCIKLSNpbmNsdWRlICJX
SExTTE51bGxMaXRlcmFsLmgiCi0jaW5jbHVkZSAiV0hMU0xOdW1UaHJlYWRzRnVuY3Rpb25BdHRy
aWJ1dGUuaCIKLSNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCi0jaW5jbHVkZSAiV0hMU0xQ
cm9ncmFtLmgiCi0jaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIKLSNp
bmNsdWRlICJXSExTTFF1YWxpZmllci5oIgotI2luY2x1ZGUgIldITFNMUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlwZS5oIgotI2luY2x1ZGUg
IldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMUmV0dXJuLmgiCi0jaW5j
bHVkZSAiV0hMU0xTZW1hbnRpYy5oIgotI2luY2x1ZGUgIldITFNMU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljLmgiCi0jaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKLSNp
bmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5p
dGlvbi5oIgotI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5oIgotI2luY2x1ZGUgIldI
TFNMU3dpdGNoQ2FzZS5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCi0jaW5j
bHVkZSAiV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oIgotI2luY2x1ZGUgIldITFNMVHJhcC5oIgot
I2luY2x1ZGUgIldITFNMVHlwZS5oIgotI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCi0j
aW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgotI2luY2x1ZGUgIldITFNMVHlwZVJlZmVy
ZW5jZS5oIgotI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgotI2luY2x1
ZGUgIldITFNMVmFsdWUuaCIKLSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIK
LSNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgiCi0jaW5jbHVk
ZSAiV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgi
CisjaW5jbHVkZSAiV0hMU0xBU1QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1Qu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBU1QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNM
QWRkcmVzc1NwYWNlLmgiCisjaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKKyNp
bmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgorI2luY2x1ZGUgIldITFNMQXNzaWdubWVudEV4cHJl
c3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xCbG9jay5oIgorI2luY2x1
ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTEJyZWFrLmgiCisjaW5j
bHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTENhbGxFeHByZXNz
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xDb21tYUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TENvbnN0YW50RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQ29udGludWUuaCIKKyNpbmNs
dWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMRG9XaGls
ZUxvb3AuaCIKKyNpbmNsdWRlICJXSExTTERvdEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTEVudHJ5UG9p
bnRUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCIKKyNpbmNs
dWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyLmgiCisjaW5jbHVkZSAiV0hMU0xFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Npb24uaCIKKyNpbmNsdWRl
ICJXSExTTEZhbGx0aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hMU0xGbG9hdExpdGVyYWwuaCIKKyNp
bmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCIKKyNpbmNsdWRlICJXSExTTEZvckxvb3Au
aCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xG
dW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24u
aCIKKyNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xJbmRleEV4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEludGVnZXJMaXRlcmFsLmgiCisjaW5jbHVkZSAi
V0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIKKyNpbmNsdWRlICJXSExTTExvZ2ljYWxFeHByZXNz
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTWFr
ZVBvaW50ZXJFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xOYW1lZFR5cGUuaCIKKyNpbmNs
dWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUg
IldITFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTE51bGxMaXRlcmFsVHlwZS5oIgor
I2luY2x1ZGUgIldITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAi
V0hMU0xQb2ludGVyVHlwZS5oIgorI2luY2x1ZGUgIldITFNMUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xRdWFsaWZpZXIuaCIKKyNpbmNsdWRlICJXSExTTFJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTFJlZmVyZW5jZVR5cGUuaCIK
KyNpbmNsdWRlICJXSExTTFJlc29sdmFibGVUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xSZXNvdXJj
ZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xSZXR1cm4uaCIKKyNpbmNsdWRlICJXSExTTFNl
bWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMu
aCIKKyNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNM
U3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmgiCisjaW5j
bHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xTd2l0Y2hDYXNl
LmgiCisjaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFRl
cm5hcnlFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUcmFwLmgiCisjaW5jbHVkZSAiV0hM
U0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNpbmNsdWRlICJXSExT
TFR5cGVEZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgorI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCIK
KyNpbmNsdWRlICJXSExTTFZhbHVlLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oIgor
I2luY2x1ZGUgIldITFNMVmFyaWFibGVSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTFdoaWxl
TG9vcC5oIgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oCShyZXZpc2lvbiAy
NDU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
ZGRyZXNzU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMjEgQEAgZW51bSBjbGFz
cyBBZGRyZXNzU3BhY2UgOiB1aW50OF90IHsKICAgICBUaHJlYWQKIH07CiAKK3N0YXRpYyBBTFdB
WVNfSU5MSU5FIFN0cmluZyB0b1N0cmluZyhBZGRyZXNzU3BhY2UgYWRkcmVzc1NwYWNlKQorewor
ICAgIHN3aXRjaCAoYWRkcmVzc1NwYWNlKSB7CisgICAgY2FzZSBBZGRyZXNzU3BhY2U6OkNvbnN0
YW50OgorICAgICAgICByZXR1cm4gImNvbnN0YW50Il9zdHI7CisgICAgY2FzZSBBZGRyZXNzU3Bh
Y2U6OkRldmljZToKKyAgICAgICAgcmV0dXJuICJkZXZpY2UiX3N0cjsKKyAgICBjYXNlIEFkZHJl
c3NTcGFjZTo6VGhyZWFkZ3JvdXA6CisgICAgICAgIHJldHVybiAidGhyZWFkZ3JvdXAiX3N0cjsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlQoYWRkcmVzc1NwYWNlID09IEFkZHJlc3NTcGFj
ZTo6VGhyZWFkKTsKKyAgICAgICAgcmV0dXJuICJ0aHJlYWQiX3N0cjsKKyAgICB9Cit9CisKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QnVpbHRJblNlbWFudGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmgJKHJldmlzaW9uIDI0NTUzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5T
ZW1hbnRpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw0MCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAKKyAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7CisgICAgICAg
IGNhc2UgVmFyaWFibGU6OlNWSW5zdGFuY2VJRDoKKyAgICAgICAgICAgIHJldHVybiAiU1ZJbnN0
YW5jZUlEIjsKKyAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZWZXJ0ZXhJRDoKKyAgICAgICAgICAg
IHJldHVybiAiU1ZWZXJ0ZXhJRCI7CisgICAgICAgIGNhc2UgVmFyaWFibGU6OlBTaXplOgorICAg
ICAgICAgICAgcmV0dXJuICJQU2l6ZSI7CisgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWUG9zaXRp
b246CisgICAgICAgICAgICByZXR1cm4gIlNWUG9zaXRpb24iOworICAgICAgICBjYXNlIFZhcmlh
YmxlOjpTVklzRnJvbnRGYWNlOgorICAgICAgICAgICAgcmV0dXJuICJTVklzRnJvbnRGYWNlIjsK
KyAgICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZTYW1wbGVJbmRleDoKKyAgICAgICAgICAgIHJldHVy
biAiU1ZTYW1wbGVJbmRleCI7CisgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWSW5uZXJDb3ZlcmFn
ZToKKyAgICAgICAgICAgIHJldHVybiAiU1ZJbm5lckNvdmVyYWdlIjsKKyAgICAgICAgY2FzZSBW
YXJpYWJsZTo6U1ZUYXJnZXQ6CisgICAgICAgICAgICByZXR1cm4gIlNWVGFyZ2V0IjsKKyAgICAg
ICAgY2FzZSBWYXJpYWJsZTo6U1ZEZXB0aDoKKyAgICAgICAgICAgIHJldHVybiAiU1ZEZXB0aCI7
CisgICAgICAgIGNhc2UgVmFyaWFibGU6OlNWQ292ZXJhZ2U6CisgICAgICAgICAgICByZXR1cm4g
IlNWQ292ZXJhZ2UiOworICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkRpc3BhdGNoVGhyZWFkSUQ6
CisgICAgICAgICAgICByZXR1cm4gIlNWRGlzcGF0Y2hUaHJlYWRJRCI7CisgICAgICAgIGNhc2Ug
VmFyaWFibGU6OlNWR3JvdXBJRDoKKyAgICAgICAgICAgIHJldHVybiAiU1ZHcm91cElEIjsKKyAg
ICAgICAgY2FzZSBWYXJpYWJsZTo6U1ZHcm91cEluZGV4OgorICAgICAgICAgICAgcmV0dXJuICJT
Vkdyb3VwSW5kZXgiOworICAgICAgICBjYXNlIFZhcmlhYmxlOjpTVkdyb3VwVGhyZWFkSUQ6Cisg
ICAgICAgICAgICByZXR1cm4gIlNWR3JvdXBUaHJlYWRJRCI7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRy
aW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJ
dGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9p
bnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBl
LmgJKHJldmlzaW9uIDI0NTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEVudHJ5UG9pbnRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDE4IEBAIGVudW0gY2xhc3MgRW50cnlQb2ludFR5cGUgOiB1aW50OF90IHsKICAgICAvLyBGSVhN
RTogQWRkIGFuIGVudHJ5IHBvaW50IHR5cGUgZm9yIHRlc3RpbmcKIH07CiAKK3N0YXRpYyBBTFdB
WVNfSU5MSU5FIFN0cmluZyB0b1N0cmluZyhFbnRyeVBvaW50VHlwZSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OlZlcnRleDoKKyAgICAgICAg
cmV0dXJuICJ2ZXJ0ZXgiOworICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgorICAg
ICAgICByZXR1cm4gImZyYWdtZW50IjsKKyAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpDb21wdXRl
OgorICAgICAgICByZXR1cm4gImNvbXB1dGUiOworICAgIH0KK30KKwogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRl
ZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAkocmV2aXNpb24gMjQ1NTM5KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRp
b25EZWZpbml0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDkgQEAgcHVibGljOgog
CiAgICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCiAgICAgewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwgc3RkOjptYWtlX3Vu
aXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7Ci0gICAgICAgIHJldHVy
biAhcmVzdWx0LmlzTmV3RW50cnk7CisgICAgICAgIFN0cmluZyBuYW1lID0gbWVtYmVyLm5hbWUo
KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKFdURk1vdmUobmFtZSksIHN0
ZDo6bWFrZV91bmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOworICAg
ICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiAgICAgfQogCiAgICAgRW51bWVyYXRpb25N
ZW1iZXIqIG1lbWJlckJ5TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
UmVzb3VyY2VTZW1hbnRpYy5oCShyZXZpc2lvbiAyNDU1MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDYgKzU4LDIwIEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZVNlbWFudGljKGNv
bnN0IFJlc291cmNlU2VtYW50aWMmKSA9IGRlbGV0ZTsKICAgICBSZXNvdXJjZVNlbWFudGljKFJl
c291cmNlU2VtYW50aWMmJikgPSBkZWZhdWx0OwogCisgICAgU3RyaW5nIHRvU3RyaW5nKCkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2UgTW9kZTo6VW5vcmRl
cmVkQWNjZXNzVmlldzoKKyAgICAgICAgICAgIHJldHVybiAiVW5vcmRlcmVkQWNjZXNzVmlldyI7
CisgICAgICAgIGNhc2UgTW9kZTo6VGV4dHVyZToKKyAgICAgICAgICAgIHJldHVybiAiVGV4dHVy
ZSI7CisgICAgICAgIGNhc2UgTW9kZTo6QnVmZmVyOgorICAgICAgICAgICAgcmV0dXJuICJCdWZm
ZXIiOworICAgICAgICBjYXNlIE1vZGU6OlNhbXBsZXI6CisgICAgICAgICAgICByZXR1cm4gIlNh
bXBsZXIiOworICAgICAgICB9CisgICAgfQorCiAgICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RlOyB9CiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4
OyB9CiAgICAgdW5zaWduZWQgc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCShyZXZpc2lvbiAyNDU1MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4MCwyMSArMzgwLDYgQEAgU3RyaW5nIFR5cGVOYW1lcjo6bWV0YWxUeXBl
RGVjbGFyYXRpb25zKAogICAgIHJldHVybiBtZXRhbFR5cGVEZWNsYXJhdGlvbldyaXRlci50b1N0
cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5nIHRvU3RyaW5nKEFTVDo6QWRkcmVzc1NwYWNlIGFk
ZHJlc3NTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGFkZHJlc3NTcGFjZSkgewotICAgIGNhc2UgQVNU
OjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50OgotICAgICAgICByZXR1cm4gImNvbnN0YW50Il9zdHI7
Ci0gICAgY2FzZSBBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlOgotICAgICAgICByZXR1cm4gImRl
dmljZSJfc3RyOwotICAgIGNhc2UgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZGdyb3VwOgotICAg
ICAgICByZXR1cm4gInRocmVhZGdyb3VwIl9zdHI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUKGFkZHJlc3NTcGFjZSA9PSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkKTsKLSAgICAgICAg
cmV0dXJuICJ0aHJlYWQiX3N0cjsKLSAgICB9Ci19Ci0KIHZvaWQgVHlwZU5hbWVyOjplbWl0VW5u
YW1lZFR5cGVEZWZpbml0aW9uKEJhc2VUeXBlTmFtZU5vZGUmIGJhc2VUeXBlTmFtZU5vZGUsIEhh
c2hTZXQ8QVNUOjpOYW1lZFR5cGUqPiYgZW1pdHRlZE5hbWVkVHlwZXMsIEhhc2hTZXQ8QmFzZVR5
cGVOYW1lTm9kZSo+JiBlbWl0dGVkVW5uYW1lZFR5cGVzLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyKQogewogICAgIGlmIChlbWl0dGVkVW5uYW1lZFR5cGVzLmNvbnRhaW5zKCZiYXNlVHlw
ZU5hbWVOb2RlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0NTUzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODMxNCw2
ICs4MzE0LDcgQEAKIAkJNTFGQjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNp
b25TdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
bnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFGQjY3REExQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHls
ZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMxRTVBMUM0RjE1NjEw
MDMzRjgwMiAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyMTU4NjJDMjI5Mzc3QjcwMDU5MjVFRiAv
KiBXSExTTEFTVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFTVC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJl
c2VudGF0aW9uQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkQx
QzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE2OTk3LDYgKzE2OTk4LDcgQEAKIAkJMUNBMEMyRjYyMUVFREFEMjAwQTExODYwIC8qIEFTVCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTIxNTg2MkMy
MjkzNzdCNzAwNTkyNUVGIC8qIFdITFNMQVNULmggKi8sCiAJCQkJMUM4NDBCOTAyMUVDMzBGOTAw
RDA1MDBEIC8qIFdITFNMQWRkcmVzc1NwYWNlLmggKi8sCiAJCQkJQzIxQkY3MjUyMUNEODlFMjAw
MjI3OTc5IC8qIFdITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmggKi8sCiAJCQkJQzIxQkY3MDkyMUNE
ODlDQTAwMjI3OTc5IC8qIFdITFNMQXJyYXlUeXBlLmggKi8sCkluZGV4OiBMYXlvdXRUZXN0cy93
ZWJncHUvd2hsc2wuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wu
aHRtbAkocmV2aXNpb24gMjQ1NTM5KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTYsMTIgKzYsMTQgQEAKIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgogPHNjcmlwdD4KIGNvbnN0IHNoYWRlclNv
dXJjZSA9IGAKLXZlcnRleCBmbG9hdDQgdmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0
dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7Ci0gICAg
cmV0dXJuIHBvc2l0aW9uOworZW51bSBGb28geworICAgIEJhciwKKyAgICBCYXogPSA0MgogfQog
Ci1mcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9z
aXRpb24pIDogU1ZfVGFyZ2V0IDAgewotICAgIHJldHVybiBwb3NpdGlvbjsKK0ZvbyBmb28oKSB7
CisgICAgRm9vIGZvbyA9IEZvby5CYXI7CisgICAgcmV0dXJuIEZvby5CYXo7CiB9CiBgOwogYXN5
bmMgZnVuY3Rpb24gc3RhcnQoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370380</attachid>
            <date>2019-05-21 22:00:15 -0700</date>
            <delta_ts>2019-05-22 16:43:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>11620</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTYxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE5LTA1LTIxICBTYWFtIGJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFdITFNMOiBmaXggZW51bSBwYXJz
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgw
ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGZpeGVzIHR3byBidWdzOgorICAgICAgICAKKyAgICAgICAgMS4gV2Ugd2VyZSB1c2luZyBhIFN0
cmluZyBieSByZWZlcmVuY2UgYWZ0ZXIgbW92aW5nIHRoZSB1bmRlcmx5aW5nIG93bmVyIG9mCisg
ICAgICAgIHRoZSBzdHJpbmcuIFRoaXMgd291bGQgbGVhZCB0byB0aGUgU3RyaW5nIGJlY29taW5n
IHRoZSBlbXB0eSB2YWx1ZSwgYW5kCisgICAgICAgIGNyYXNoaW5nIHdoZW4gdXNlZCBhcyBhIGtl
eSBpbiBhIGhhc2ggbWFwLgorICAgICAgICAyLiBXZSB3ZXJlIGluY29ycmVjdGx5IHByb2R1Y2lu
ZyBhIHN5bnRheCBlcnJvciBmb3IgZW51bSBkZWNsYXJhdGlvbnMgYnkKKyAgICAgICAgc2F5aW5n
IGl0J3MgaW52YWxpZCBpZiBhbiBlbnVtIHZhbHVlIHdhcyBhZGRlZCB0byBhIGhhc2ggbWFwIGZv
ciB0aGUgZmlyc3QKKyAgICAgICAgdGltZS4gVGhpcyBsb2dpYyBzaG91bGQgYmUgbmVnYXRlZC4g
V2UgbmVlZCB0byBlcnJvciB3aGVuIGl0J3MgYWRkZWQgZm9yCisgICAgICAgIHRoZSBzZWNvbmQg
dGltZSBhbmQgb253YXJkcy4KKworICAgICAgICBUZXN0OiB3ZWJncHUvd2hsc2wtZG9udC1jcmFz
aC1wYXJzaW5nLWVudW0uaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNULmg6IFJlcGxhY2VkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjphZGQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcDogUmVwbGFjZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNURHVtcGVyOjp2aXNpdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xBU1REdW1wZXIuaDogUmVwbGFjZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcmVwYXJlLmNwcDoKKwogMjAxOS0wNS0yMSAgU2FhbSBiYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXSExTTDogQWRkIGFuIEFTVCBkdW1wZXIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFT
VER1bXBlci5jcHAJKHJldmlzaW9uIDI0NTYxMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMQVNURHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDEw
ICsxMTEsNyBAQCB2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtCiAKIHZv
aWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRp
b25EZWZpbml0aW9uKQogewotICAgIC8vIEZJWE1FOiBUZXN0IHRoaXMgb25jZSB3ZSBwYXJzZSBl
bnVtczoKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
MDg3Ci0KLSAgICBtX291dC5wcmludGxuKG1faW5kZW50LCAiZW51bSAiKTsKKyAgICBtX291dC5w
cmludChtX2luZGVudCwgImVudW0gIik7CiAgICAgdmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9u
LnR5cGUoKSk7CiAgICAgbV9vdXQucHJpbnQoIiB7Iik7CiAKQEAgLTMzOSwxMCArMzM2LDkgQEAg
dm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6TnVsbExpdGVyYWxUeQogewogfQogCi12b2lkIEFT
VER1bXBlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKQordm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwpCiB7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIHdoZW4gd2UgY2FuIHBh
cnNlIGVudW1zOgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTgwODcKKyAgICBtX291dC5wcmludChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwubGVmdCgp
LCAiLiIsIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5yaWdodCgpKTsKIH0KIAogdm9pZCBBU1RE
dW1wZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9uQXR0cmlidXRlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFByZXBhcmUuY3BwCShyZXZpc2lvbiAyNDU2MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBXSExTTCB7CiAKIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBkdW1wQVNUQmVmb3JlRWFjaFBhc3MgPSBmYWxzZTsKLXN0YXRpYyBjb25z
dGV4cHIgYm9vbCBkdW1wQVNUQWZ0ZXJQYXJzaW5nID0gZmFsc2U7CitzdGF0aWMgY29uc3RleHBy
IGJvb2wgZHVtcEFTVEFmdGVyUGFyc2luZyA9IHRydWU7CiBzdGF0aWMgY29uc3RleHByIGJvb2wg
ZHVtcEFTVEF0RW5kID0gZmFsc2U7CiAKIHN0YXRpYyBib29sIGR1bXBBU1RJZk5lZWRlZChib29s
IHNob3VsZER1bXAsIFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlv
bkRlZmluaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAkocmV2aXNpb24gMjQ1NjEz
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCiAgICAgewotICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwgc3RkOjptYWtl
X3VuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7Ci0gICAgICAgIHJl
dHVybiAhcmVzdWx0LmlzTmV3RW50cnk7CisgICAgICAgIFN0cmluZyBuYW1lID0gbWVtYmVyLm5h
bWUoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKFdURk1vdmUobmFtZSks
IHN0ZDo6bWFrZV91bmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiAgICAgfQogCiAgICAgRW51bWVyYXRp
b25NZW1iZXIqIG1lbWJlckJ5TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNDU2MTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxOS0wNS0yMSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KKworICAgICAgICBXSExTTDogZml4IGVudW0gcGFyc2luZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDg3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJncHUvd2hsc2wtZG9udC1jcmFzaC1w
YXJzaW5nLWVudW0tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNs
LWRvbnQtY3Jhc2gtcGFyc2luZy1lbnVtLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA1LTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgZm9udC1vcHRp
Y2FsLXNpemluZyBhcHBsaWVzIHRoZSB3cm9uZyB2YXJpYXRpb24gdmFsdWUKSW5kZXg6IExheW91
dFRlc3RzL3dlYmdwdS93aGxzbC1kb250LWNyYXNoLXBhcnNpbmctZW51bS1leHBlY3RlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1kb250LWNyYXNoLXBhcnNp
bmctZW51bS1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdw
dS93aGxzbC1kb250LWNyYXNoLXBhcnNpbmctZW51bS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwv
aGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQw
MCI+PC9jYW52YXM+Cis8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgY29u
c3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworICAgIGNvbnN0
IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjb250ZXh0LmZpbGxTdHls
ZSA9ICJibHVlIjsKKyAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIDQwMCwgNDAwKTsKKyAgICBj
b250ZXh0LmZpbGxTdHlsZSA9ICJ3aGl0ZSI7CisgICAgY29udGV4dC5maWxsUmVjdCgxMDAsIDEw
MCwgMjAwLCAyMDApOworfQord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBzdGFydCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93
aGxzbC1kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3dlYmdwdS93aGxzbC1kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC1kb250LWNyYXNoLXBhcnNpbmctZW51bS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK2NvbnN0IHNoYWRlclNvdXJj
ZSA9IGAKKworZW51bSBEb250Q3Jhc2ggeworICAgIFZhbHVlCit9CisKK3ZlcnRleCBmbG9hdDQg
dmVydGV4U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQgaSA6IGF0
dHJpYnV0ZSgxKSkgOiBTVl9Qb3NpdGlvbiB7CisgICAgcmV0dXJuIHBvc2l0aW9uOworfQorCitm
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogU1ZfUG9zaXRp
b24pIDogU1ZfVGFyZ2V0IDAgeworICAgIHJldHVybiBwb3NpdGlvbjsKK30KK2A7Cithc3luYyBm
dW5jdGlvbiBzdGFydCgpIHsKKyAgICBjb25zdCBhZGFwdGVyID0gYXdhaXQgbmF2aWdhdG9yLmdw
dS5yZXF1ZXN0QWRhcHRlcigpOworICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGFkYXB0ZXIucmVx
dWVzdERldmljZSgpOworCisgICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlLCBpc1dITFNMOiB0cnVlfSk7CisgICAgY29u
c3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0
ZXhTaGFkZXIifTsKKyAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKKyAgICBjb25zdCBwcmltaXRpdmVU
b3BvbG9neSA9ICJ0cmlhbmdsZS1zdHJpcCI7CisgICAgY29uc3QgcmFzdGVyaXphdGlvblN0YXRl
ID0ge2Zyb250RmFjZTogImN3IiwgY3VsbE1vZGU6ICJub25lIn07CisgICAgY29uc3QgYWxwaGFC
bGVuZCA9IHt9OworICAgIGNvbnN0IGNvbG9yQmxlbmQgPSB7fTsKKyAgICBjb25zdCBjb2xvclN0
YXRlcyA9IFt7Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdy
aXRlTWFzazogMTV9XTsgLy8gR1BVQ29sb3JXcml0ZUJpdHMuQUxMCisgICAgY29uc3QgZGVwdGhT
dGVuY2lsU3RhdGUgPSBudWxsOworICAgIAorICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVy
TG9jYXRpb246IDAsIGlucHV0U2xvdDogMCwgZm9ybWF0OiAiZmxvYXQ0In07CisgICAgY29uc3Qg
YXR0cmlidXRlMSA9IHtzaGFkZXJMb2NhdGlvbjogMSwgaW5wdXRTbG90OiAxLCBmb3JtYXQ6ICJm
bG9hdCJ9OworICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlMCwgYXR0cmlidXRlMV07
CisgICAgY29uc3QgaW5wdXQwID0ge2lucHV0U2xvdDogMCwgc3RyaWRlOiAxNiB9OworICAgIGNv
bnN0IGlucHV0MSA9IHtpbnB1dFNsb3Q6IDEsIHN0cmlkZTogNCB9OworICAgIGNvbnN0IGlucHV0
cyA9IFtpbnB1dDAsIGlucHV0MV07CisgICAgY29uc3QgaW5wdXRTdGF0ZSA9IHtpbmRleEZvcm1h
dDogInVpbnQzMiIsIGF0dHJpYnV0ZXMsIGlucHV0c307CisKKyAgICBjb25zdCBiaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcs
IHR5cGU6ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07CisgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0g
ZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsK
KyAgICBjb25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czog
W2JpbmRHcm91cExheW91dF19OworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7CisKKyAgICBjb25z
dCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2Us
IHByaW1pdGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0
aFN0ZW5jaWxTdGF0ZSwgaW5wdXRTdGF0ZSwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxp
bmVMYXlvdXR9OworICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRl
clBpcGVsaW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7CisKKyAgICBjb25zdCB2ZXJ0ZXhC
dWZmZXIwRGVzY3JpcHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQg
KiA0ICogNCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9XUklURX07CisgICAgY29uc3QgdmVydGV4QnVmZmVyMCA9IGRldmljZS5jcmVhdGVCdWZmZXIo
dmVydGV4QnVmZmVyMERlc2NyaXB0b3IpOworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjBBcnJheUJ1
ZmZlciA9IGF3YWl0IHZlcnRleEJ1ZmZlcjAubWFwV3JpdGVBc3luYygpOworICAgIGNvbnN0IHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRleEJ1ZmZlcjBB
cnJheUJ1ZmZlcik7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVswXSA9IC0wLjU7Cisg
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxXSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVy
MEZsb2F0MzJBcnJheVsyXSA9IDEuMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzNd
ID0gMTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzRdID0gLTAuNTsKKyAgICB2ZXJ0
ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzVdID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMy
QXJyYXlbNl0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs3XSA9IDE7Cisg
ICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs4XSA9IDAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIw
RmxvYXQzMkFycmF5WzldID0gLTAuNTsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzEw
XSA9IDEuMDsKKyAgICB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5WzExXSA9IDE7CisgICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMl0gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxM10gPSAwLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNF0gPSAx
LjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxNV0gPSAxOworICAgIHZlcnRleEJ1
ZmZlcjAudW5tYXAoKTsKKworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yID0ge3Np
emU6IEZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OworICAgIGNvbnN0IHZlcnRl
eEJ1ZmZlcjEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yKTsK
KyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIx
Lm1hcFdyaXRlQXN5bmMoKTsKKyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRmxvYXQzMkFycmF5ID0g
bmV3IEZsb2F0MzJBcnJheSh2ZXJ0ZXhCdWZmZXIxQXJyYXlCdWZmZXIpOworICAgIHZlcnRleEJ1
ZmZlcjFEZXNjcmlwdG9yWzBdID0gMTsKKyAgICB2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRvclsxXSA9
IDE7CisgICAgdmVydGV4QnVmZmVyMURlc2NyaXB0b3JbMl0gPSAxOworICAgIHZlcnRleEJ1ZmZl
cjFEZXNjcmlwdG9yWzNdID0gMTsKKyAgICB2ZXJ0ZXhCdWZmZXIxLnVubWFwKCk7CisKKyAgICBj
b25zdCByZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVT
X1BFUl9FTEVNRU5ULCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB8IEdQVUJ1ZmZlclVz
YWdlLk1BUF9XUklURX07CisgICAgY29uc3QgcmVzb3VyY2VCdWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHJlc291cmNlQnVmZmVyRGVzY3JpcHRvcik7CisgICAgY29uc3QgcmVzb3VyY2VCdWZm
ZXJBcnJheUJ1ZmZlciA9IGF3YWl0IHJlc291cmNlQnVmZmVyLm1hcFdyaXRlQXN5bmMoKTsKKyAg
ICBjb25zdCByZXNvdXJjZUJ1ZmZlckZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVz
b3VyY2VCdWZmZXJBcnJheUJ1ZmZlcik7CisgICAgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXlb
MF0gPSAxOworICAgIHJlc291cmNlQnVmZmVyLnVubWFwKCk7CisKKyAgICBjb25zdCBidWZmZXJC
aW5kaW5nID0ge2J1ZmZlcjogcmVzb3VyY2VCdWZmZXIsIHNpemU6IDR9OworICAgIGNvbnN0IGJp
bmRHcm91cEJpbmRpbmcgPSB7YmluZGluZzogMCwgcmVzb3VyY2U6IGJ1ZmZlckJpbmRpbmd9Owor
ICAgIGNvbnN0IGJpbmRHcm91cERlc2NyaXB0b3IgPSB7bGF5b3V0OiBiaW5kR3JvdXBMYXlvdXQs
IGJpbmRpbmdzOiBbYmluZEdyb3VwQmluZGluZ119OworICAgIGNvbnN0IGJpbmRHcm91cCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXAoYmluZEdyb3VwRGVzY3JpcHRvcik7CisKKyAgICBjb25zdCBj
YW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisgICAgY29uc3QgY29u
dGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJncHUiKTsKKyAgICBjb25zdCBzd2FwQ2hhaW5EZXNj
cmlwdG9yID0ge2RldmljZSwgZm9ybWF0OiAiYmdyYTh1bm9ybSJ9OworICAgIGNvbnN0IHN3YXBD
aGFpbiA9IGNvbnRleHQuY29uZmlndXJlU3dhcENoYWluKHN3YXBDaGFpbkRlc2NyaXB0b3IpOwor
ICAgIGNvbnN0IG91dHB1dFRleHR1cmUgPSBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKTsK
KyAgICBjb25zdCBvdXRwdXRUZXh0dXJlVmlldyA9IG91dHB1dFRleHR1cmUuY3JlYXRlRGVmYXVs
dFZpZXcoKTsKKworICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7IC8vIHt9CisgICAgY29uc3QgcmVkID0ge3I6IDAsIGc6IDAsIGI6IDEsIGE6
IDF9OworICAgIGNvbnN0IGNvbG9yQXR0YWNobWVudHMgPSBbe2F0dGFjaG1lbnQ6IG91dHB1dFRl
eHR1cmVWaWV3LCByZXNvbHZlVGFyZ2V0OiBudWxsLCBsb2FkT3A6ICJjbGVhciIsIHN0b3JlT3A6
ICJzdG9yZSIsIGNsZWFyQ29sb3I6IHJlZH1dOworICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnQgPSBudWxsOworICAgIGNvbnN0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0ge2NvbG9yQXR0
YWNobWVudHMsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnR9OworICAgIGNvbnN0IHJlbmRlclBhc3NF
bmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlw
dG9yKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7
CisgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7CisgICAg
cmVuZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyMCwgdmVy
dGV4QnVmZmVyMV0sIFswLCAwXSk7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAw
LCAwKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7CisgICAgY29uc3QgY29tbWFu
ZEJ1ZmZlciA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOworICAgIGRldmljZS5nZXRRdWV1ZSgp
LnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK3dpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkIiwgc3RhcnQpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="386337"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370466</attachid>
            <date>2019-05-22 16:43:32 -0700</date>
            <delta_ts>2019-05-22 17:33:52 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>11630</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE5LTA1LTIyICBTYWFtIGJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFdITFNMOiBmaXggZW51bSBwYXJz
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgw
ODcKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBNYXhmaWVsZC4KKworICAgICAgICBUaGlz
IGZpeGVzIHR3byBidWdzOgorICAgICAgICAKKyAgICAgICAgMS4gV2Ugd2VyZSB1c2luZyBhIFN0
cmluZyBieSByZWZlcmVuY2UgYWZ0ZXIgbW92aW5nIHRoZSB1bmRlcmx5aW5nIG93bmVyIG9mCisg
ICAgICAgIHRoZSBzdHJpbmcuIFRoaXMgd291bGQgbGVhZCB0byB0aGUgU3RyaW5nIGJlY29taW5n
IHRoZSBlbXB0eSB2YWx1ZSwgYW5kCisgICAgICAgIGNyYXNoaW5nIHdoZW4gdXNlZCBhcyBhIGtl
eSBpbiBhIGhhc2ggbWFwLgorICAgICAgICAyLiBXZSB3ZXJlIGluY29ycmVjdGx5IHByb2R1Y2lu
ZyBhIHN5bnRheCBlcnJvciBmb3IgZW51bSBkZWNsYXJhdGlvbnMgYnkKKyAgICAgICAgc2F5aW5n
IGl0J3MgaW52YWxpZCBpZiBhbiBlbnVtIHZhbHVlIHdhcyBhZGRlZCB0byBhIGhhc2ggbWFwIGZv
ciB0aGUgZmlyc3QKKyAgICAgICAgdGltZS4gVGhpcyBsb2dpYyBzaG91bGQgYmUgbmVnYXRlZC4g
V2UgbmVlZCB0byBlcnJvciB3aGVuIGl0J3MgYWRkZWQgZm9yCisgICAgICAgIHRoZSBzZWNvbmQg
dGltZSBhbmQgb253YXJkcy4KKworICAgICAgICBUZXN0OiB3ZWJncHUvd2hsc2wtZG9udC1jcmFz
aC1wYXJzaW5nLWVudW0uaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNULmg6IFJlcGxhY2VkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uOjphZGQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlcjo6bmFtZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwOiBSZXBsYWNlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1REdW1wZXI6OnZpc2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEFTVER1bXBlci5oOiBSZXBsYWNlZC4KKwogMjAxOS0wNS0yMiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggc2Nyb2xsaW5n
IHRyZWUgc3RhdGUgZm9yIG1vcmUgb2JzY3VyZSBjb21iaW5hdGlvbnMgb2YgcG9zaXRpb25pbmcg
YW5kIHBhaW50IG9yZGVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEFTVER1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xBU1REdW1wZXIuY3BwCShyZXZpc2lvbiAyNDU2MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEFTVER1bXBlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMSwxMCArMTExLDcgQEAgdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFT
VDo6U3RydWN0dXJlRWxlbQogCiB2b2lkIEFTVER1bXBlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlv
bkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKIHsKLSAgICAvLyBGSVhNRTogVGVz
dCB0aGlzIG9uY2Ugd2UgcGFyc2UgZW51bXM6Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5ODA4NwotCi0gICAgbV9vdXQucHJpbnRsbihtX2luZGVudCwg
ImVudW0gIik7CisgICAgbV9vdXQucHJpbnQobV9pbmRlbnQsICJlbnVtICIpOwogICAgIHZpc2l0
KGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkpOwogICAgIG1fb3V0LnByaW50KCIgeyIpOwog
CkBAIC0zMzksMTAgKzMzNiw5IEBAIHZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6Ok51bGxMaXRl
cmFsVHkKIHsKIH0KIAotdm9pZCBBU1REdW1wZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsJikKK3ZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQogewotICAgIC8vIEZJWE1FOiBIYW5k
bGUgdGhpcyB3aGVuIHdlIGNhbiBwYXJzZSBlbnVtczoKLSAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MDg3CisgICAgbV9vdXQucHJpbnQoZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsLmxlZnQoKSwgIi4iLCBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwucmln
aHQoKSk7CiB9CiAKIHZvaWQgQVNURHVtcGVyOjp2aXNpdChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRl
JiBmdW5jdGlvbkF0dHJpYnV0ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVm
aW5pdGlvbi5oCShyZXZpc2lvbiAyNDU2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1i
ZXImJiBtZW1iZXIpCiAgICAgewogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQo
bWVtYmVyLm5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92
ZShtZW1iZXIpKSk7Ci0gICAgICAgIHJldHVybiAhcmVzdWx0LmlzTmV3RW50cnk7CisgICAgICAg
IHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKICAgICB9CiAKICAgICBFbnVtZXJhdGlvbk1lbWJl
ciogbWVtYmVyQnlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25NZW1iZXIuaAkocmV2aXNpb24gMjQ1NjE2KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgRW51bWVyYXRpb25NZW1iZXIoRW51
bWVyYXRpb25NZW1iZXImJikgPSBkZWZhdWx0OwogCiAgICAgY29uc3QgTGV4ZXI6OlRva2VuJiBv
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQotICAgIFN0cmluZyYgbmFtZSgpIHsg
cmV0dXJuIG1fbmFtZTsgfQorICAgIFN0cmluZyBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAg
ICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVl
OyB9CiAKICAgICB2b2lkIHNldFZhbHVlKENvbnN0YW50RXhwcmVzc2lvbiYmIHZhbHVlKQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjQ1NjE2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjIgIFNhYW0gYmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CisKKyAgICAgICAgV0hMU0w6IGZpeCBlbnVtIHBhcnNpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODA4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE15bGVzIE1heGZpZWxkLgorCisgICAgICAgICogd2ViZ3B1L3dobHNsLWRv
bnQtY3Jhc2gtcGFyc2luZy1lbnVtLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdwdS93aGxzbC1kb250LWNyYXNoLXBhcnNpbmctZW51bS5odG1sOiBBZGRlZC4KKwogMjAxOS0w
NS0yMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IGZvbnQtb3B0aWNhbC1zaXppbmcgYXBwbGllcyB0aGUgd3JvbmcgdmFyaWF0aW9uIHZhbHVlCklu
ZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtZG9udC1jcmFzaC1wYXJzaW5nLWVudW0tZXhw
ZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtZG9udC1j
cmFzaC1wYXJzaW5nLWVudW0tZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy93ZWJncHUvd2hsc2wtZG9udC1jcmFzaC1wYXJzaW5nLWVudW0tZXhwZWN0ZWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjQwMCIg
aGVpZ2h0PSI0MDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIHN0YXJ0KCkg
eworICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsK
KyAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgY29udGV4
dC5maWxsU3R5bGUgPSAiYmx1ZSI7CisgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCA0MDAsIDQw
MCk7CisgICAgY29udGV4dC5maWxsU3R5bGUgPSAid2hpdGUiOworICAgIGNvbnRleHQuZmlsbFJl
Y3QoMTAwLCAxMDAsIDIwMCwgMjAwKTsKK30KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
Iiwgc3RhcnQpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wtZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtZG9udC1jcmFzaC1wYXJzaW5nLWVudW0uaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wtZG9udC1jcmFzaC1wYXJz
aW5nLWVudW0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Citjb25zdCBz
aGFkZXJTb3VyY2UgPSBgCisKK2VudW0gRG9udENyYXNoIHsKKyAgICBWYWx1ZQorfQorCit2ZXJ0
ZXggZmxvYXQ0IHZlcnRleFNoYWRlcihmbG9hdDQgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZs
b2F0IGkgOiBhdHRyaWJ1dGUoMSkpIDogU1ZfUG9zaXRpb24geworICAgIHJldHVybiBwb3NpdGlv
bjsKK30KKworZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50U2hhZGVyKGZsb2F0NCBwb3NpdGlvbiA6
IFNWX1Bvc2l0aW9uKSA6IFNWX1RhcmdldCAwIHsKKyAgICByZXR1cm4gcG9zaXRpb247Cit9Citg
OworYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgY29uc3QgYWRhcHRlciA9IGF3YWl0IG5h
dmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKKyAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBh
ZGFwdGVyLnJlcXVlc3REZXZpY2UoKTsKKworICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoe2NvZGU6IHNoYWRlclNvdXJjZSwgaXNXSExTTDogdHJ1ZX0p
OworICAgIGNvbnN0IHZlcnRleFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9kdWxlLCBlbnRyeVBv
aW50OiAidmVydGV4U2hhZGVyIn07CisgICAgY29uc3QgZnJhZ21lbnRTdGFnZSA9IHttb2R1bGU6
IHNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50U2hhZGVyIn07CisgICAgY29uc3Qg
cHJpbWl0aXZlVG9wb2xvZ3kgPSAidHJpYW5nbGUtc3RyaXAiOworICAgIGNvbnN0IHJhc3Rlcml6
YXRpb25TdGF0ZSA9IHtmcm9udEZhY2U6ICJjdyIsIGN1bGxNb2RlOiAibm9uZSJ9OworICAgIGNv
bnN0IGFscGhhQmxlbmQgPSB7fTsKKyAgICBjb25zdCBjb2xvckJsZW5kID0ge307CisgICAgY29u
c3QgY29sb3JTdGF0ZXMgPSBbe2Zvcm1hdDogInJnYmE4dW5vcm0iLCBhbHBoYUJsZW5kLCBjb2xv
ckJsZW5kLCB3cml0ZU1hc2s6IDE1fV07IC8vIEdQVUNvbG9yV3JpdGVCaXRzLkFMTAorICAgIGNv
bnN0IGRlcHRoU3RlbmNpbFN0YXRlID0gbnVsbDsKKyAgICAKKyAgICBjb25zdCBhdHRyaWJ1dGUw
ID0ge3NoYWRlckxvY2F0aW9uOiAwLCBpbnB1dFNsb3Q6IDAsIGZvcm1hdDogImZsb2F0NCJ9Owor
ICAgIGNvbnN0IGF0dHJpYnV0ZTEgPSB7c2hhZGVyTG9jYXRpb246IDEsIGlucHV0U2xvdDogMSwg
Zm9ybWF0OiAiZmxvYXQifTsKKyAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAsIGF0
dHJpYnV0ZTFdOworICAgIGNvbnN0IGlucHV0MCA9IHtpbnB1dFNsb3Q6IDAsIHN0cmlkZTogMTYg
fTsKKyAgICBjb25zdCBpbnB1dDEgPSB7aW5wdXRTbG90OiAxLCBzdHJpZGU6IDQgfTsKKyAgICBj
b25zdCBpbnB1dHMgPSBbaW5wdXQwLCBpbnB1dDFdOworICAgIGNvbnN0IGlucHV0U3RhdGUgPSB7
aW5kZXhGb3JtYXQ6ICJ1aW50MzIiLCBhdHRyaWJ1dGVzLCBpbnB1dHN9OworCisgICAgY29uc3Qg
YmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciA9IHtiaW5kaW5nczogW3tiaW5kaW5nOiAwLCB2aXNp
YmlsaXR5OiA3LCB0eXBlOiAidW5pZm9ybS1idWZmZXIifV19OworICAgIGNvbnN0IGJpbmRHcm91
cExheW91dCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoYmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvcik7CisgICAgY29uc3QgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yID0ge2JpbmRHcm91
cExheW91dHM6IFtiaW5kR3JvdXBMYXlvdXRdfTsKKyAgICBjb25zdCBwaXBlbGluZUxheW91dCA9
IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dChwaXBlbGluZUxheW91dERlc2NyaXB0b3IpOwor
CisgICAgY29uc3QgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yID0ge3ZlcnRleFN0YWdlLCBmcmFn
bWVudFN0YWdlLCBwcmltaXRpdmVUb3BvbG9neSwgcmFzdGVyaXphdGlvblN0YXRlLCBjb2xvclN0
YXRlcywgZGVwdGhTdGVuY2lsU3RhdGUsIGlucHV0U3RhdGUsIHNhbXBsZUNvdW50OiAxLCBsYXlv
dXQ6IHBpcGVsaW5lTGF5b3V0fTsKKyAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IGRldmljZS5j
cmVhdGVSZW5kZXJQaXBlbGluZShyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworCisgICAgY29u
c3QgdmVydGV4QnVmZmVyMERlc2NyaXB0b3IgPSB7c2l6ZTogRmxvYXQzMkFycmF5LkJZVEVTX1BF
Ul9FTEVNRU5UICogNCAqIDQsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZm
ZXJVc2FnZS5NQVBfV1JJVEV9OworICAgIGNvbnN0IHZlcnRleEJ1ZmZlcjAgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHZlcnRleEJ1ZmZlcjBEZXNjcmlwdG9yKTsKKyAgICBjb25zdCB2ZXJ0ZXhCdWZm
ZXIwQXJyYXlCdWZmZXIgPSBhd2FpdCB2ZXJ0ZXhCdWZmZXIwLm1hcFdyaXRlQXN5bmMoKTsKKyAg
ICBjb25zdCB2ZXJ0ZXhCdWZmZXIwRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0
ZXhCdWZmZXIwQXJyYXlCdWZmZXIpOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMF0g
PSAtMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMV0gPSAtMC41OworICAgIHZl
cnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMl0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVszXSA9IDE7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs0XSA9IC0wLjU7
CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVs1XSA9IDAuNTsKKyAgICB2ZXJ0ZXhCdWZm
ZXIwRmxvYXQzMkFycmF5WzZdID0gMS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlb
N10gPSAxOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbOF0gPSAwLjU7CisgICAgdmVy
dGV4QnVmZmVyMEZsb2F0MzJBcnJheVs5XSA9IC0wLjU7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0
MzJBcnJheVsxMF0gPSAxLjA7CisgICAgdmVydGV4QnVmZmVyMEZsb2F0MzJBcnJheVsxMV0gPSAx
OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTJdID0gMC41OworICAgIHZlcnRleEJ1
ZmZlcjBGbG9hdDMyQXJyYXlbMTNdID0gMC41OworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJy
YXlbMTRdID0gMS4wOworICAgIHZlcnRleEJ1ZmZlcjBGbG9hdDMyQXJyYXlbMTVdID0gMTsKKyAg
ICB2ZXJ0ZXhCdWZmZXIwLnVubWFwKCk7CisKKyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIxRGVzY3Jp
cHRvciA9IHtzaXplOiBGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgKiA0LCB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1dSSVRFfTsKKyAgICBj
b25zdCB2ZXJ0ZXhCdWZmZXIxID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih2ZXJ0ZXhCdWZmZXIxRGVz
Y3JpcHRvcik7CisgICAgY29uc3QgdmVydGV4QnVmZmVyMUFycmF5QnVmZmVyID0gYXdhaXQgdmVy
dGV4QnVmZmVyMS5tYXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3QgdmVydGV4QnVmZmVyMUZsb2F0
MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGV4QnVmZmVyMUFycmF5QnVmZmVyKTsKKyAg
ICB2ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRvclswXSA9IDE7CisgICAgdmVydGV4QnVmZmVyMURlc2Ny
aXB0b3JbMV0gPSAxOworICAgIHZlcnRleEJ1ZmZlcjFEZXNjcmlwdG9yWzJdID0gMTsKKyAgICB2
ZXJ0ZXhCdWZmZXIxRGVzY3JpcHRvclszXSA9IDE7CisgICAgdmVydGV4QnVmZmVyMS51bm1hcCgp
OworCisgICAgY29uc3QgcmVzb3VyY2VCdWZmZXJEZXNjcmlwdG9yID0ge3NpemU6IEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0gfCBH
UFVCdWZmZXJVc2FnZS5NQVBfV1JJVEV9OworICAgIGNvbnN0IHJlc291cmNlQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcihyZXNvdXJjZUJ1ZmZlckRlc2NyaXB0b3IpOworICAgIGNvbnN0IHJl
c291cmNlQnVmZmVyQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNvdXJjZUJ1ZmZlci5tYXBXcml0ZUFz
eW5jKCk7CisgICAgY29uc3QgcmVzb3VyY2VCdWZmZXJGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQz
MkFycmF5KHJlc291cmNlQnVmZmVyQXJyYXlCdWZmZXIpOworICAgIHJlc291cmNlQnVmZmVyRmxv
YXQzMkFycmF5WzBdID0gMTsKKyAgICByZXNvdXJjZUJ1ZmZlci51bm1hcCgpOworCisgICAgY29u
c3QgYnVmZmVyQmluZGluZyA9IHtidWZmZXI6IHJlc291cmNlQnVmZmVyLCBzaXplOiA0fTsKKyAg
ICBjb25zdCBiaW5kR3JvdXBCaW5kaW5nID0ge2JpbmRpbmc6IDAsIHJlc291cmNlOiBidWZmZXJC
aW5kaW5nfTsKKyAgICBjb25zdCBiaW5kR3JvdXBEZXNjcmlwdG9yID0ge2xheW91dDogYmluZEdy
b3VwTGF5b3V0LCBiaW5kaW5nczogW2JpbmRHcm91cEJpbmRpbmddfTsKKyAgICBjb25zdCBiaW5k
R3JvdXAgPSBkZXZpY2UuY3JlYXRlQmluZEdyb3VwKGJpbmRHcm91cERlc2NyaXB0b3IpOworCisg
ICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOworICAg
IGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiZ3B1Iik7CisgICAgY29uc3Qgc3dh
cENoYWluRGVzY3JpcHRvciA9IHtkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0ifTsKKyAgICBj
b25zdCBzd2FwQ2hhaW4gPSBjb250ZXh0LmNvbmZpZ3VyZVN3YXBDaGFpbihzd2FwQ2hhaW5EZXNj
cmlwdG9yKTsKKyAgICBjb25zdCBvdXRwdXRUZXh0dXJlID0gc3dhcENoYWluLmdldEN1cnJlbnRU
ZXh0dXJlKCk7CisgICAgY29uc3Qgb3V0cHV0VGV4dHVyZVZpZXcgPSBvdXRwdXRUZXh0dXJlLmNy
ZWF0ZURlZmF1bHRWaWV3KCk7CisKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOyAvLyB7fQorICAgIGNvbnN0IHJlZCA9IHtyOiAwLCBnOiAw
LCBiOiAxLCBhOiAxfTsKKyAgICBjb25zdCBjb2xvckF0dGFjaG1lbnRzID0gW3thdHRhY2htZW50
OiBvdXRwdXRUZXh0dXJlVmlldywgcmVzb2x2ZVRhcmdldDogbnVsbCwgbG9hZE9wOiAiY2xlYXIi
LCBzdG9yZU9wOiAic3RvcmUiLCBjbGVhckNvbG9yOiByZWR9XTsKKyAgICBjb25zdCBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbnVsbDsKKyAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHtjb2xvckF0dGFjaG1lbnRzLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50fTsKKyAgICBjb25zdCBy
ZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQ
YXNzRGVzY3JpcHRvcik7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVy
UGlwZWxpbmUpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3Jv
dXApOworICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1
ZmZlcjAsIHZlcnRleEJ1ZmZlcjFdLCBbMCwgMF0pOworICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7CisgICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOworICAgIGNv
bnN0IGNvbW1hbmRCdWZmZXIgPSBjb21tYW5kRW5jb2Rlci5maW5pc2goKTsKKyAgICBkZXZpY2Uu
Z2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIHN0YXJ0KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>