<?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>225537</bug_id>
          
          <creation_ts>2021-05-07 13:20:02 -0700</creation_ts>
          <short_desc>IPC testing API should have the ability to create and receive IPC::Semaphore</short_desc>
          <delta_ts>2021-05-08 23:38:56 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225576</see_also>
          <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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1757977</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 13:20:02 -0700</bug_when>
    <thetext>In order to support DisplayList fuzzing, we need the ability to create &amp; receive IPC::Semaphore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757981</commentid>
    <comment_count>1</comment_count>
      <attachid>428028</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 13:35:07 -0700</bug_when>
    <thetext>Created attachment 428028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757987</commentid>
    <comment_count>2</comment_count>
      <attachid>428028</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-07 13:51:41 -0700</bug_when>
    <thetext>Comment on attachment 428028
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp:551
&gt; +    RemoteRenderingBackendCreationParameters parameters { *identifier, WTFMove(semaphore), *pageProxyID, *pageID };
&gt; +    encoder &lt;&lt; parameters;
&gt; +    semaphoreObject-&gt;exchange(WTFMove(semaphore));

We seem to `WTFMove(semaphore)` a couple of times here…is that intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757992</commentid>
    <comment_count>3</comment_count>
      <attachid>428028</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 14:05:30 -0700</bug_when>
    <thetext>Comment on attachment 428028
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp:551
&gt;&gt; +    semaphoreObject-&gt;exchange(WTFMove(semaphore));
&gt; 
&gt; We seem to `WTFMove(semaphore)` a couple of times here…is that intentional?

As we discussed, this should have been WTFMove(parameters.resumeDisplayListSemaphore), not WTFMove(semaphore).

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:225
&gt; +        &quot;const result = IPC.sendSyncMessage(&apos;GPU&apos;, 123, IPC.messages.RemoteRenderingBackend_SemaphoreForGetImageData.name, 100, []);&quot;

I&apos;d add a call to signal() here so that the above bug will be caught with a debug assertion in IPC::Semaphore::signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757993</commentid>
    <comment_count>4</comment_count>
      <attachid>428032</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 14:06:46 -0700</bug_when>
    <thetext>Created attachment 428032
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758006</commentid>
    <comment_count>5</comment_count>
      <attachid>428032</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 14:30:21 -0700</bug_when>
    <thetext>Comment on attachment 428032
Patch for landing

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

&gt; WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:130
&gt; +               BuildableName = &quot;Framework &amp;amp; XPC Services&quot;

Oh oops :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758007</commentid>
    <comment_count>6</comment_count>
      <attachid>428037</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 14:30:33 -0700</bug_when>
    <thetext>Created attachment 428037
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758008</commentid>
    <comment_count>7</comment_count>
      <attachid>428037</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 14:32:54 -0700</bug_when>
    <thetext>Comment on attachment 428037
Patch for landing

Clearing flags on attachment: 428037

Committed r277199 (237471@main): &lt;https://commits.webkit.org/237471@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758009</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-07 14:32:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758010</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-07 14:33:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/77673684&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428028</attachid>
            <date>2021-05-07 13:35:07 -0700</date>
            <delta_ts>2021-05-07 14:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225537-20210507133506.patch</filename>
            <type>text/plain</type>
            <size>24709</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlYWQyMmI5ZGJlMTM3Njlj
NjMzMzdiMzQ2ZDZmMjg0MjUwMmEyNmIuLjQ0YTViY2I3OGRmMTI5ZTBiOGM2N2Q0NzA3ZDVjZDU2
YjNkZjVlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDUtMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHRlc3RpbmcgQVBJIHNob3Vs
ZCBoYXZlIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBhbmQgcmVjZWl2ZSBJUEM6OlNlbWFwaG9yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHRoZSBjYXBhYmlsaXR5IHRvIGNyZWF0ZSBJUEM6OlNlbWFwaG9yZSBmb3IgSVBDIHRl
c3RpbmcgcHVycG9zZXMuCisgICAgICAgIEl0IGFkZHMgSVBDLmNyZWF0ZVNlbWFwaG9yZSB3aGlj
aCBjcmVhdGVzIGEgSmF2YVNjcmlwdCBvYmplY3QgcmVwcmVzZW50aW5nIGEgc2VtYXBob3JlCisg
ICAgICAgIHdpdGggc2lnbmFsIGFuZCB3YWl0Rm9yIG1ldGhvZHMgbGlrZSBJUEM6OlNlbWFwaG9y
ZSBidXQgd2FpdEZvciB0YWtpbmcgbWlsbGlzZWNvbmRzCisgICAgICAgIHRvIGJlIGNvbnNpc3Rl
bnQgd2l0aCBvdGhlciBKYXZhU2NyaXB0IEFQSXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNv
IGFkZHMgdGhlIHN1cHBvcnQgZm9yIGVuY29kaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMKKyAgICAgICAgdG8gZmFjaWxpdGF0ZSBjcmVhdGluZyBhIHJlbW90ZSBy
ZW5kZXJpbmcgYmFja2VuZCBkdXJpbmcgSVBDIHRlc3RpbmcuCisKKyAgICAgICAgVGVzdHM6IFRl
c3RXZWJLaXRBUEkuSVBDVGVzdGluZ0FQSS5DYW5SZWNlaXZlSVBDU2VtYXBob3JlCisgICAgICAg
ICAgICAgICBUZXN0V2ViS2l0QVBJLklQQ1Rlc3RpbmdBUEkuQ2FuQ3JlYXRlSVBDU2VtYXBob3Jl
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcDoKKyAgICAgICAgKElQ
Qzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKTogVGFrZXMgci12YWx1ZSByZWZlcmVu
Y2Ugc2luY2UgSVBDOjpTZW1hcGhvcmUKKyAgICAgICAgZG9lc24ndCBoYXZlIGEgY29weSBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmg6CisgICAgICAg
IChJUEM6OmpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZSk6IERpdHRvLiBBZGRlZCBhIHNw
ZWNpYWxpemF0aW9uIGZvciBJUEM6OlNlbWFwaG9yZS4KKyAgICAgICAgKElQQzo6cHV0SlNWYWx1
ZUZvckRlY29kZUFyZ3VtZW50SW5BcnJheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQ
Q1NlbWFwaG9yZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQ
Q1NlbWFwaG9yZTo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdB
UEk6OkpTSVBDU2VtYXBob3JlOjpleGNoYW5nZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJ
UENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6SlNJUENTZW1hcGhvcmUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6Y3JlYXRlVHlwZUVycm9yKTogTW92ZWQgdXAu
CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2VtYXBob3JlOjpjcmVhdGVK
U1dyYXBwZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENT
ZW1hcGhvcmU6OndyYXBwZXJDbGFzcyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0
aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6dW53cmFwKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2VtYXBob3JlOjp0b1dyYXBwZWQpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OmluaXRpYWxpemUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OmZp
bmFsaXplKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2Vt
YXBob3JlOjpzdGF0aWNGdW5jdGlvbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVz
dGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OnNpZ25hbCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6d2FpdEZvcik6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQzo6d3JhcHBlckNsYXNzKToKKyAgICAgICAg
KFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUEM6OnN0YXRpY0Z1bmN0aW9ucyk6IEFkZGVkIElQ
Qy5jcmVhdGVTZW1hcGhvcmUuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OmdldE9i
amVjdElkZW50aWZpZXJGcm9tUHJvcGVydHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBD
VGVzdGluZ0FQSTo6ZW5jb2RlUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjplbmNvZGVBcmd1bWVu
dCk6IEFkZGVkIHRoZSBzdXBwb3J0IGZvciBlbmNvZGluZworICAgICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIGFzIGFuIElQQyBhcmd1bWVudC4KKyAgICAgICAg
KFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUEM6OmNyZWF0ZVNlbWFwaG9yZSk6IEFkZGVkLgor
ICAgICAgICAoSVBDOjpqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUpOiBEZWZpbmVkIHRo
ZSBhZm9yZW1lbnRpb25lZCBzcGVjaWFsaXphdGlvbiBmb3IKKyAgICAgICAgSVBDOjpTZW1hcGhv
cmUgd2l0aCBJUENUZXN0aW5nQVBJIC4KKwogMjAyMS0wNS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldHJ5IGFzeW5jaHJvbm91c2x5IGluIFdlYlByb2Nl
c3NQb29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigpIGluIGNhc2Ugb2YgZmFpbHVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAKaW5kZXggYjIxZjM4ZWEx
NGQxZjA5YmFhNzg4MTFmYTUyNWE2ZTY5ZGYyMTM3Ni4uMGJlMzk1YzFjMzdjMmZlN2NiM2NjM2E1
YjQ5NTYyYWZjNzM5ZTY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
SlNJUENCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0Jp
bmRpbmcuY3BwCkBAIC01MSwxOSArNTEsMTkgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBqc1ZhbHVl
Rm9yRGVjb2RlZFN0cmluZ0FyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2wKIH0K
IAogdGVtcGxhdGU8PgotSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CitKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nJiYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGpz
VmFsdWVGb3JEZWNvZGVkU3RyaW5nQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIHZhbHVlLCAi
U3RyaW5nIl9zKTsKIH0KIAogdGVtcGxhdGU8PgotSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNv
ZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFVSTCYgdmFsdWUpCitKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVVJMJiYgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkU3RyaW5nQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3Qs
IHZhbHVlLnN0cmluZygpLCAiVVJMIl9zKTsKIH0KIAogdGVtcGxhdGU8PgotSlNDOjpKU1ZhbHVl
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB2YWx1ZSkKK0pTQzo6
SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHZhbHVlKQogewog
ICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZFN0cmluZ0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZS5zdHJpbmcoKSwgIlJlZ2lzdHJhYmxlRG9tYWluIl9zKTsKIH0KQEAgLTE4Mywx
MyArMTgzLDEzIEBAIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50UmVjdChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvCiB9CiAKIHRlbXBsYXRlPD4KLUpT
Qzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2YWx1ZSkKK0pTQzo6
SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiYgdmFsdWUpCiB7CiAgICAgcmV0dXJu
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRSZWN0KGdsb2JhbE9iamVjdCwgdmFsdWUsICJJbnRS
ZWN0Iik7CiB9CiAKIHRlbXBsYXRlPD4KLUpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFy
Z3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIHZhbHVlKQorSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFdlYkNvcmU6OkZs
b2F0UmVjdCYmIHZhbHVlKQogewogICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
UmVjdChnbG9iYWxPYmplY3QsIHZhbHVlLCAiRmxvYXRSZWN0Iik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oCmluZGV4IDgyNTBjNGIzZjYyYTZlY2MyNDM4YTdj
YWJmYTE4YWRmMmY1YTA1MzAuLmU3YmFjNjM0NDY1ZDdjZDg5YzU3YzZhYzg0MWJmMDZlN2NjNmRj
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oCkBAIC01Mywx
NSArNTMsMTkgQEAgY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiAKIG5hbWVzcGFjZSBJUEMgewog
CitjbGFzcyBTZW1hcGhvcmU7CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lm
X3Q8IXN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfZW51bTxUPjo6dmFs
dWU+KiA9IG51bGxwdHI+Ci1KU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZh
bHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBUJikKK0pTQzo6SlNWYWx1ZSBqc1ZhbHVl
Rm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIFQmJikKIHsKICAg
ICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogfQogCi10ZW1wbGF0ZTw+IEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYpOwotdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRB
cmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBVUkwmKTsKLXRlbXBsYXRl
PD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKK3RlbXBsYXRl
PD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgU3RyaW5nJiYpOwordGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBVUkwmJik7Cit0ZW1w
bGF0ZTw+IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOworCit0ZW1wbGF0
ZTw+IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIElQQzo6U2VtYXBob3JlJiYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+
CiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBUKQpAQCAtODksMTYgKzkzLDE2IEBAIHRlbXBsYXRlPD4gSlNDOjpKU1ZhbHVl
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdWlu
CiB0ZW1wbGF0ZTw+IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCosIHNpemVfdCk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1K
U0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT2JqZWN0SWRlbnRpZmllcjxVPiYgdmFsdWUpCitK
U0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgT2JqZWN0SWRlbnRpZmllcjxVPiYmIHZhbHVlKQogewogICAg
IHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1
ZS50b1VJbnQ2NCgpKTsKIH0KIAotdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRl
Y29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7Ci10ZW1wbGF0ZTw+IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3Vt
ZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
OwordGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBXZWJDb3JlOjpJbnRSZWN0JiYpOwordGVtcGxhdGU8PiBK
U0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBXZWJDb3JlOjpGbG9hdFJlY3QmJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci1K
U0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgT3B0aW9uU2V0PFU+JiB2YWx1ZSkKK0pTQzo6SlNW
YWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBPcHRpb25TZXQ8VT4mJiB2YWx1ZSkKIHsgICAgCiAgICAgYXV0byYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMTI5LDcgKzEzMyw3IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcHV0SlNW
YWx1ZUZvckRlY29kZUFyZ3VtZW50SW5BcnJheShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnCiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8ganNW
YWx1ZSA9IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsICp2YWx1
ZSk7CisgICAgYXV0byBqc1ZhbHVlID0ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKGds
b2JhbE9iamVjdCwgV1RGTW92ZSgqdmFsdWUpKTsKICAgICBpZiAoanNWYWx1ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBqc1ZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IGQ0OTVmMjg4NTBmMGU2Y2ZhMGE2
YjYzOWJmNGYwMGM1YjA5OWY1ZTkuLmM2YWQ1ZTFmMGMxZmIxNzI4ZGJhMjE2YWY1MTg3NjAzZjBj
OTA1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rl
c3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rl
c3RpbmdBUEkuY3BwCkBAIC0zMSw4ICszMSwxMSBAQAogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNp
bmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJKU0lQQ0JpbmRpbmcuaCIK
ICNpbmNsdWRlICJNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCkBAIC01MCwxMSAr
NTMsNDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5o
PgorI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5h
bWVzcGFjZSBJUENUZXN0aW5nQVBJIHsKIAorY2xhc3MgSlNJUENTZW1hcGhvcmUgOiBwdWJsaWMg
UmVmQ291bnRlZDxKU0lQQ1NlbWFwaG9yZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SlNJ
UENTZW1hcGhvcmU+IGNyZWF0ZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSA9IHsgfSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTSVBDU2VtYXBob3JlKFdURk1vdmUo
c2VtYXBob3JlKSkpOworICAgIH0KKworICAgIEpTT2JqZWN0UmVmIGNyZWF0ZUpTV3JhcHBlcihK
U0NvbnRleHRSZWYpOworCisgICAgc3RhdGljIEpTSVBDU2VtYXBob3JlKiB0b1dyYXBwZWQoSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKKworICAgIElQQzo6U2VtYXBob3JlIGV4Y2hhbmdlKElQ
Qzo6U2VtYXBob3JlJiYgc2VtYXBob3JlID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6ZXhjaGFuZ2UobV9zZW1hcGhvcmUsIFdURk1vdmUoc2VtYXBob3JlKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEpTSVBDU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQor
ICAgICAgICA6IG1fc2VtYXBob3JlKFdURk1vdmUoc2VtYXBob3JlKSkKKyAgICB7IH0KKworICAg
IHN0YXRpYyBKU0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpOworICAgIHN0YXRpYyBKU0lQQ1NlbWFw
aG9yZSogdW53cmFwKEpTT2JqZWN0UmVmKTsKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKEpT
Q29udGV4dFJlZiwgSlNPYmplY3RSZWYpOworICAgIHN0YXRpYyB2b2lkIGZpbmFsaXplKEpTT2Jq
ZWN0UmVmKTsKKworICAgIHN0YXRpYyBjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5j
dGlvbnMoKTsKKworICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHNpZ25hbChKU0NvbnRleHRSZWYsIEpT
T2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKyAg
ICBzdGF0aWMgSlNWYWx1ZVJlZiB3YWl0Rm9yKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworCisgICAgSVBDOjpTZW1h
cGhvcmUgbV9zZW1hcGhvcmU7Cit9OworCiBjbGFzcyBKU0lQQzsKIAogY2xhc3MgSlNNZXNzYWdl
TGlzdGVuZXIgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpNZXNzYWdlT2JzZXJ2ZXIg
ewpAQCAtMTA2LDYgKzE0NCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEpTVmFsdWVSZWYgc2Vu
ZE1lc3NhZ2UoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAgICAgc3RhdGljIEpTVmFsdWVSZWYgc2VuZFN5bmNNZXNz
YWdlKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pOwogCisgICAgc3RhdGljIEpTVmFsdWVSZWYgY3JlYXRlU2VtYXBob3Jl
KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pOworCiAgICAgc3RhdGljIEpTVmFsdWVSZWYgdmlzaXRlZExpbmtTdG9yZUlE
KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pOwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHdlYlBhZ2VQcm94eUlEKEpTQ29udGV4dFJl
ZiwgSlNPYmplY3RSZWYsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAg
IHN0YXRpYyBKU1ZhbHVlUmVmIHNlc3Npb25JRChKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBK
U1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKQEAgLTEyMCwxMyArMTYwLDEyNSBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxVbmlxdWVSZWY8SlNNZXNzYWdlTGlzdGVuZXI+PiBtX21l
c3NhZ2VMaXN0ZW5lcnM7CiB9OwogCitzdGF0aWMgSlNWYWx1ZVJlZiBjcmVhdGVUeXBlRXJyb3Io
SlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKHRvSlMoY29udGV4dCktPnZtKCkpOworICAgIHJldHVybiB0b1Jl
ZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCBtZXNzYWdlKSk7Cit9CisKK0pT
T2JqZWN0UmVmIEpTSVBDU2VtYXBob3JlOjpjcmVhdGVKU1dyYXBwZXIoSlNDb250ZXh0UmVmIGNv
bnRleHQpCit7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjb250ZXh0KTsKKyAgICBh
dXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgSlNP
YmplY3RSZWYgd3JhcHBlck9iamVjdCA9IEpTT2JqZWN0TWFrZSh0b0dsb2JhbFJlZihnbG9iYWxP
YmplY3QpLCB3cmFwcGVyQ2xhc3MoKSwgdGhpcyk7CisgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKKyAgICByZXR1cm4gd3JhcHBlck9iamVjdDsKK30KKworSlNDbGFzc1JlZiBKU0lQQ1NlbWFw
aG9yZTo6d3JhcHBlckNsYXNzKCkKK3sKKyAgICBzdGF0aWMgSlNDbGFzc1JlZiBqc0NsYXNzOwor
ICAgIGlmICghanNDbGFzcykgeworICAgICAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0aW9u
ID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CisgICAgICAgIGRlZmluaXRpb24uY2xhc3NOYW1l
ID0gIlNlbWFwaG9yZSI7CisgICAgICAgIGRlZmluaXRpb24ucGFyZW50Q2xhc3MgPSBudWxscHRy
OworICAgICAgICBkZWZpbml0aW9uLnN0YXRpY1ZhbHVlcyA9IG51bGxwdHI7CisgICAgICAgIGRl
ZmluaXRpb24uc3RhdGljRnVuY3Rpb25zID0gc3RhdGljRnVuY3Rpb25zKCk7CisgICAgICAgIGRl
ZmluaXRpb24uaW5pdGlhbGl6ZSA9IGluaXRpYWxpemU7CisgICAgICAgIGRlZmluaXRpb24uZmlu
YWxpemUgPSBmaW5hbGl6ZTsKKyAgICAgICAganNDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmRlZmlu
aXRpb24pOworICAgIH0KKyAgICByZXR1cm4ganNDbGFzczsKK30KKworaW5saW5lIEpTSVBDU2Vt
YXBob3JlKiBKU0lQQ1NlbWFwaG9yZTo6dW53cmFwKEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNJUENTZW1hcGhvcmUqPihKU09iamVjdEdldFByaXZhdGUo
b2JqZWN0KSk7Cit9CisKK0pTSVBDU2VtYXBob3JlKiBKU0lQQ1NlbWFwaG9yZTo6dG9XcmFwcGVk
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIGlmICghY29u
dGV4dCB8fCAhdmFsdWUgfHwgIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY29udGV4dCwgdmFsdWUs
IHdyYXBwZXJDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHVu
d3JhcChKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsIDApKTsKK30KKwordm9pZCBKU0lQ
Q1NlbWFwaG9yZTo6aW5pdGlhbGl6ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdCkK
K3sKKyAgICB1bndyYXAob2JqZWN0KS0+cmVmKCk7Cit9CisKK3ZvaWQgSlNJUENTZW1hcGhvcmU6
OmZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAgICB1bndyYXAob2JqZWN0KS0+ZGVy
ZWYoKTsKK30KKworY29uc3QgSlNTdGF0aWNGdW5jdGlvbiogSlNJUENTZW1hcGhvcmU6OnN0YXRp
Y0Z1bmN0aW9ucygpCit7CisgICAgc3RhdGljIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24gZnVuY3Rp
b25zW10gPSB7CisgICAgICAgIHsgInNpZ25hbCIsIHNpZ25hbCwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB9LAorICAgICAgICB7
ICJ3YWl0Rm9yIiwgd2FpdEZvciwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB9LAorICAgICAgICB7IDAsIDAsIDAgfQorICAgIH07
CisgICAgcmV0dXJuIGZ1bmN0aW9uczsKK30KKworSlNWYWx1ZVJlZiBKU0lQQ1NlbWFwaG9yZTo6
c2lnbmFsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0
b0pTKGNvbnRleHQpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52
bSgpKTsKKyAgICBhdXRvIGlzSVBDU2VtYXBob3JlID0gbWFrZVJlZlB0cih0b1dyYXBwZWQoY29u
dGV4dCwgdGhpc09iamVjdCkpOworICAgIGlmICghaXNJUENTZW1hcGhvcmUpIHsKKyAgICAgICAg
KmV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihjb250ZXh0LCAiV3JvbmcgdHlwZSJfcyk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CisKKyAg
ICBpc0lQQ1NlbWFwaG9yZS0+bV9zZW1hcGhvcmUuc2lnbmFsKCk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK0pTVmFsdWVSZWYgSlNJUENTZW1hcGhv
cmU6OndhaXRGb3IoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGF1dG8qIGdsb2JhbE9iamVj
dCA9IHRvSlMoY29udGV4dCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmpl
Y3QtPnZtKCkpOworICAgIGF1dG8gaXNJUENTZW1hcGhvcmUgPSBtYWtlUmVmUHRyKHRvV3JhcHBl
ZChjb250ZXh0LCB0aGlzT2JqZWN0KSk7CisgICAgaWYgKCFpc0lQQ1NlbWFwaG9yZSkgeworICAg
ICAgICAqZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKGNvbnRleHQsICJXcm9uZyB0eXBlIl9z
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIH0K
KworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkgeworICAgICAgICAqZXhjZXB0aW9uID0gY3Jl
YXRlVHlwZUVycm9yKGNvbnRleHQsICJNdXN0IHNwZWNpZnkgdGhlIHRpbWVvdXQgaW4gbWlsbGlz
ZWNvbmRzIGFzIHRoZSBmaXJzdCBhcmd1bWVudCJfcyk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CisKKyAgICBhdXRvIGpzVmFsdWUgPSB0b0pT
KGdsb2JhbE9iamVjdCwgYXJndW1lbnRzWzBdKTsKKyAgICBTZWNvbmRzIHRpbWVvdXQ7CisgICAg
aWYgKGpzVmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICBkb3VibGUgbWlsbGlzZWNvbmRzID0g
anNWYWx1ZS5hc051bWJlcigpOworICAgICAgICBpZiAoc3RkOjppc2Zpbml0ZShtaWxsaXNlY29u
ZHMpICYmIG1pbGxpc2Vjb25kcyA+IDApCisgICAgICAgICAgICB0aW1lb3V0ID0gU2Vjb25kczo6
ZnJvbU1pbGxpc2Vjb25kcyhtaWxsaXNlY29uZHMpOworICAgIH0KKyAgICBpZiAoIXRpbWVvdXQp
IHsKKyAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihjb250ZXh0LCAiVGltZW91
dCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gaXNJUENT
ZW1hcGhvcmUtPm1fc2VtYXBob3JlLndhaXRGb3IodGltZW91dCk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHJlc3VsdCk7Cit9CisKIEpTQ2xhc3NSZWYgSlNJUEM6
OndyYXBwZXJDbGFzcygpCiB7CiAgICAgc3RhdGljIEpTQ2xhc3NSZWYganNDbGFzczsKICAgICBp
ZiAoIWpzQ2xhc3MpIHsKICAgICAgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbiA9IGtK
U0NsYXNzRGVmaW5pdGlvbkVtcHR5OwogICAgICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJJ
UEMiOwotICAgICAgICBkZWZpbml0aW9uLnBhcmVudENsYXNzID0gMDsKKyAgICAgICAgZGVmaW5p
dGlvbi5wYXJlbnRDbGFzcyA9IG51bGxwdHI7CiAgICAgICAgIGRlZmluaXRpb24uc3RhdGljVmFs
dWVzID0gc3RhdGljVmFsdWVzKCk7CiAgICAgICAgIGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25z
ID0gc3RhdGljRnVuY3Rpb25zKCk7CiAgICAgICAgIGRlZmluaXRpb24uaW5pdGlhbGl6ZSA9IGlu
aXRpYWxpemU7CkBAIC0xNjUsNiArMzE3LDcgQEAgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiogSlNJ
UEM6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImFkZE91dGdvaW5nTWVzc2FnZUxpc3Rl
bmVyIiwgYWRkT3V0Z29pbmdNZXNzYWdlTGlzdGVuZXIsIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfSwKICAgICAgICAgeyAic2Vu
ZE1lc3NhZ2UiLCBzZW5kTWVzc2FnZSwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB9LAogICAgICAgICB7ICJzZW5kU3luY01lc3Nh
Z2UiLCBzZW5kU3luY01lc3NhZ2UsIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfSwKKyAgICAgICAgeyAiY3JlYXRlU2VtYXBob3Jl
IiwgY3JlYXRlU2VtYXBob3JlLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsK
ICAgICByZXR1cm4gZnVuY3Rpb25zOwpAQCAtMTk3LDEyICszNTAsNiBAQCBzdGF0aWMgT3B0aW9u
YWw8dWludDY0X3Q+IGNvbnZlcnRUb1VpbnQ2NChKU0M6OkpTVmFsdWUganNWYWx1ZSkKICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBjcmVhdGVUeXBlRXJy
b3IoSlNDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKHRvSlMoY29udGV4dCktPnZtKCkpOwotICAgIHJldHVybiB0
b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCBtZXNzYWdlKSk7Ci19Ci0K
IHN0YXRpYyBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBwcm9jZXNzVGFyZ2V0RnJvbUFyZ3VtZW50
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZiB2YWx1ZVJlZiwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENI
X1NDT1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CkBAIC0zNjMsNiArNTEwLDQ5IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEludGVncmFsVHlwZT4gYm9vbCBlbmNvZGVOdW1lcmljVHlwZShJUEM6OkVuY29k
ZXImIGVuY29kZXIsIEpTCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT2JqZWN0SWRlbnRpZmllclR5cGU+CitPcHRpb25h
bDxPYmplY3RJZGVudGlmaWVyPE9iamVjdElkZW50aWZpZXJUeXBlPj4gZ2V0T2JqZWN0SWRlbnRp
ZmllckZyb21Qcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNPYmplY3QqIGpzT2JqZWN0LCBBU0NJSUxpdGVyYWwgcHJvcGVydHlOYW1lLCBKU0M6OkNhdGNo
U2NvcGUmIHNjb3BlKQoreworICAgIGF1dG8ganNQcm9wZXJ0eVZhbHVlID0ganNPYmplY3QtPmdl
dChnbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3Qt
PnZtKCksIHByb3BlcnR5TmFtZSkpOworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoanNQcm9wZXJ0eVZhbHVlLmlzQmlnSW50
KCkpIAorICAgICAgICByZXR1cm4gbWFrZU9iamVjdElkZW50aWZpZXI8T2JqZWN0SWRlbnRpZmll
clR5cGU+KEpTQzo6SlNCaWdJbnQ6OnRvQmlnVUludDY0KGpzUHJvcGVydHlWYWx1ZSkpOworICAg
IGlmIChqc1Byb3BlcnR5VmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VPYmpl
Y3RJZGVudGlmaWVyPE9iamVjdElkZW50aWZpZXJUeXBlPihqc1Byb3BlcnR5VmFsdWUuYXNOdW1i
ZXIoKSk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworc3RhdGljIGJvb2wgZW5jb2Rl
UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyhJUEM6OkVuY29kZXImIGVu
Y29kZXIsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCog
anNPYmplY3QsIEpTQzo6Q2F0Y2hTY29wZSYgc2NvcGUpCit7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gZ2V0T2JqZWN0SWRlbnRpZmllckZyb21Qcm9wZXJ0eTxSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllclR5cGU+KGdsb2JhbE9iamVjdCwganNPYmplY3QsICJpZGVudGlmaWVyIl9zLCBzY29wZSk7
CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IGpzU2VtYXBob3JlID0ganNPYmplY3QtPmdldChnbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPnZtKCksICJzZW1hcGhvcmUiX3MpKTsKKyAgICBp
ZiAoc2NvcGUuZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIHNl
bWFwaG9yZU9iamVjdCA9IG1ha2VSZWZQdHIoSlNJUENTZW1hcGhvcmU6OnRvV3JhcHBlZCh0b1Jl
ZihnbG9iYWxPYmplY3QpLCB0b1JlZihqc1NlbWFwaG9yZSkpKTsKKyAgICBpZiAoIXNlbWFwaG9y
ZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBwYWdlUHJveHlJRCA9
IGdldE9iamVjdElkZW50aWZpZXJGcm9tUHJvcGVydHk8V2ViUGFnZVByb3h5SWRlbnRpZmllclR5
cGU+KGdsb2JhbE9iamVjdCwganNPYmplY3QsICJwYWdlUHJveHlJRCJfcywgc2NvcGUpOworICAg
IGlmICghcGFnZVByb3h5SUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gcGFn
ZUlEID0gZ2V0T2JqZWN0SWRlbnRpZmllckZyb21Qcm9wZXJ0eTxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllclR5cGU+KGdsb2JhbE9iamVjdCwganNPYmplY3QsICJwYWdlSUQiX3MsIHNjb3BlKTsKKyAg
ICBpZiAoIXBhZ2VJRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzZW1hcGhv
cmUgPSBzZW1hcGhvcmVPYmplY3QtPmV4Y2hhbmdlKCk7CisgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzIHsgKmlkZW50aWZpZXIsIFdURk1vdmUo
c2VtYXBob3JlKSwgKnBhZ2VQcm94eUlELCAqcGFnZUlEIH07CisgICAgZW5jb2RlciA8PCBwYXJh
bWV0ZXJzOworICAgIHNlbWFwaG9yZU9iamVjdC0+ZXhjaGFuZ2UoV1RGTW92ZShzZW1hcGhvcmUp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBlbmNvZGVBcmd1
bWVudChJUEM6OkVuY29kZXImLCBKU0lQQyYsIEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogc3RydWN0IFZlY3RvckVuY29kZUhlbHBlciB7CkBAIC00
NzUsNiArNjY1LDE2IEBAIHN0YXRpYyBib29sIGVuY29kZUFyZ3VtZW50KElQQzo6RW5jb2RlciYg
ZW5jb2RlciwgSlNJUEMmIGpzSVBDLCBKU0NvbnRleHRSZWYgY29uCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAodHlwZSA9PSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyIpIHsKKyAgICAgICAgaWYg
KCFlbmNvZGVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzKGVuY29kZXIs
IGdsb2JhbE9iamVjdCwganNPYmplY3QsIHNjb3BlKSkgeworICAgICAgICAgICAgKmV4Y2VwdGlv
biA9IGNyZWF0ZVR5cGVFcnJvcihjb250ZXh0LCAiRmFpbGVkIHRvIGNvbnZlcnQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyJfcyk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisK
ICAgICBpZiAodHlwZSA9PSAiRnJhbWVJbmZvRGF0YSIpIHsKICAgICAgICAgYXV0byB3ZWJGcmFt
ZSA9IG1ha2VSZWZQdHIoanNJUEMud2ViRnJhbWUoKSk7CiAgICAgICAgIGlmICghd2ViRnJhbWUp
IHsKQEAgLTc2MCw2ICs5NjAsMTEgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6c2VuZFN5bmNNZXNzYWdl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK0pTVmFsdWVSZWYgSlNJUEM6
OmNyZWF0ZVNlbWFwaG9yZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgcmV0dXJuIEpTSVBD
U2VtYXBob3JlOjpjcmVhdGUoKS0+Y3JlYXRlSlNXcmFwcGVyKGNvbnRleHQpOworfQorCiBKU1Zh
bHVlUmVmIEpTSVBDOjp2aXNpdGVkTGlua1N0b3JlSUQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgcmV0dXJuIHJldHJpZXZlSUQoY29udGV4dCwgdGhpc09iamVjdCwgZXhjZXB0aW9u
LCBbXShKU0lQQyYgd3JhcHBlZCkgewpAQCAtMTAxNyw0ICsxMjIyLDIzIEBAIHZvaWQgaW5qZWN0
KFdlYlBhZ2UmIHdlYlBhZ2UsIFdlYkZyYW1lJiB3ZWJGcmFtZSwgV2ViQ29yZTo6RE9NV3JhcHBl
cldvcmxkJiB3b3JsCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCituYW1lc3BhY2UgSVBDIHsK
KwordGVtcGxhdGU8PgorSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElQQzo6U2VtYXBob3JlJiYgdmFs
dWUpCit7CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29u
c3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7
CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInR5cGUiX3MpLCBKU0M6OmpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNlbWFwaG9yZSIpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CisgICAgYXV0
byBqc1ZhbHVlID0gdG9KUyhnbG9iYWxPYmplY3QsIFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJ
UENTZW1hcGhvcmU6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSktPmNyZWF0ZUpTV3JhcHBlcih0b1Jl
ZihnbG9iYWxPYmplY3QpKSk7CisgICAgb2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInZhbHVlIl9zKSwganNWYWx1ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOworICAgIHJldHVybiBvYmplY3Q7Cit9
CisKK30gLy8gbmFtZXNwYWNlIElQQworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YzkzMjMwNjc2ZDUzMDYyYTJhYzQ5NzlkYzk1
YTUwMTA3YTdiZDQ5Li5lZDJkZjVkMGE3YzEzODcwMzcyOWE3NDIzZWQ3YWEwOTY3NTRmYzFjIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjEtMDUtMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgSVBDIHRlc3RpbmcgQVBJIHNob3VsZCBoYXZlIHRoZSBhYmlsaXR5IHRvIGNyZWF0
ZSBhbmQgcmVjZWl2ZSBJUEM6OlNlbWFwaG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgdG8gbWFrZSBzdXJlIElQQyB0ZXN0aW5n
IEFQSSBhbGxvd3MgY3JlYXRpb24gb2YgYSBzZW1hcGhvcmUsCisgICAgICAgIGFuZCByZWNlaXZp
bmcgb25lIGFzIGEgcmVwbHkgdG8gYW4gSVBDIG1lc3NhZ2UuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW06CisgICAgICAgIChJUENU
ZXN0aW5nQVBJLkNhblJlY2VpdmVJUENTZW1hcGhvcmUpOiBBZGRlZC4KKyAgICAgICAgKElQQ1Rl
c3RpbmdBUEkuQ2FuQ3JlYXRlSVBDU2VtYXBob3JlKTogQWRkZWQuCisKIDIwMjEtMDUtMDYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNTQz
ODk/KSBuYXZpZ2F0b3IubGFuZ3VhZ2VzIHJldHVybnMgYWxsIGxvd2VyY2FzZSBsYW5ndWFnZXMg
Zm9yIHBvcnRzIHVzaW5nIENGCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW0KaW5kZXggMzJiNWVkM2U1ZTZkMGZiYWM4MTA3
MDk0NzAzZDMyZDNhZmQ5OWU0Ny4uNzRjNGU0ZWY0MjM0MzI3MGJkYjU1NWVkZGFmOTNlZWY3YTUz
NWU2NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
UENUZXN0aW5nQVBJLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSVBDVGVzdGluZ0FQSS5tbQpAQCAtMjA5LDggKzIwOSw0MiBAQCBURVNUKElQQ1Rlc3RpbmdB
UEksIENhblNlbmRJbnZhbGlkQXN5bmNNZXNzYWdlVG9HUFVQcm9jZXNzV2l0aG91dFRlcm1pbmF0
aW9uKQogICAgIEVYUEVDVF9TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAicmVzdWx0LmFyZ3VtZW50c1swXS50eXBlIl0uVVRGOFN0cmluZywgImJvb2wiKTsKICAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJl
c3VsdC5hcmd1bWVudHNbMF0udmFsdWUiXS5ib29sVmFsdWUpOwogfQorCitURVNUKElQQ1Rlc3Rp
bmdBUEksIENhblJlY2VpdmVJUENTZW1hcGhvcmUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3Jl
YXRlV2ViVmlld1dpdGhJUENUZXN0aW5nQVBJKCk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW0lQQ1Rlc3RpbmdBUElEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgZG9uZSA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1sPjxz
Y3JpcHQ+IgorICAgICAgICAiY29uc3Qgc2VtYXBob3JlID0gSVBDLmNyZWF0ZVNlbWFwaG9yZSgp
OyIKKyAgICAgICAgIklQQy5zZW5kTWVzc2FnZSgnR1BVJywgMCwgSVBDLm1lc3NhZ2VzLkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NfQ3JlYXRlUmVuZGVyaW5nQmFja2VuZC5uYW1lLCIKKyAgICAg
ICAgIiAgICBbe3R5cGU6ICdSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
JywgJ2lkZW50aWZpZXInOiAxMjMsIHNlbWFwaG9yZSwgJ3BhZ2VQcm94eUlEJzogSVBDLndlYlBh
Z2VQcm94eUlELCAncGFnZUlEJzogSVBDLnBhZ2VJRH1dKTsiCisgICAgICAgICJjb25zdCByZXN1
bHQgPSBJUEMuc2VuZFN5bmNNZXNzYWdlKCdHUFUnLCAxMjMsIElQQy5tZXNzYWdlcy5SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kX1NlbWFwaG9yZUZvckdldEltYWdlRGF0YS5uYW1lLCAxMDAsIFtdKTsi
CisgICAgICAgICJhbGVydChyZXN1bHQuYXJndW1lbnRzLmxlbmd0aCArICc6JyArIHJlc3VsdC5h
cmd1bWVudHNbMF0udHlwZSArICc6JyArIHJlc3VsdC5hcmd1bWVudHNbMF0udmFsdWUud2FpdEZv
cigxMDApKTsiCisgICAgICAgICI8L3NjcmlwdD4iXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX1NUUkVRKFthbGVydE1lc3NhZ2UgVVRGOFN0cmlu
Z10sICIxOlNlbWFwaG9yZTpmYWxzZSIpOworfQogI2VuZGlmCiAKK1RFU1QoSVBDVGVzdGluZ0FQ
SSwgQ2FuQ3JlYXRlSVBDU2VtYXBob3JlKQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdl
YlZpZXdXaXRoSVBDVGVzdGluZ0FQSSgpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tJUENUZXN0aW5nQVBJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48c2NyaXB0
PmFsZXJ0KElQQy5jcmVhdGVTZW1hcGhvcmUoKS53YWl0Rm9yKDEwMCkpOzwvc2NyaXB0PiJdOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uo
W2FsZXJ0TWVzc2FnZSBib29sVmFsdWVdKTsKK30KKwogVEVTVChJUENUZXN0aW5nQVBJLCBEZWNv
ZGVzUmVwbHlBcmd1bWVudHNGb3JQcm9tcHQpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRl
V2ViVmlld1dpdGhJUENUZXN0aW5nQVBJKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428032</attachid>
            <date>2021-05-07 14:06:46 -0700</date>
            <delta_ts>2021-05-07 14:30:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225537-20210507140645.patch</filename>
            <type>text/plain</type>
            <size>25652</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlYWQyMmI5ZGJlMTM3Njlj
NjMzMzdiMzQ2ZDZmMjg0MjUwMmEyNmIuLmVjYjJmODg1MDlhOTM1NWQ3NDM0MmE1NGQ1N2ViY2U0
NmZmY2IzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDUtMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHRlc3RpbmcgQVBJIHNob3Vs
ZCBoYXZlIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBhbmQgcmVjZWl2ZSBJUEM6OlNlbWFwaG9yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyB0aGUgY2FwYWJpbGl0eSB0byBjcmVhdGUgSVBDOjpTZW1hcGhvcmUgZm9yIElQQyB0ZXN0
aW5nIHB1cnBvc2VzLgorICAgICAgICBJdCBhZGRzIElQQy5jcmVhdGVTZW1hcGhvcmUgd2hpY2gg
Y3JlYXRlcyBhIEphdmFTY3JpcHQgb2JqZWN0IHJlcHJlc2VudGluZyBhIHNlbWFwaG9yZQorICAg
ICAgICB3aXRoIHNpZ25hbCBhbmQgd2FpdEZvciBtZXRob2RzIGxpa2UgSVBDOjpTZW1hcGhvcmUg
YnV0IHdhaXRGb3IgdGFraW5nIG1pbGxpc2Vjb25kcworICAgICAgICB0byBiZSBjb25zaXN0ZW50
IHdpdGggb3RoZXIgSmF2YVNjcmlwdCBBUElzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBh
ZGRzIHRoZSBzdXBwb3J0IGZvciBlbmNvZGluZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzCisgICAgICAgIHRvIGZhY2lsaXRhdGUgY3JlYXRpbmcgYSByZW1vdGUgcmVu
ZGVyaW5nIGJhY2tlbmQgZHVyaW5nIElQQyB0ZXN0aW5nLgorCisgICAgICAgIFRlc3RzOiBUZXN0
V2ViS2l0QVBJLklQQ1Rlc3RpbmdBUEkuQ2FuUmVjZWl2ZUlQQ1NlbWFwaG9yZQorICAgICAgICAg
ICAgICAgVGVzdFdlYktpdEFQSS5JUENUZXN0aW5nQVBJLkNhbkNyZWF0ZUlQQ1NlbWFwaG9yZQor
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHA6CisgICAgICAgIChJUEM6
OmpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZSk6IFRha2VzIHItdmFsdWUgcmVmZXJlbmNl
IHNpbmNlIElQQzo6U2VtYXBob3JlCisgICAgICAgIGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29uc3Ry
dWN0b3IuCisgICAgICAgICogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oOgorICAgICAgICAo
SVBDOjpqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUpOiBEaXR0by4gQWRkZWQgYSBzcGVj
aWFsaXphdGlvbiBmb3IgSVBDOjpTZW1hcGhvcmUuCisgICAgICAgIChJUEM6OnB1dEpTVmFsdWVG
b3JEZWNvZGVBcmd1bWVudEluQXJyYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENT
ZW1hcGhvcmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENT
ZW1hcGhvcmU6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJ
OjpKU0lQQ1NlbWFwaG9yZTo6ZXhjaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBD
VGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OkpTSVBDU2VtYXBob3JlKTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OmNyZWF0ZVR5cGVFcnJvcik6IE1vdmVkIHVwLgor
ICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlSlNX
cmFwcGVyKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2Vt
YXBob3JlOjp3cmFwcGVyQ2xhc3MpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGlu
Z0FQSTo6SlNJUENTZW1hcGhvcmU6OnVud3JhcCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJ
UENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6dG9XcmFwcGVkKTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2VtYXBob3JlOjppbml0aWFsaXplKTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2VtYXBob3JlOjpmaW5h
bGl6ZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFw
aG9yZTo6c3RhdGljRnVuY3Rpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3Rp
bmdBUEk6OkpTSVBDU2VtYXBob3JlOjpzaWduYWwpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
SVBDVGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OndhaXRGb3IpOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUEM6OndyYXBwZXJDbGFzcyk6CisgICAgICAgIChX
ZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjpzdGF0aWNGdW5jdGlvbnMpOiBBZGRlZCBJUEMu
Y3JlYXRlU2VtYXBob3JlLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpnZXRPYmpl
Y3RJZGVudGlmaWVyRnJvbVByb3BlcnR5KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rl
c3RpbmdBUEk6OmVuY29kZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMp
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6ZW5jb2RlQXJndW1lbnQp
OiBBZGRlZCB0aGUgc3VwcG9ydCBmb3IgZW5jb2RpbmcKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBhcyBhbiBJUEMgYXJndW1lbnQuCisgICAgICAgIChX
ZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjpjcmVhdGVTZW1hcGhvcmUpOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKTogRGVmaW5lZCB0aGUg
YWZvcmVtZW50aW9uZWQgc3BlY2lhbGl6YXRpb24gZm9yCisgICAgICAgIElQQzo6U2VtYXBob3Jl
IHdpdGggSVBDVGVzdGluZ0FQSSAuCisKIDIwMjEtMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXRyeSBhc3luY2hyb25vdXNseSBpbiBXZWJQcm9jZXNz
UG9vbDo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSBpbiBjYXNlIG9mIGZhaWx1cmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCmluZGV4IGIyMWYzOGVhMTRk
MWYwOWJhYTc4ODExZmE1MjVhNmU2OWRmMjEzNzYuLjBiZTM5NWMxYzM3YzJmZTdjYjNjYzNhNWI0
OTU2MmFmYzczOWU2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pT
SVBDQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5k
aW5nLmNwcApAQCAtNTEsMTkgKzUxLDE5IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUganNWYWx1ZUZv
ckRlY29kZWRTdHJpbmdBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsCiB9CiAK
IHRlbXBsYXRlPD4KLUpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQor
SlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZyYmIHZhbHVlKQogewogICAgIHJldHVybiBqc1Zh
bHVlRm9yRGVjb2RlZFN0cmluZ0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIlN0
cmluZyJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KLUpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2Rl
ZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBV
UkwmIHZhbHVlKQorSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVSTCYmIHZhbHVlKQogewogICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZFN0cmluZ0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2
YWx1ZS5zdHJpbmcoKSwgIlVSTCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KLUpTQzo6SlNWYWx1ZSBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdmFsdWUpCitKU0M6OkpT
VmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB2YWx1ZSkKIHsKICAg
ICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRTdHJpbmdBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVj
dCwgdmFsdWUuc3RyaW5nKCksICJSZWdpc3RyYWJsZURvbWFpbiJfcyk7CiB9CkBAIC0xODMsMTMg
KzE4MywxMyBAQCBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjbwogfQogCiB0ZW1wbGF0ZTw+Ci1KU0M6
OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmFsdWUpCitKU0M6OkpT
VmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6SW50UmVjdCYmIHZhbHVlKQogewogICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50UmVjdChnbG9iYWxPYmplY3QsIHZhbHVlLCAiSW50UmVj
dCIpOwogfQogCiB0ZW1wbGF0ZTw+Ci1KU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1
bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB2YWx1ZSkKK0pTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3Vt
ZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpGbG9h
dFJlY3QmJiB2YWx1ZSkKIHsKICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJl
Y3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkZsb2F0UmVjdCIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaAppbmRleCA4MjUwYzRiM2Y2MmE2ZWNjMjQzOGE3Y2Fi
ZmExOGFkZjJmNWEwNTMwLi5lN2JhYzYzNDQ2NWQ3Y2Q4OWM1N2M2YWM4NDFiZjA2ZTdjYzZkY2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaApAQCAtNTMsMTUg
KzUzLDE5IEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3BhY2UgSVBDIHsKIAor
Y2xhc3MgU2VtYXBob3JlOworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90
PCFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlICYmICFzdGQ6OmlzX2VudW08VD46OnZhbHVl
PiogPSBudWxscHRyPgotSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVCYpCitKU0M6OkpTVmFsdWUganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBUJiYpCiB7CiAgICAg
cmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIH0KIAotdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUg
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmKTsKLXRlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVJMJik7Ci10ZW1wbGF0ZTw+
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7Cit0ZW1wbGF0ZTw+
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIFN0cmluZyYmKTsKK3RlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgVVJMJiYpOwordGVtcGxh
dGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKwordGVtcGxhdGU8
PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBJUEM6OlNlbWFwaG9yZSYmKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgog
SlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgVCkKQEAgLTg5LDE2ICs5MywxNiBAQCB0ZW1wbGF0ZTw+IEpTQzo6SlNWYWx1ZSBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIHVpbgog
dGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBzaXplX3QpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VT4mIHZhbHVlKQorSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE9iamVjdElkZW50aWZpZXI8VT4mJiB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUu
dG9VSW50NjQoKSk7CiB9CiAKLXRlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNv
ZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwotdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
K3RlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgV2ViQ29yZTo6SW50UmVjdCYmKTsKK3RlbXBsYXRlPD4gSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgV2ViQ29yZTo6RmxvYXRSZWN0JiYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wdGlvblNldDxVPiYgdmFsdWUpCitKU0M6OkpTVmFs
dWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgT3B0aW9uU2V0PFU+JiYgdmFsdWUpCiB7ICAgIAogICAgIGF1dG8mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTEyOSw3ICsxMzMsNyBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IHB1dEpTVmFs
dWVGb3JEZWNvZGVBcmd1bWVudEluQXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCogZwogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGpzVmFs
dWUgPSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCAqdmFsdWUp
OworICAgIGF1dG8ganNWYWx1ZSA9IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShnbG9i
YWxPYmplY3QsIFdURk1vdmUoKnZhbHVlKSk7CiAgICAgaWYgKGpzVmFsdWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4ganNWYWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBkNDk1ZjI4ODUwZjBlNmNmYTBhNmI2
MzliZjRmMDBjNWIwOTlmNWU5Li41NjFjYTZmMTQxNGY1OGUwMjcyOGUwZDJhNGIyNjMwMGVkMDMy
MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcApAQCAtMzEsOCArMzEsMTEgQEAKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiSlNJUENCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtNTAsMTEgKzUz
LDQ2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1l
c3BhY2UgSVBDVGVzdGluZ0FQSSB7CiAKK2NsYXNzIEpTSVBDU2VtYXBob3JlIDogcHVibGljIFJl
ZkNvdW50ZWQ8SlNJUENTZW1hcGhvcmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEpTSVBD
U2VtYXBob3JlPiBjcmVhdGUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUgPSB7IH0pCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU0lQQ1NlbWFwaG9yZShXVEZNb3ZlKHNl
bWFwaG9yZSkpKTsKKyAgICB9CisKKyAgICBKU09iamVjdFJlZiBjcmVhdGVKU1dyYXBwZXIoSlND
b250ZXh0UmVmKTsKKworICAgIHN0YXRpYyBKU0lQQ1NlbWFwaG9yZSogdG9XcmFwcGVkKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZik7CisKKyAgICBJUEM6OlNlbWFwaG9yZSBleGNoYW5nZShJUEM6
OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fc2VtYXBob3JlLCBXVEZNb3ZlKHNlbWFwaG9yZSkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBKU0lQQ1NlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKKyAg
ICAgICAgOiBtX3NlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpCisgICAgeyB9CisKKyAgICBz
dGF0aWMgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKKyAgICBzdGF0aWMgSlNJUENTZW1hcGhv
cmUqIHVud3JhcChKU09iamVjdFJlZik7CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKKyAgICBzdGF0aWMgdm9pZCBmaW5hbGl6ZShKU09iamVj
dFJlZik7CisKKyAgICBzdGF0aWMgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rp
b25zKCk7CisKKyAgICBzdGF0aWMgSlNWYWx1ZVJlZiBzaWduYWwoSlNDb250ZXh0UmVmLCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAg
c3RhdGljIEpTVmFsdWVSZWYgd2FpdEZvcihKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKworICAgIElQQzo6U2VtYXBo
b3JlIG1fc2VtYXBob3JlOworfTsKKwogY2xhc3MgSlNJUEM7CiAKIGNsYXNzIEpTTWVzc2FnZUxp
c3RlbmVyIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6TWVzc2FnZU9ic2VydmVyIHsK
QEAgLTEwNiw2ICsxNDQsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHNlbmRN
ZXNzYWdlKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHNlbmRTeW5jTWVzc2Fn
ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKTsKIAorICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNyZWF0ZVNlbWFwaG9yZShK
U0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKTsKKwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHZpc2l0ZWRMaW5rU3RvcmVJRChK
U0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKTsKICAgICBzdGF0aWMgSlNWYWx1ZVJlZiB3ZWJQYWdlUHJveHlJRChKU0NvbnRleHRSZWYs
IEpTT2JqZWN0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXNzaW9uSUQoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNT
dHJpbmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CkBAIC0xMjAsMTMgKzE2MCwxMjUgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8VW5pcXVlUmVmPEpTTWVzc2FnZUxpc3RlbmVyPj4gbV9tZXNz
YWdlTGlzdGVuZXJzOwogfTsKIAorc3RhdGljIEpTVmFsdWVSZWYgY3JlYXRlVHlwZUVycm9yKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayh0b0pTKGNvbnRleHQpLT52bSgpKTsKKyAgICByZXR1cm4gdG9SZWYo
SlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0KSwgbWVzc2FnZSkpOworfQorCitKU09i
amVjdFJlZiBKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlSlNXcmFwcGVyKEpTQ29udGV4dFJlZiBjb250
ZXh0KQoreworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlMoY29udGV4dCk7CisgICAgYXV0
byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIEpTT2Jq
ZWN0UmVmIHdyYXBwZXJPYmplY3QgPSBKU09iamVjdE1ha2UodG9HbG9iYWxSZWYoZ2xvYmFsT2Jq
ZWN0KSwgd3JhcHBlckNsYXNzKCksIHRoaXMpOworICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgcmV0dXJuIHdyYXBwZXJPYmplY3Q7Cit9CisKK0pTQ2xhc3NSZWYgSlNJUENTZW1hcGhv
cmU6OndyYXBwZXJDbGFzcygpCit7CisgICAgc3RhdGljIEpTQ2xhc3NSZWYganNDbGFzczsKKyAg
ICBpZiAoIWpzQ2xhc3MpIHsKKyAgICAgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbiA9
IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OworICAgICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9
ICJTZW1hcGhvcmUiOworICAgICAgICBkZWZpbml0aW9uLnBhcmVudENsYXNzID0gbnVsbHB0cjsK
KyAgICAgICAgZGVmaW5pdGlvbi5zdGF0aWNWYWx1ZXMgPSBudWxscHRyOworICAgICAgICBkZWZp
bml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9IHN0YXRpY0Z1bmN0aW9ucygpOworICAgICAgICBkZWZp
bml0aW9uLmluaXRpYWxpemUgPSBpbml0aWFsaXplOworICAgICAgICBkZWZpbml0aW9uLmZpbmFs
aXplID0gZmluYWxpemU7CisgICAgICAgIGpzQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0
aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIGpzQ2xhc3M7Cit9CisKK2lubGluZSBKU0lQQ1NlbWFw
aG9yZSogSlNJUENTZW1hcGhvcmU6OnVud3JhcChKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEpTSVBDU2VtYXBob3JlKj4oSlNPYmplY3RHZXRQcml2YXRlKG9i
amVjdCkpOworfQorCitKU0lQQ1NlbWFwaG9yZSogSlNJUENTZW1hcGhvcmU6OnRvV3JhcHBlZChK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKK3sKKyAgICBpZiAoIWNvbnRl
eHQgfHwgIXZhbHVlIHx8ICFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGNvbnRleHQsIHZhbHVlLCB3
cmFwcGVyQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB1bndy
YXAoSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHZhbHVlLCAwKSk7Cit9CisKK3ZvaWQgSlNJUENT
ZW1hcGhvcmU6OmluaXRpYWxpemUoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmplY3QpCit7
CisgICAgdW53cmFwKG9iamVjdCktPnJlZigpOworfQorCit2b2lkIEpTSVBDU2VtYXBob3JlOjpm
aW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgdW53cmFwKG9iamVjdCktPmRlcmVm
KCk7Cit9CisKK2NvbnN0IEpTU3RhdGljRnVuY3Rpb24qIEpTSVBDU2VtYXBob3JlOjpzdGF0aWNG
dW5jdGlvbnMoKQoreworICAgIHN0YXRpYyBjb25zdCBKU1N0YXRpY0Z1bmN0aW9uIGZ1bmN0aW9u
c1tdID0geworICAgICAgICB7ICJzaWduYWwiLCBzaWduYWwsIGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfSwKKyAgICAgICAgeyAi
d2FpdEZvciIsIHdhaXRGb3IsIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfSwKKyAgICAgICAgeyAwLCAwLCAwIH0KKyAgICB9Owor
ICAgIHJldHVybiBmdW5jdGlvbnM7Cit9CisKK0pTVmFsdWVSZWYgSlNJUENTZW1hcGhvcmU6OnNp
Z25hbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9K
Uyhjb250ZXh0KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdC0+dm0o
KSk7CisgICAgYXV0byBpc0lQQ1NlbWFwaG9yZSA9IG1ha2VSZWZQdHIodG9XcmFwcGVkKGNvbnRl
eHQsIHRoaXNPYmplY3QpKTsKKyAgICBpZiAoIWlzSVBDU2VtYXBob3JlKSB7CisgICAgICAgICpl
eGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoY29udGV4dCwgIldyb25nIHR5cGUiX3MpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgfQorCisgICAg
aXNJUENTZW1hcGhvcmUtPm1fc2VtYXBob3JlLnNpZ25hbCgpOworCisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitKU1ZhbHVlUmVmIEpTSVBDU2VtYXBob3Jl
Ojp3YWl0Rm9yKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSB0b0pTKGNvbnRleHQpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0
LT52bSgpKTsKKyAgICBhdXRvIGlzSVBDU2VtYXBob3JlID0gbWFrZVJlZlB0cih0b1dyYXBwZWQo
Y29udGV4dCwgdGhpc09iamVjdCkpOworICAgIGlmICghaXNJUENTZW1hcGhvcmUpIHsKKyAgICAg
ICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihjb250ZXh0LCAiV3JvbmcgdHlwZSJfcyk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CisK
KyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpIHsKKyAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0
ZVR5cGVFcnJvcihjb250ZXh0LCAiTXVzdCBzcGVjaWZ5IHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vj
b25kcyBhcyB0aGUgZmlyc3QgYXJndW1lbnQiX3MpOworICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgfQorCisgICAgYXV0byBqc1ZhbHVlID0gdG9KUyhn
bG9iYWxPYmplY3QsIGFyZ3VtZW50c1swXSk7CisgICAgU2Vjb25kcyB0aW1lb3V0OworICAgIGlm
IChqc1ZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgZG91YmxlIG1pbGxpc2Vjb25kcyA9IGpz
VmFsdWUuYXNOdW1iZXIoKTsKKyAgICAgICAgaWYgKHN0ZDo6aXNmaW5pdGUobWlsbGlzZWNvbmRz
KSAmJiBtaWxsaXNlY29uZHMgPiAwKQorICAgICAgICAgICAgdGltZW91dCA9IFNlY29uZHM6OmZy
b21NaWxsaXNlY29uZHMobWlsbGlzZWNvbmRzKTsKKyAgICB9CisgICAgaWYgKCF0aW1lb3V0KSB7
CisgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoY29udGV4dCwgIlRpbWVvdXQg
bXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciJfcyk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGlzSVBDU2Vt
YXBob3JlLT5tX3NlbWFwaG9yZS53YWl0Rm9yKHRpbWVvdXQpOworCisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlQm9vbGVhbihjb250ZXh0LCByZXN1bHQpOworfQorCiBKU0NsYXNzUmVmIEpTSVBDOjp3
cmFwcGVyQ2xhc3MoKQogewogICAgIHN0YXRpYyBKU0NsYXNzUmVmIGpzQ2xhc3M7CiAgICAgaWYg
KCFqc0NsYXNzKSB7CiAgICAgICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb24gPSBrSlND
bGFzc0RlZmluaXRpb25FbXB0eTsKICAgICAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSAiSVBD
IjsKLSAgICAgICAgZGVmaW5pdGlvbi5wYXJlbnRDbGFzcyA9IDA7CisgICAgICAgIGRlZmluaXRp
b24ucGFyZW50Q2xhc3MgPSBudWxscHRyOwogICAgICAgICBkZWZpbml0aW9uLnN0YXRpY1ZhbHVl
cyA9IHN0YXRpY1ZhbHVlcygpOwogICAgICAgICBkZWZpbml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9
IHN0YXRpY0Z1bmN0aW9ucygpOwogICAgICAgICBkZWZpbml0aW9uLmluaXRpYWxpemUgPSBpbml0
aWFsaXplOwpAQCAtMTY1LDYgKzMxNyw3IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIEpTSVBD
OjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJhZGRPdXRnb2luZ01lc3NhZ2VMaXN0ZW5l
ciIsIGFkZE91dGdvaW5nTWVzc2FnZUxpc3RlbmVyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IH0sCiAgICAgICAgIHsgInNlbmRN
ZXNzYWdlIiwgc2VuZE1lc3NhZ2UsIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfSwKICAgICAgICAgeyAic2VuZFN5bmNNZXNzYWdl
Iiwgc2VuZFN5bmNNZXNzYWdlLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IH0sCisgICAgICAgIHsgImNyZWF0ZVNlbWFwaG9yZSIs
IGNyZWF0ZVNlbWFwaG9yZSwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAg
ICAgcmV0dXJuIGZ1bmN0aW9uczsKQEAgLTE5NywxMiArMzUwLDYgQEAgc3RhdGljIE9wdGlvbmFs
PHVpbnQ2NF90PiBjb252ZXJ0VG9VaW50NjQoSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCiAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgY3JlYXRlVHlwZUVycm9y
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayh0b0pTKGNvbnRleHQpLT52bSgpKTsKLSAgICByZXR1cm4gdG9S
ZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0KSwgbWVzc2FnZSkpOwotfQotCiBz
dGF0aWMgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gcHJvY2Vzc1RhcmdldEZyb21Bcmd1bWVudChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWYgdmFsdWVSZWYsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwpAQCAtMzYzLDYgKzUxMCw0OSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IGJvb2wgZW5jb2RlTnVtZXJpY1R5cGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyLCBKUwogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQordGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJUeXBlPgorT3B0aW9uYWw8
T2JqZWN0SWRlbnRpZmllcjxPYmplY3RJZGVudGlmaWVyVHlwZT4+IGdldE9iamVjdElkZW50aWZp
ZXJGcm9tUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
T2JqZWN0KiBqc09iamVjdCwgQVNDSUlMaXRlcmFsIHByb3BlcnR5TmFtZSwgSlNDOjpDYXRjaFNj
b3BlJiBzY29wZSkKK3sKKyAgICBhdXRvIGpzUHJvcGVydHlWYWx1ZSA9IGpzT2JqZWN0LT5nZXQo
Z2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT52
bSgpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKGpzUHJvcGVydHlWYWx1ZS5pc0JpZ0ludCgp
KSAKKyAgICAgICAgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPE9iamVjdElkZW50aWZpZXJU
eXBlPihKU0M6OkpTQmlnSW50Ojp0b0JpZ1VJbnQ2NChqc1Byb3BlcnR5VmFsdWUpKTsKKyAgICBp
ZiAoanNQcm9wZXJ0eVZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBtYWtlT2JqZWN0
SWRlbnRpZmllcjxPYmplY3RJZGVudGlmaWVyVHlwZT4oanNQcm9wZXJ0eVZhbHVlLmFzTnVtYmVy
KCkpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBib29sIGVuY29kZVJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGpz
T2JqZWN0LCBKU0M6OkNhdGNoU2NvcGUmIHNjb3BlKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9
IGdldE9iamVjdElkZW50aWZpZXJGcm9tUHJvcGVydHk8UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXJUeXBlPihnbG9iYWxPYmplY3QsIGpzT2JqZWN0LCAiaWRlbnRpZmllciJfcywgc2NvcGUpOwor
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBq
c1NlbWFwaG9yZSA9IGpzT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCAic2VtYXBob3JlIl9zKSk7CisgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBzZW1h
cGhvcmVPYmplY3QgPSBtYWtlUmVmUHRyKEpTSVBDU2VtYXBob3JlOjp0b1dyYXBwZWQodG9SZWYo
Z2xvYmFsT2JqZWN0KSwgdG9SZWYoanNTZW1hcGhvcmUpKSk7CisgICAgaWYgKCFzZW1hcGhvcmVP
YmplY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gcGFnZVByb3h5SUQgPSBn
ZXRPYmplY3RJZGVudGlmaWVyRnJvbVByb3BlcnR5PFdlYlBhZ2VQcm94eUlkZW50aWZpZXJUeXBl
PihnbG9iYWxPYmplY3QsIGpzT2JqZWN0LCAicGFnZVByb3h5SUQiX3MsIHNjb3BlKTsKKyAgICBp
ZiAoIXBhZ2VQcm94eUlEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHBhZ2VJ
RCA9IGdldE9iamVjdElkZW50aWZpZXJGcm9tUHJvcGVydHk8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXJUeXBlPihnbG9iYWxPYmplY3QsIGpzT2JqZWN0LCAicGFnZUlEIl9zLCBzY29wZSk7CisgICAg
aWYgKCFwYWdlSUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc2VtYXBob3Jl
ID0gc2VtYXBob3JlT2JqZWN0LT5leGNoYW5nZSgpOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycyB7ICppZGVudGlmaWVyLCBXVEZNb3ZlKHNl
bWFwaG9yZSksICpwYWdlUHJveHlJRCwgKnBhZ2VJRCB9OworICAgIGVuY29kZXIgPDwgcGFyYW1l
dGVyczsKKyAgICBzZW1hcGhvcmVPYmplY3QtPmV4Y2hhbmdlKFdURk1vdmUocGFyYW1ldGVycy5y
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlm
CisKIHN0YXRpYyBib29sIGVuY29kZUFyZ3VtZW50KElQQzo6RW5jb2RlciYsIEpTSVBDJiwgSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiBzdHJ1Y3Qg
VmVjdG9yRW5jb2RlSGVscGVyIHsKQEAgLTQ3NSw2ICs2NjUsMTYgQEAgc3RhdGljIGJvb2wgZW5j
b2RlQXJndW1lbnQoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBKU0lQQyYganNJUEMsIEpTQ29udGV4
dFJlZiBjb24KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorICAgIGlmICh0eXBlID09ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzIikgeworICAgICAgICBpZiAoIWVuY29kZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMoZW5jb2RlciwgZ2xvYmFsT2JqZWN0LCBqc09iamVjdCwgc2NvcGUp
KSB7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKGNvbnRleHQsICJG
YWlsZWQgdG8gY29udmVydCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICh0eXBlID09ICJGcmFtZUluZm9EYXRh
IikgewogICAgICAgICBhdXRvIHdlYkZyYW1lID0gbWFrZVJlZlB0cihqc0lQQy53ZWJGcmFtZSgp
KTsKICAgICAgICAgaWYgKCF3ZWJGcmFtZSkgewpAQCAtNzYwLDYgKzk2MCwxMSBAQCBKU1ZhbHVl
UmVmIEpTSVBDOjpzZW5kU3luY01lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmLCBKU09iamVjdFJlZgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KIAorSlNWYWx1ZVJlZiBKU0lQQzo6Y3JlYXRlU2VtYXBob3JlKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICByZXR1cm4gSlNJUENTZW1hcGhvcmU6OmNyZWF0ZSgpLT5jcmVhdGVKU1dy
YXBwZXIoY29udGV4dCk7Cit9CisKIEpTVmFsdWVSZWYgSlNJUEM6OnZpc2l0ZWRMaW5rU3RvcmVJ
RChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICByZXR1cm4gcmV0cmlldmVJRChjb250
ZXh0LCB0aGlzT2JqZWN0LCBleGNlcHRpb24sIFtdKEpTSVBDJiB3cmFwcGVkKSB7CkBAIC0xMDE3
LDQgKzEyMjIsMjMgQEAgdm9pZCBpbmplY3QoV2ViUGFnZSYgd2ViUGFnZSwgV2ViRnJhbWUmIHdl
YkZyYW1lLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmIHdvcmwKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0ZTw+CitKU0M6OkpTVmFsdWUganNW
YWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSVBDOjpTZW1hcGhvcmUmJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFs
U3RyaW5nKHZtLCAiU2VtYXBob3JlIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTQzo6SlNWYWx1ZSgpKTsKKyAgICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwg
V2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlKFdURk1vdmUodmFs
dWUpKS0+Y3JlYXRlSlNXcmFwcGVyKHRvUmVmKGdsb2JhbE9iamVjdCkpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3Mp
LCBqc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUo
KSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSVBDCisKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhj
OTMyMzA2NzZkNTMwNjJhMmFjNDk3OWRjOTVhNTAxMDdhN2JkNDkuLmNiY2NiMjEyZWY0ZDhmNzJk
YWZkZDRjYmY2YTY1NDdlNmZhM2Y0NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNS0wNyAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBJUEMgdGVzdGluZyBBUEkgc2hvdWxk
IGhhdmUgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGFuZCByZWNlaXZlIElQQzo6U2VtYXBob3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1MzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgQWRkZWQgdGVzdHMg
dG8gbWFrZSBzdXJlIElQQyB0ZXN0aW5nIEFQSSBhbGxvd3MgY3JlYXRpb24gb2YgYSBzZW1hcGhv
cmUsCisgICAgICAgIGFuZCByZWNlaXZpbmcgb25lIGFzIGEgcmVwbHkgdG8gYW4gSVBDIG1lc3Nh
Z2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lQQ1Rlc3Rp
bmdBUEkubW06CisgICAgICAgIChJUENUZXN0aW5nQVBJLkNhblJlY2VpdmVJUENTZW1hcGhvcmUp
OiBBZGRlZC4KKyAgICAgICAgKElQQ1Rlc3RpbmdBUEkuQ2FuQ3JlYXRlSVBDU2VtYXBob3JlKTog
QWRkZWQuCisKIDIwMjEtMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWdyZXNzaW9uKHIyNTQzODk/KSBuYXZpZ2F0b3IubGFuZ3VhZ2VzIHJldHVybnMg
YWxsIGxvd2VyY2FzZSBsYW5ndWFnZXMgZm9yIHBvcnRzIHVzaW5nIENGCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW0KaW5k
ZXggMzJiNWVkM2U1ZTZkMGZiYWM4MTA3MDk0NzAzZDMyZDNhZmQ5OWU0Ny4uOWM3MDk0N2MwYTJj
ODlmN2Q5YTIxYmRhY2U1N2M3ZjgwNzU3ODQ5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JUENUZXN0aW5nQVBJLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSVBDVGVzdGluZ0FQSS5tbQpAQCAtMjA5LDggKzIw
OSw0MyBAQCBURVNUKElQQ1Rlc3RpbmdBUEksIENhblNlbmRJbnZhbGlkQXN5bmNNZXNzYWdlVG9H
UFVQcm9jZXNzV2l0aG91dFRlcm1pbmF0aW9uKQogICAgIEVYUEVDVF9TVFJFUShbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmVzdWx0LmFyZ3VtZW50c1swXS50eXBlIl0u
VVRGOFN0cmluZywgImJvb2wiKTsKICAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAInJlc3VsdC5hcmd1bWVudHNbMF0udmFsdWUiXS5ib29sVmFs
dWUpOwogfQorCitURVNUKElQQ1Rlc3RpbmdBUEksIENhblJlY2VpdmVJUENTZW1hcGhvcmUpCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhJUENUZXN0aW5nQVBJKCk7CisK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0lQQ1Rlc3RpbmdBUElEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwor
CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAIjwhRE9DVFlQRSBodG1sPjxzY3JpcHQ+IgorICAgICAgICAiY29uc3Qgc2VtYXBob3Jl
ID0gSVBDLmNyZWF0ZVNlbWFwaG9yZSgpOyIKKyAgICAgICAgIklQQy5zZW5kTWVzc2FnZSgnR1BV
JywgMCwgSVBDLm1lc3NhZ2VzLkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NfQ3JlYXRlUmVuZGVy
aW5nQmFja2VuZC5uYW1lLCIKKyAgICAgICAgIiAgICBbe3R5cGU6ICdSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJywgJ2lkZW50aWZpZXInOiAxMjMsIHNlbWFwaG9yZSwg
J3BhZ2VQcm94eUlEJzogSVBDLndlYlBhZ2VQcm94eUlELCAncGFnZUlEJzogSVBDLnBhZ2VJRH1d
KTsiCisgICAgICAgICJjb25zdCByZXN1bHQgPSBJUEMuc2VuZFN5bmNNZXNzYWdlKCdHUFUnLCAx
MjMsIElQQy5tZXNzYWdlcy5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kX1NlbWFwaG9yZUZvckdldElt
YWdlRGF0YS5uYW1lLCAxMDAsIFtdKTsiCisgICAgICAgICJzZW1hcGhvcmUuc2lnbmFsKCk7Igor
ICAgICAgICAiYWxlcnQocmVzdWx0LmFyZ3VtZW50cy5sZW5ndGggKyAnOicgKyByZXN1bHQuYXJn
dW1lbnRzWzBdLnR5cGUgKyAnOicgKyByZXN1bHQuYXJndW1lbnRzWzBdLnZhbHVlLndhaXRGb3Io
MTAwKSk7IgorICAgICAgICAiPC9zY3JpcHQ+Il07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9TVFJFUShbYWxlcnRNZXNzYWdlIFVURjhTdHJpbmdd
LCAiMTpTZW1hcGhvcmU6ZmFsc2UiKTsKK30KICNlbmRpZgogCitURVNUKElQQ1Rlc3RpbmdBUEks
IENhbkNyZWF0ZUlQQ1NlbWFwaG9yZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJW
aWV3V2l0aElQQ1Rlc3RpbmdBUEkoKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
SVBDVGVzdGluZ0FQSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+PHNjcmlwdD5h
bGVydChJUEMuY3JlYXRlU2VtYXBob3JlKCkud2FpdEZvcigxMDApKTs8L3NjcmlwdD4iXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX0ZBTFNFKFth
bGVydE1lc3NhZ2UgYm9vbFZhbHVlXSk7Cit9CisKIFRFU1QoSVBDVGVzdGluZ0FQSSwgRGVjb2Rl
c1JlcGx5QXJndW1lbnRzRm9yUHJvbXB0KQogewogICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdl
YlZpZXdXaXRoSVBDVGVzdGluZ0FQSSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Lnhjd29ya3NwYWNl
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZSBiL1dlYktpdC54Y3dv
cmtzcGFjZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUKaW5kZXgg
NTA2NjI3NTAxNzYxM2E3ZDg4YmU0MWMyMWMyMGQyN2Q5NzE5OGRmYS4uODI5OGYwNTFhYTdmOWFk
MzJmNGIwNzk5NTRlMDk2ODEzMGQ4MzJiZiAxMDA2NDQKLS0tIGEvV2ViS2l0Lnhjd29ya3NwYWNl
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkKKysrIGIvV2ViS2l0
Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkK
QEAgLTEyNyw4ICsxMjcsOCBAQAogICAgICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQogICAg
ICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgogICAgICAgICAgICAg
ICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICIxQTUwREIzODExMEEzQzEzMDAwRDNGRTUiCi0gICAg
ICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIkFsbCIKLSAgICAgICAgICAgICAgIEJsdWVwcmlu
dE5hbWUgPSAiQWxsIgorICAgICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJGcmFtZXdvcmsg
JmFtcDsgWFBDIFNlcnZpY2VzIgorICAgICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJGcmFt
ZXdvcmsgJmFtcDsgWFBDIFNlcnZpY2VzIgogICAgICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRh
aW5lciA9ICJjb250YWluZXI6U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qIj4KICAgICAg
ICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgogICAgICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428037</attachid>
            <date>2021-05-07 14:30:33 -0700</date>
            <delta_ts>2021-05-07 14:32:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-225537-20210507143033.patch</filename>
            <type>text/plain</type>
            <size>24764</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlYWQyMmI5ZGJlMTM3Njlj
NjMzMzdiMzQ2ZDZmMjg0MjUwMmEyNmIuLmVjYjJmODg1MDlhOTM1NWQ3NDM0MmE1NGQ1N2ViY2U0
NmZmY2IzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDUtMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHRlc3RpbmcgQVBJIHNob3Vs
ZCBoYXZlIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBhbmQgcmVjZWl2ZSBJUEM6OlNlbWFwaG9yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyB0aGUgY2FwYWJpbGl0eSB0byBjcmVhdGUgSVBDOjpTZW1hcGhvcmUgZm9yIElQQyB0ZXN0
aW5nIHB1cnBvc2VzLgorICAgICAgICBJdCBhZGRzIElQQy5jcmVhdGVTZW1hcGhvcmUgd2hpY2gg
Y3JlYXRlcyBhIEphdmFTY3JpcHQgb2JqZWN0IHJlcHJlc2VudGluZyBhIHNlbWFwaG9yZQorICAg
ICAgICB3aXRoIHNpZ25hbCBhbmQgd2FpdEZvciBtZXRob2RzIGxpa2UgSVBDOjpTZW1hcGhvcmUg
YnV0IHdhaXRGb3IgdGFraW5nIG1pbGxpc2Vjb25kcworICAgICAgICB0byBiZSBjb25zaXN0ZW50
IHdpdGggb3RoZXIgSmF2YVNjcmlwdCBBUElzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBh
ZGRzIHRoZSBzdXBwb3J0IGZvciBlbmNvZGluZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzCisgICAgICAgIHRvIGZhY2lsaXRhdGUgY3JlYXRpbmcgYSByZW1vdGUgcmVu
ZGVyaW5nIGJhY2tlbmQgZHVyaW5nIElQQyB0ZXN0aW5nLgorCisgICAgICAgIFRlc3RzOiBUZXN0
V2ViS2l0QVBJLklQQ1Rlc3RpbmdBUEkuQ2FuUmVjZWl2ZUlQQ1NlbWFwaG9yZQorICAgICAgICAg
ICAgICAgVGVzdFdlYktpdEFQSS5JUENUZXN0aW5nQVBJLkNhbkNyZWF0ZUlQQ1NlbWFwaG9yZQor
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHA6CisgICAgICAgIChJUEM6
OmpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZSk6IFRha2VzIHItdmFsdWUgcmVmZXJlbmNl
IHNpbmNlIElQQzo6U2VtYXBob3JlCisgICAgICAgIGRvZXNuJ3QgaGF2ZSBhIGNvcHkgY29uc3Ry
dWN0b3IuCisgICAgICAgICogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oOgorICAgICAgICAo
SVBDOjpqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUpOiBEaXR0by4gQWRkZWQgYSBzcGVj
aWFsaXphdGlvbiBmb3IgSVBDOjpTZW1hcGhvcmUuCisgICAgICAgIChJUEM6OnB1dEpTVmFsdWVG
b3JEZWNvZGVBcmd1bWVudEluQXJyYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENT
ZW1hcGhvcmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUENT
ZW1hcGhvcmU6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJ
OjpKU0lQQ1NlbWFwaG9yZTo6ZXhjaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBD
VGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OkpTSVBDU2VtYXBob3JlKTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OmNyZWF0ZVR5cGVFcnJvcik6IE1vdmVkIHVwLgor
ICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlSlNX
cmFwcGVyKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2Vt
YXBob3JlOjp3cmFwcGVyQ2xhc3MpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGlu
Z0FQSTo6SlNJUENTZW1hcGhvcmU6OnVud3JhcCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJ
UENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6dG9XcmFwcGVkKTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2VtYXBob3JlOjppbml0aWFsaXplKTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDU2VtYXBob3JlOjpmaW5h
bGl6ZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFw
aG9yZTo6c3RhdGljRnVuY3Rpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3Rp
bmdBUEk6OkpTSVBDU2VtYXBob3JlOjpzaWduYWwpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
SVBDVGVzdGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OndhaXRGb3IpOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUEM6OndyYXBwZXJDbGFzcyk6CisgICAgICAgIChX
ZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjpzdGF0aWNGdW5jdGlvbnMpOiBBZGRlZCBJUEMu
Y3JlYXRlU2VtYXBob3JlLgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0aW5nQVBJOjpnZXRPYmpl
Y3RJZGVudGlmaWVyRnJvbVByb3BlcnR5KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklQQ1Rl
c3RpbmdBUEk6OmVuY29kZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMp
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6ZW5jb2RlQXJndW1lbnQp
OiBBZGRlZCB0aGUgc3VwcG9ydCBmb3IgZW5jb2RpbmcKKyAgICAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBhcyBhbiBJUEMgYXJndW1lbnQuCisgICAgICAgIChX
ZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjpjcmVhdGVTZW1hcGhvcmUpOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKTogRGVmaW5lZCB0aGUg
YWZvcmVtZW50aW9uZWQgc3BlY2lhbGl6YXRpb24gZm9yCisgICAgICAgIElQQzo6U2VtYXBob3Jl
IHdpdGggSVBDVGVzdGluZ0FQSSAuCisKIDIwMjEtMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXRyeSBhc3luY2hyb25vdXNseSBpbiBXZWJQcm9jZXNz
UG9vbDo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSBpbiBjYXNlIG9mIGZhaWx1cmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCmluZGV4IGIyMWYzOGVhMTRk
MWYwOWJhYTc4ODExZmE1MjVhNmU2OWRmMjEzNzYuLjBiZTM5NWMxYzM3YzJmZTdjYjNjYzNhNWI0
OTU2MmFmYzczOWU2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pT
SVBDQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5k
aW5nLmNwcApAQCAtNTEsMTkgKzUxLDE5IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUganNWYWx1ZUZv
ckRlY29kZWRTdHJpbmdBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsCiB9CiAK
IHRlbXBsYXRlPD4KLUpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlKQor
SlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZyYmIHZhbHVlKQogewogICAgIHJldHVybiBqc1Zh
bHVlRm9yRGVjb2RlZFN0cmluZ0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIlN0
cmluZyJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KLUpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2Rl
ZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBV
UkwmIHZhbHVlKQorSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVSTCYmIHZhbHVlKQogewogICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZFN0cmluZ0FyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCB2
YWx1ZS5zdHJpbmcoKSwgIlVSTCJfcyk7CiB9CiAKIHRlbXBsYXRlPD4KLUpTQzo6SlNWYWx1ZSBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdmFsdWUpCitKU0M6OkpT
VmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB2YWx1ZSkKIHsKICAg
ICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRTdHJpbmdBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVj
dCwgdmFsdWUuc3RyaW5nKCksICJSZWdpc3RyYWJsZURvbWFpbiJfcyk7CiB9CkBAIC0xODMsMTMg
KzE4MywxMyBAQCBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJlY3QoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjbwogfQogCiB0ZW1wbGF0ZTw+Ci1KU0M6
OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmFsdWUpCitKU0M6OkpT
VmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgV2ViQ29yZTo6SW50UmVjdCYmIHZhbHVlKQogewogICAgIHJldHVybiBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50UmVjdChnbG9iYWxPYmplY3QsIHZhbHVlLCAiSW50UmVj
dCIpOwogfQogCiB0ZW1wbGF0ZTw+Ci1KU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1
bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB2YWx1ZSkKK0pTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3Vt
ZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBXZWJDb3JlOjpGbG9h
dFJlY3QmJiB2YWx1ZSkKIHsKICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFJl
Y3QoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIkZsb2F0UmVjdCIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaAppbmRleCA4MjUwYzRiM2Y2MmE2ZWNjMjQzOGE3Y2Fi
ZmExOGFkZjJmNWEwNTMwLi5lN2JhYzYzNDQ2NWQ3Y2Q4OWM1N2M2YWM4NDFiZjA2ZTdjYzZkY2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaApAQCAtNTMsMTUg
KzUzLDE5IEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3BhY2UgSVBDIHsKIAor
Y2xhc3MgU2VtYXBob3JlOworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90
PCFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlICYmICFzdGQ6OmlzX2VudW08VD46OnZhbHVl
PiogPSBudWxscHRyPgotSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVCYpCitKU0M6OkpTVmFsdWUganNWYWx1ZUZv
ckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBUJiYpCiB7CiAgICAg
cmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIH0KIAotdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUg
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmKTsKLXRlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJn
dW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVJMJik7Ci10ZW1wbGF0ZTw+
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7Cit0ZW1wbGF0ZTw+
IEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIFN0cmluZyYmKTsKK3RlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgVVJMJiYpOwordGVtcGxh
dGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKwordGVtcGxhdGU8
PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBJUEM6OlNlbWFwaG9yZSYmKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgog
SlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgVCkKQEAgLTg5LDE2ICs5MywxNiBAQCB0ZW1wbGF0ZTw+IEpTQzo6SlNWYWx1ZSBq
c1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIHVpbgog
dGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBzaXplX3QpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VT4mIHZhbHVlKQorSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE9iamVjdElkZW50aWZpZXI8VT4mJiB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgdmFsdWUu
dG9VSW50NjQoKSk7CiB9CiAKLXRlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNv
ZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwotdGVtcGxhdGU8PiBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVu
dFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsK
K3RlbXBsYXRlPD4gSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgV2ViQ29yZTo6SW50UmVjdCYmKTsKK3RlbXBsYXRlPD4gSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgV2ViQ29yZTo6RmxvYXRSZWN0JiYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotSlND
OjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wdGlvblNldDxVPiYgdmFsdWUpCitKU0M6OkpTVmFs
dWUganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgT3B0aW9uU2V0PFU+JiYgdmFsdWUpCiB7ICAgIAogICAgIGF1dG8mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKQEAgLTEyOSw3ICsxMzMsNyBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IHB1dEpTVmFs
dWVGb3JEZWNvZGVBcmd1bWVudEluQXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCogZwogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGpzVmFs
dWUgPSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50VmFsdWUoZ2xvYmFsT2JqZWN0LCAqdmFsdWUp
OworICAgIGF1dG8ganNWYWx1ZSA9IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShnbG9i
YWxPYmplY3QsIFdURk1vdmUoKnZhbHVlKSk7CiAgICAgaWYgKGpzVmFsdWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4ganNWYWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBkNDk1ZjI4ODUwZjBlNmNmYTBhNmI2
MzliZjRmMDBjNWIwOTlmNWU5Li41NjFjYTZmMTQxNGY1OGUwMjcyOGUwZDJhNGIyNjMwMGVkMDMy
MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcApAQCAtMzEsOCArMzEsMTEgQEAKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiSlNJUENCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtNTAsMTEgKzUz
LDQ2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1l
c3BhY2UgSVBDVGVzdGluZ0FQSSB7CiAKK2NsYXNzIEpTSVBDU2VtYXBob3JlIDogcHVibGljIFJl
ZkNvdW50ZWQ8SlNJUENTZW1hcGhvcmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEpTSVBD
U2VtYXBob3JlPiBjcmVhdGUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUgPSB7IH0pCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU0lQQ1NlbWFwaG9yZShXVEZNb3ZlKHNl
bWFwaG9yZSkpKTsKKyAgICB9CisKKyAgICBKU09iamVjdFJlZiBjcmVhdGVKU1dyYXBwZXIoSlND
b250ZXh0UmVmKTsKKworICAgIHN0YXRpYyBKU0lQQ1NlbWFwaG9yZSogdG9XcmFwcGVkKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZik7CisKKyAgICBJUEM6OlNlbWFwaG9yZSBleGNoYW5nZShJUEM6
OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKG1fc2VtYXBob3JlLCBXVEZNb3ZlKHNlbWFwaG9yZSkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBKU0lQQ1NlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKKyAg
ICAgICAgOiBtX3NlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpCisgICAgeyB9CisKKyAgICBz
dGF0aWMgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKTsKKyAgICBzdGF0aWMgSlNJUENTZW1hcGhv
cmUqIHVud3JhcChKU09iamVjdFJlZik7CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKKyAgICBzdGF0aWMgdm9pZCBmaW5hbGl6ZShKU09iamVj
dFJlZik7CisKKyAgICBzdGF0aWMgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rp
b25zKCk7CisKKyAgICBzdGF0aWMgSlNWYWx1ZVJlZiBzaWduYWwoSlNDb250ZXh0UmVmLCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAg
c3RhdGljIEpTVmFsdWVSZWYgd2FpdEZvcihKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKworICAgIElQQzo6U2VtYXBo
b3JlIG1fc2VtYXBob3JlOworfTsKKwogY2xhc3MgSlNJUEM7CiAKIGNsYXNzIEpTTWVzc2FnZUxp
c3RlbmVyIGZpbmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6TWVzc2FnZU9ic2VydmVyIHsK
QEAgLTEwNiw2ICsxNDQsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHNlbmRN
ZXNzYWdlKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHNlbmRTeW5jTWVzc2Fn
ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKTsKIAorICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNyZWF0ZVNlbWFwaG9yZShK
U0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKTsKKwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHZpc2l0ZWRMaW5rU3RvcmVJRChK
U0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKTsKICAgICBzdGF0aWMgSlNWYWx1ZVJlZiB3ZWJQYWdlUHJveHlJRChKU0NvbnRleHRSZWYs
IEpTT2JqZWN0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKICAgICBz
dGF0aWMgSlNWYWx1ZVJlZiBzZXNzaW9uSUQoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNT
dHJpbmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CkBAIC0xMjAsMTMgKzE2MCwxMjUgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8VW5pcXVlUmVmPEpTTWVzc2FnZUxpc3RlbmVyPj4gbV9tZXNz
YWdlTGlzdGVuZXJzOwogfTsKIAorc3RhdGljIEpTVmFsdWVSZWYgY3JlYXRlVHlwZUVycm9yKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayh0b0pTKGNvbnRleHQpLT52bSgpKTsKKyAgICByZXR1cm4gdG9SZWYo
SlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0KSwgbWVzc2FnZSkpOworfQorCitKU09i
amVjdFJlZiBKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlSlNXcmFwcGVyKEpTQ29udGV4dFJlZiBjb250
ZXh0KQoreworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlMoY29udGV4dCk7CisgICAgYXV0
byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIEpTT2Jq
ZWN0UmVmIHdyYXBwZXJPYmplY3QgPSBKU09iamVjdE1ha2UodG9HbG9iYWxSZWYoZ2xvYmFsT2Jq
ZWN0KSwgd3JhcHBlckNsYXNzKCksIHRoaXMpOworICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7
CisgICAgcmV0dXJuIHdyYXBwZXJPYmplY3Q7Cit9CisKK0pTQ2xhc3NSZWYgSlNJUENTZW1hcGhv
cmU6OndyYXBwZXJDbGFzcygpCit7CisgICAgc3RhdGljIEpTQ2xhc3NSZWYganNDbGFzczsKKyAg
ICBpZiAoIWpzQ2xhc3MpIHsKKyAgICAgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbiA9
IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OworICAgICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9
ICJTZW1hcGhvcmUiOworICAgICAgICBkZWZpbml0aW9uLnBhcmVudENsYXNzID0gbnVsbHB0cjsK
KyAgICAgICAgZGVmaW5pdGlvbi5zdGF0aWNWYWx1ZXMgPSBudWxscHRyOworICAgICAgICBkZWZp
bml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9IHN0YXRpY0Z1bmN0aW9ucygpOworICAgICAgICBkZWZp
bml0aW9uLmluaXRpYWxpemUgPSBpbml0aWFsaXplOworICAgICAgICBkZWZpbml0aW9uLmZpbmFs
aXplID0gZmluYWxpemU7CisgICAgICAgIGpzQ2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0
aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIGpzQ2xhc3M7Cit9CisKK2lubGluZSBKU0lQQ1NlbWFw
aG9yZSogSlNJUENTZW1hcGhvcmU6OnVud3JhcChKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEpTSVBDU2VtYXBob3JlKj4oSlNPYmplY3RHZXRQcml2YXRlKG9i
amVjdCkpOworfQorCitKU0lQQ1NlbWFwaG9yZSogSlNJUENTZW1hcGhvcmU6OnRvV3JhcHBlZChK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKK3sKKyAgICBpZiAoIWNvbnRl
eHQgfHwgIXZhbHVlIHx8ICFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGNvbnRleHQsIHZhbHVlLCB3
cmFwcGVyQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB1bndy
YXAoSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHZhbHVlLCAwKSk7Cit9CisKK3ZvaWQgSlNJUENT
ZW1hcGhvcmU6OmluaXRpYWxpemUoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmplY3QpCit7
CisgICAgdW53cmFwKG9iamVjdCktPnJlZigpOworfQorCit2b2lkIEpTSVBDU2VtYXBob3JlOjpm
aW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgdW53cmFwKG9iamVjdCktPmRlcmVm
KCk7Cit9CisKK2NvbnN0IEpTU3RhdGljRnVuY3Rpb24qIEpTSVBDU2VtYXBob3JlOjpzdGF0aWNG
dW5jdGlvbnMoKQoreworICAgIHN0YXRpYyBjb25zdCBKU1N0YXRpY0Z1bmN0aW9uIGZ1bmN0aW9u
c1tdID0geworICAgICAgICB7ICJzaWduYWwiLCBzaWduYWwsIGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfSwKKyAgICAgICAgeyAi
d2FpdEZvciIsIHdhaXRGb3IsIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfSwKKyAgICAgICAgeyAwLCAwLCAwIH0KKyAgICB9Owor
ICAgIHJldHVybiBmdW5jdGlvbnM7Cit9CisKK0pTVmFsdWVSZWYgSlNJUENTZW1hcGhvcmU6OnNp
Z25hbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9K
Uyhjb250ZXh0KTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdC0+dm0o
KSk7CisgICAgYXV0byBpc0lQQ1NlbWFwaG9yZSA9IG1ha2VSZWZQdHIodG9XcmFwcGVkKGNvbnRl
eHQsIHRoaXNPYmplY3QpKTsKKyAgICBpZiAoIWlzSVBDU2VtYXBob3JlKSB7CisgICAgICAgICpl
eGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoY29udGV4dCwgIldyb25nIHR5cGUiX3MpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgfQorCisgICAg
aXNJUENTZW1hcGhvcmUtPm1fc2VtYXBob3JlLnNpZ25hbCgpOworCisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitKU1ZhbHVlUmVmIEpTSVBDU2VtYXBob3Jl
Ojp3YWl0Rm9yKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSB0b0pTKGNvbnRleHQpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0
LT52bSgpKTsKKyAgICBhdXRvIGlzSVBDU2VtYXBob3JlID0gbWFrZVJlZlB0cih0b1dyYXBwZWQo
Y29udGV4dCwgdGhpc09iamVjdCkpOworICAgIGlmICghaXNJUENTZW1hcGhvcmUpIHsKKyAgICAg
ICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihjb250ZXh0LCAiV3JvbmcgdHlwZSJfcyk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CisK
KyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpIHsKKyAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0
ZVR5cGVFcnJvcihjb250ZXh0LCAiTXVzdCBzcGVjaWZ5IHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vj
b25kcyBhcyB0aGUgZmlyc3QgYXJndW1lbnQiX3MpOworICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgfQorCisgICAgYXV0byBqc1ZhbHVlID0gdG9KUyhn
bG9iYWxPYmplY3QsIGFyZ3VtZW50c1swXSk7CisgICAgU2Vjb25kcyB0aW1lb3V0OworICAgIGlm
IChqc1ZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgZG91YmxlIG1pbGxpc2Vjb25kcyA9IGpz
VmFsdWUuYXNOdW1iZXIoKTsKKyAgICAgICAgaWYgKHN0ZDo6aXNmaW5pdGUobWlsbGlzZWNvbmRz
KSAmJiBtaWxsaXNlY29uZHMgPiAwKQorICAgICAgICAgICAgdGltZW91dCA9IFNlY29uZHM6OmZy
b21NaWxsaXNlY29uZHMobWlsbGlzZWNvbmRzKTsKKyAgICB9CisgICAgaWYgKCF0aW1lb3V0KSB7
CisgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoY29udGV4dCwgIlRpbWVvdXQg
bXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciJfcyk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGlzSVBDU2Vt
YXBob3JlLT5tX3NlbWFwaG9yZS53YWl0Rm9yKHRpbWVvdXQpOworCisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlQm9vbGVhbihjb250ZXh0LCByZXN1bHQpOworfQorCiBKU0NsYXNzUmVmIEpTSVBDOjp3
cmFwcGVyQ2xhc3MoKQogewogICAgIHN0YXRpYyBKU0NsYXNzUmVmIGpzQ2xhc3M7CiAgICAgaWYg
KCFqc0NsYXNzKSB7CiAgICAgICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb24gPSBrSlND
bGFzc0RlZmluaXRpb25FbXB0eTsKICAgICAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSAiSVBD
IjsKLSAgICAgICAgZGVmaW5pdGlvbi5wYXJlbnRDbGFzcyA9IDA7CisgICAgICAgIGRlZmluaXRp
b24ucGFyZW50Q2xhc3MgPSBudWxscHRyOwogICAgICAgICBkZWZpbml0aW9uLnN0YXRpY1ZhbHVl
cyA9IHN0YXRpY1ZhbHVlcygpOwogICAgICAgICBkZWZpbml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9
IHN0YXRpY0Z1bmN0aW9ucygpOwogICAgICAgICBkZWZpbml0aW9uLmluaXRpYWxpemUgPSBpbml0
aWFsaXplOwpAQCAtMTY1LDYgKzMxNyw3IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIEpTSVBD
OjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJhZGRPdXRnb2luZ01lc3NhZ2VMaXN0ZW5l
ciIsIGFkZE91dGdvaW5nTWVzc2FnZUxpc3RlbmVyLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IH0sCiAgICAgICAgIHsgInNlbmRN
ZXNzYWdlIiwgc2VuZE1lc3NhZ2UsIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfSwKICAgICAgICAgeyAic2VuZFN5bmNNZXNzYWdl
Iiwgc2VuZFN5bmNNZXNzYWdlLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IH0sCisgICAgICAgIHsgImNyZWF0ZVNlbWFwaG9yZSIs
IGNyZWF0ZVNlbWFwaG9yZSwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAg
ICAgcmV0dXJuIGZ1bmN0aW9uczsKQEAgLTE5NywxMiArMzUwLDYgQEAgc3RhdGljIE9wdGlvbmFs
PHVpbnQ2NF90PiBjb252ZXJ0VG9VaW50NjQoSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCiAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgY3JlYXRlVHlwZUVycm9y
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayh0b0pTKGNvbnRleHQpLT52bSgpKTsKLSAgICByZXR1cm4gdG9S
ZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0KSwgbWVzc2FnZSkpOwotfQotCiBz
dGF0aWMgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gcHJvY2Vzc1RhcmdldEZyb21Bcmd1bWVudChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWYgdmFsdWVSZWYsIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwpAQCAtMzYzLDYgKzUxMCw0OSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRlZ3JhbFR5cGU+IGJvb2wgZW5jb2RlTnVtZXJpY1R5cGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyLCBKUwogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQordGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdElkZW50aWZpZXJUeXBlPgorT3B0aW9uYWw8
T2JqZWN0SWRlbnRpZmllcjxPYmplY3RJZGVudGlmaWVyVHlwZT4+IGdldE9iamVjdElkZW50aWZp
ZXJGcm9tUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
T2JqZWN0KiBqc09iamVjdCwgQVNDSUlMaXRlcmFsIHByb3BlcnR5TmFtZSwgSlNDOjpDYXRjaFNj
b3BlJiBzY29wZSkKK3sKKyAgICBhdXRvIGpzUHJvcGVydHlWYWx1ZSA9IGpzT2JqZWN0LT5nZXQo
Z2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT52
bSgpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKGpzUHJvcGVydHlWYWx1ZS5pc0JpZ0ludCgp
KSAKKyAgICAgICAgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPE9iamVjdElkZW50aWZpZXJU
eXBlPihKU0M6OkpTQmlnSW50Ojp0b0JpZ1VJbnQ2NChqc1Byb3BlcnR5VmFsdWUpKTsKKyAgICBp
ZiAoanNQcm9wZXJ0eVZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBtYWtlT2JqZWN0
SWRlbnRpZmllcjxPYmplY3RJZGVudGlmaWVyVHlwZT4oanNQcm9wZXJ0eVZhbHVlLmFzTnVtYmVy
KCkpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBib29sIGVuY29kZVJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGpz
T2JqZWN0LCBKU0M6OkNhdGNoU2NvcGUmIHNjb3BlKQoreworICAgIGF1dG8gaWRlbnRpZmllciA9
IGdldE9iamVjdElkZW50aWZpZXJGcm9tUHJvcGVydHk8UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXJUeXBlPihnbG9iYWxPYmplY3QsIGpzT2JqZWN0LCAiaWRlbnRpZmllciJfcywgc2NvcGUpOwor
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBq
c1NlbWFwaG9yZSA9IGpzT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCAic2VtYXBob3JlIl9zKSk7CisgICAgaWYg
KHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBzZW1h
cGhvcmVPYmplY3QgPSBtYWtlUmVmUHRyKEpTSVBDU2VtYXBob3JlOjp0b1dyYXBwZWQodG9SZWYo
Z2xvYmFsT2JqZWN0KSwgdG9SZWYoanNTZW1hcGhvcmUpKSk7CisgICAgaWYgKCFzZW1hcGhvcmVP
YmplY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gcGFnZVByb3h5SUQgPSBn
ZXRPYmplY3RJZGVudGlmaWVyRnJvbVByb3BlcnR5PFdlYlBhZ2VQcm94eUlkZW50aWZpZXJUeXBl
PihnbG9iYWxPYmplY3QsIGpzT2JqZWN0LCAicGFnZVByb3h5SUQiX3MsIHNjb3BlKTsKKyAgICBp
ZiAoIXBhZ2VQcm94eUlEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHBhZ2VJ
RCA9IGdldE9iamVjdElkZW50aWZpZXJGcm9tUHJvcGVydHk8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXJUeXBlPihnbG9iYWxPYmplY3QsIGpzT2JqZWN0LCAicGFnZUlEIl9zLCBzY29wZSk7CisgICAg
aWYgKCFwYWdlSUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc2VtYXBob3Jl
ID0gc2VtYXBob3JlT2JqZWN0LT5leGNoYW5nZSgpOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVycyB7ICppZGVudGlmaWVyLCBXVEZNb3ZlKHNl
bWFwaG9yZSksICpwYWdlUHJveHlJRCwgKnBhZ2VJRCB9OworICAgIGVuY29kZXIgPDwgcGFyYW1l
dGVyczsKKyAgICBzZW1hcGhvcmVPYmplY3QtPmV4Y2hhbmdlKFdURk1vdmUocGFyYW1ldGVycy5y
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlm
CisKIHN0YXRpYyBib29sIGVuY29kZUFyZ3VtZW50KElQQzo6RW5jb2RlciYsIEpTSVBDJiwgSlND
b250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiBzdHJ1Y3Qg
VmVjdG9yRW5jb2RlSGVscGVyIHsKQEAgLTQ3NSw2ICs2NjUsMTYgQEAgc3RhdGljIGJvb2wgZW5j
b2RlQXJndW1lbnQoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBKU0lQQyYganNJUEMsIEpTQ29udGV4
dFJlZiBjb24KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorICAgIGlmICh0eXBlID09ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzIikgeworICAgICAgICBpZiAoIWVuY29kZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnMoZW5jb2RlciwgZ2xvYmFsT2JqZWN0LCBqc09iamVjdCwgc2NvcGUp
KSB7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKGNvbnRleHQsICJG
YWlsZWQgdG8gY29udmVydCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICh0eXBlID09ICJGcmFtZUluZm9EYXRh
IikgewogICAgICAgICBhdXRvIHdlYkZyYW1lID0gbWFrZVJlZlB0cihqc0lQQy53ZWJGcmFtZSgp
KTsKICAgICAgICAgaWYgKCF3ZWJGcmFtZSkgewpAQCAtNzYwLDYgKzk2MCwxMSBAQCBKU1ZhbHVl
UmVmIEpTSVBDOjpzZW5kU3luY01lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmLCBKU09iamVjdFJlZgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KIAorSlNWYWx1ZVJlZiBKU0lQQzo6Y3JlYXRlU2VtYXBob3JlKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICByZXR1cm4gSlNJUENTZW1hcGhvcmU6OmNyZWF0ZSgpLT5jcmVhdGVKU1dy
YXBwZXIoY29udGV4dCk7Cit9CisKIEpTVmFsdWVSZWYgSlNJUEM6OnZpc2l0ZWRMaW5rU3RvcmVJ
RChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICByZXR1cm4gcmV0cmlldmVJRChjb250
ZXh0LCB0aGlzT2JqZWN0LCBleGNlcHRpb24sIFtdKEpTSVBDJiB3cmFwcGVkKSB7CkBAIC0xMDE3
LDQgKzEyMjIsMjMgQEAgdm9pZCBpbmplY3QoV2ViUGFnZSYgd2ViUGFnZSwgV2ViRnJhbWUmIHdl
YkZyYW1lLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmIHdvcmwKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0ZTw+CitKU0M6OkpTVmFsdWUganNW
YWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSVBDOjpTZW1hcGhvcmUmJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNOb250cml2aWFs
U3RyaW5nKHZtLCAiU2VtYXBob3JlIikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTQzo6SlNWYWx1ZSgpKTsKKyAgICBhdXRvIGpzVmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwg
V2ViS2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRlKFdURk1vdmUodmFs
dWUpKS0+Y3JlYXRlSlNXcmFwcGVyKHRvUmVmKGdsb2JhbE9iamVjdCkpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidmFsdWUiX3Mp
LCBqc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUo
KSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSVBDCisKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhj
OTMyMzA2NzZkNTMwNjJhMmFjNDk3OWRjOTVhNTAxMDdhN2JkNDkuLmNiY2NiMjEyZWY0ZDhmNzJk
YWZkZDRjYmY2YTY1NDdlNmZhM2Y0NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNS0wNyAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBJUEMgdGVzdGluZyBBUEkgc2hvdWxk
IGhhdmUgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGFuZCByZWNlaXZlIElQQzo6U2VtYXBob3JlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1MzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgQWRkZWQgdGVzdHMg
dG8gbWFrZSBzdXJlIElQQyB0ZXN0aW5nIEFQSSBhbGxvd3MgY3JlYXRpb24gb2YgYSBzZW1hcGhv
cmUsCisgICAgICAgIGFuZCByZWNlaXZpbmcgb25lIGFzIGEgcmVwbHkgdG8gYW4gSVBDIG1lc3Nh
Z2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lQQ1Rlc3Rp
bmdBUEkubW06CisgICAgICAgIChJUENUZXN0aW5nQVBJLkNhblJlY2VpdmVJUENTZW1hcGhvcmUp
OiBBZGRlZC4KKyAgICAgICAgKElQQ1Rlc3RpbmdBUEkuQ2FuQ3JlYXRlSVBDU2VtYXBob3JlKTog
QWRkZWQuCisKIDIwMjEtMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWdyZXNzaW9uKHIyNTQzODk/KSBuYXZpZ2F0b3IubGFuZ3VhZ2VzIHJldHVybnMg
YWxsIGxvd2VyY2FzZSBsYW5ndWFnZXMgZm9yIHBvcnRzIHVzaW5nIENGCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lQQ1Rlc3RpbmdBUEkubW0KaW5k
ZXggMzJiNWVkM2U1ZTZkMGZiYWM4MTA3MDk0NzAzZDMyZDNhZmQ5OWU0Ny4uOWM3MDk0N2MwYTJj
ODlmN2Q5YTIxYmRhY2U1N2M3ZjgwNzU3ODQ5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JUENUZXN0aW5nQVBJLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSVBDVGVzdGluZ0FQSS5tbQpAQCAtMjA5LDggKzIw
OSw0MyBAQCBURVNUKElQQ1Rlc3RpbmdBUEksIENhblNlbmRJbnZhbGlkQXN5bmNNZXNzYWdlVG9H
UFVQcm9jZXNzV2l0aG91dFRlcm1pbmF0aW9uKQogICAgIEVYUEVDVF9TVFJFUShbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmVzdWx0LmFyZ3VtZW50c1swXS50eXBlIl0u
VVRGOFN0cmluZywgImJvb2wiKTsKICAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAInJlc3VsdC5hcmd1bWVudHNbMF0udmFsdWUiXS5ib29sVmFs
dWUpOwogfQorCitURVNUKElQQ1Rlc3RpbmdBUEksIENhblJlY2VpdmVJUENTZW1hcGhvcmUpCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhJUENUZXN0aW5nQVBJKCk7CisK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0lQQ1Rlc3RpbmdBUElEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwor
CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAIjwhRE9DVFlQRSBodG1sPjxzY3JpcHQ+IgorICAgICAgICAiY29uc3Qgc2VtYXBob3Jl
ID0gSVBDLmNyZWF0ZVNlbWFwaG9yZSgpOyIKKyAgICAgICAgIklQQy5zZW5kTWVzc2FnZSgnR1BV
JywgMCwgSVBDLm1lc3NhZ2VzLkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NfQ3JlYXRlUmVuZGVy
aW5nQmFja2VuZC5uYW1lLCIKKyAgICAgICAgIiAgICBbe3R5cGU6ICdSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJywgJ2lkZW50aWZpZXInOiAxMjMsIHNlbWFwaG9yZSwg
J3BhZ2VQcm94eUlEJzogSVBDLndlYlBhZ2VQcm94eUlELCAncGFnZUlEJzogSVBDLnBhZ2VJRH1d
KTsiCisgICAgICAgICJjb25zdCByZXN1bHQgPSBJUEMuc2VuZFN5bmNNZXNzYWdlKCdHUFUnLCAx
MjMsIElQQy5tZXNzYWdlcy5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kX1NlbWFwaG9yZUZvckdldElt
YWdlRGF0YS5uYW1lLCAxMDAsIFtdKTsiCisgICAgICAgICJzZW1hcGhvcmUuc2lnbmFsKCk7Igor
ICAgICAgICAiYWxlcnQocmVzdWx0LmFyZ3VtZW50cy5sZW5ndGggKyAnOicgKyByZXN1bHQuYXJn
dW1lbnRzWzBdLnR5cGUgKyAnOicgKyByZXN1bHQuYXJndW1lbnRzWzBdLnZhbHVlLndhaXRGb3Io
MTAwKSk7IgorICAgICAgICAiPC9zY3JpcHQ+Il07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9TVFJFUShbYWxlcnRNZXNzYWdlIFVURjhTdHJpbmdd
LCAiMTpTZW1hcGhvcmU6ZmFsc2UiKTsKK30KICNlbmRpZgogCitURVNUKElQQ1Rlc3RpbmdBUEks
IENhbkNyZWF0ZUlQQ1NlbWFwaG9yZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJW
aWV3V2l0aElQQ1Rlc3RpbmdBUEkoKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
SVBDVGVzdGluZ0FQSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+PHNjcmlwdD5h
bGVydChJUEMuY3JlYXRlU2VtYXBob3JlKCkud2FpdEZvcigxMDApKTs8L3NjcmlwdD4iXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX0ZBTFNFKFth
bGVydE1lc3NhZ2UgYm9vbFZhbHVlXSk7Cit9CisKIFRFU1QoSVBDVGVzdGluZ0FQSSwgRGVjb2Rl
c1JlcGx5QXJndW1lbnRzRm9yUHJvbXB0KQogewogICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdl
YlZpZXdXaXRoSVBDVGVzdGluZ0FQSSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>