<?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>159198</bug_id>
          
          <creation_ts>2016-06-28 00:40:11 -0700</creation_ts>
          <short_desc>some Watchpoints&apos; ::fireInternal method will call operations that might GC where the GC will cause the watchpoint itself to destruct</short_desc>
          <delta_ts>2019-05-02 16:22:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>malvika.editsoftdigital</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1205939</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-28 00:40:11 -0700</bug_when>
    <thetext>Watchpoints may lead to their own destruction under various scenarios where it’s not
safe for them to die. The solution is to prevent GC from happeneing in these scenarios.
Some watchpoints are smart enough to prevent GC from happening, but others have omitted
this necessary code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206074</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-28 10:41:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/26302360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206076</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-28 10:42:52 -0700</bug_when>
    <thetext>Does this mean that WatchpointSet::fireBlah should have a DeferGC in it, so that individual watchpoints don&apos;t have to do it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206078</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-28 10:48:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Does this mean that WatchpointSet::fireBlah should have a DeferGC in it, so
&gt; that individual watchpoints don&apos;t have to do it?

I think that&apos;s how we should do it. This seems like the least error prone way
to future proof new ::fireInternal implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206113</commentid>
    <comment_count>4</comment_count>
      <attachid>282265</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-28 12:11:58 -0700</bug_when>
    <thetext>Created attachment 282265
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206114</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-28 12:13:05 -0700</bug_when>
    <thetext>Attachment 282265 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/VariableWriteFireDetail.h:46:  The parameter name &quot;vm&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/ChangeLog:9:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/JavaScriptCore/bytecode/Watchpoint.h:320:  The parameter name &quot;vm&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206115</commentid>
    <comment_count>6</comment_count>
      <attachid>282265</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-28 12:19:33 -0700</bug_when>
    <thetext>Comment on attachment 282265
patch

I can dig it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206118</commentid>
    <comment_count>7</comment_count>
      <attachid>282267</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-28 12:23:23 -0700</bug_when>
    <thetext>Created attachment 282267
patch for landing if bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206120</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-28 12:26:30 -0700</bug_when>
    <thetext>Attachment 282267 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/VariableWriteFireDetail.h:46:  The parameter name &quot;vm&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/Watchpoint.h:320:  The parameter name &quot;vm&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206124</commentid>
    <comment_count>9</comment_count>
      <attachid>282269</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-28 12:44:24 -0700</bug_when>
    <thetext>Created attachment 282269
lets see what the bots think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206125</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-28 12:46:17 -0700</bug_when>
    <thetext>Attachment 282269 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/Watchpoint.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206130</commentid>
    <comment_count>11</comment_count>
      <attachid>282272</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-28 12:50:26 -0700</bug_when>
    <thetext>Created attachment 282272
lets see what the bots think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206178</commentid>
    <comment_count>12</comment_count>
      <attachid>282272</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-28 14:30:41 -0700</bug_when>
    <thetext>Comment on attachment 282272
lets see what the bots think

Clearing flags on attachment: 282272

Committed r202588: &lt;http://trac.webkit.org/changeset/202588&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206179</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-28 14:30:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282265</attachid>
            <date>2016-06-28 12:11:58 -0700</date>
            <delta_ts>2016-06-28 12:23:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>32204</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDE2LTA2LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IHNvbWUgV2F0Y2hwb2ludHMnIDo6ZmlyZUludGVybmFsIG1ldGhvZCB3aWxsIGNhbGwgb3BlcmF0
aW9ucyB0aGF0IG1pZ2h0IEdDIHdoZXJlIHRoZSBHQyB3aWxsIGNhdXNlIHRoZSB3YXRjaHBvaW50
IGl0c2VsZiB0byBkZXN0cnVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MTk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjMwMjM2MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXJpbmcgYSB3
YXRjaHBvaW50IG1heSBjYXVzZSBhIEdDIHRvIGhhcHBlbi4gVGhpcyBHQyBjb3VsZCBkZXN0cm95
IHZhcmlvdXMKKyAgICAgICAgV2F0Y2hwb2ludHMgdGhlbXNlbHZlcyB3aGlsZSB0aGV5J3JlIGlu
IHRoZSBwcm9jZXNzIG9mIGZpcmluZy4gSXQncyBub3Qgc2FmZQorICAgICAgICBmb3IgbW9zdCBX
YXRjaHBvaW50cyB0byBiZSBkZXN0cnVjdGVkIHdoaWxlIHRoZXkncmUgaW4gdGhlIG1pZGRsZSBv
ZiBmaXJpbmcuCisgICAgICAgIFRoaXMgR0MgY291bGQgYWxzbyBkZXN0cm95IHRoZSBXYXRjaHBv
aW50U2V0IGl0c2VsZiwgYW5kIGl0J3Mgbm90IGluIGEgc2FmZQorICAgICAgICBzdGF0ZSB0byBi
ZSBkZXN0cm95ZWQuIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cyBub3cgZGVmZXJz
IGdjIGZvciBhCisgICAgICAgIHdoaWxlLiBUaGlzIHByZXZlbnRzIGEgR0MgZnJvbSBkZXN0cnVj
dGluZyBhbnkgV2F0Y2hwb2ludHMgd2hpbGUgdGhleSdyZQorICAgICAgICBpbiB0aGUgcHJvY2Vz
cyBvZiBmaXJpbmcuIFRoaXMgYnVnIHdhcyBiZWluZyBoaXQgYnkgdGhlIHN0cmVzcyBHQyBib3Rz
CisgICAgICAgIGJlY2F1c2Ugd2Ugd291bGQgZGVzdHJ1Y3QgYSBwYXJ0aWN1bGFyIFdhdGNocG9p
bnQgd2hpbGUgaXQgd2FzIGZpcmluZywKKyAgICAgICAgYW5kIHRoZW4gd2Ugd291bGQgYWNjZXNz
IGl0cyBmaWVsZCBhZnRlciBpdCBoYWQgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAg
VGhpcyB3YXMgY2F1c2luZyBhbGwga2luZHMgb2Ygd2VpcmQgc3ltcHRvbXMuIEFsc28sIHRoaXMg
d2FzIGVhc2llciB0bworICAgICAgICBjYXRjaCB3aGVuIHJ1bm5pbmcgd2l0aCBndWFyZCBtYWxs
b2MgYmVjYXVzZSB0aGUgZmlyc3QgYWNjZXNzIGFmdGVyCisgICAgICAgIGRlc3RydWN0aW9uIHdv
dWxkIGxlYWQgdG8gYSBjcmFzaC4KKworICAgICAgICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHA6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjpkdW1wKToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKToKKyAgICAgICAgKiBieXRlY29k
ZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9p
bnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoSlND
OjpXYXRjaHBvaW50U2V0OjpmaXJlQWxsU2xvdyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRT
ZXQ6OmZpcmVBbGxXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRT
ZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6OmZpcmVBbGwpOgor
ICAgICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0OjppbmZsYXRlU2xvdyk6CisgICAgICAg
ICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojpz
dGFydFdhdGNoaW5nKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6Cisg
ICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnRvdWNoKToKKyAgICAgICAgKEpTQzo6V2F0Y2hw
b2ludFNldDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmlzQmVp
bmdXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6b2Zmc2V0T2ZTdGF0ZSk6
CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZlNldElzTm90RW1wdHkpOgor
ICAgICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0OjpzdGFydFdhdGNoaW5nKToKKyAgICAg
ICAgKEpTQzo6SW5saW5lV2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAgICAgIChKU0M6Oklu
bGluZVdhdGNocG9pbnRTZXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVXYXRj
aHBvaW50U2V0Ojp0b3VjaCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0
ZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChXVEY6Ok1hc3F1ZXJhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5j
cHA6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFs
bCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25SYXJlRGF0YTo6Y2xlYXIpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRU
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlOjp3aWxsU3RvcmVWYWx1ZVNsb3cp
OgorICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6Om1ha2VUb3BTbG93KToKKyAgICAgICAgKEpT
Qzo6SW5mZXJyZWRUeXBlOjpzZXQpOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6OnJlbW92
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkluZmVycmVkVHlwZTo6SW5mZXJyZWRTdHJ1Y3R1
cmVXYXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRW
YWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkluZmVycmVkVmFsdWU6Om5vdGlmeVdyaXRlU2xvdyk6
CisgICAgICAgIChKU0M6OkluZmVycmVkVmFsdWU6OlZhbHVlQ2xlYW51cDo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpJbmZlcnJlZFZhbHVlOjpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6OkluZmVy
cmVkVmFsdWU6OmludmFsaWRhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1
dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0
aWVzKToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dEZpcmU6On5EZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSk6CisgICAg
ICAgIChKU0M6OkRlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlOjphZGQp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRpZFRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJvdG90eXBlRm9yTG9va3VwKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpkaWRSZXBsYWNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnByb3BlcnR5
UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxl
Lmg6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzRG9udEVudW0pOgorICAgICAg
ICAoSlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpkaXNhYmxlV2F0Y2hpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6YWRkSW1wdXJlUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjplbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCk6CisKIDIwMTYtMDYt
MjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBzZWxlY3RFbGVtZW50Lm9wdGlvbnMgc2hvd3MgdW5leHBlY3RlZCBlbnRyaWVz
IGluIGNvbnNvbGUgKG5hbWVkIGluZGV4ZXMgYmV5b25kIGNvbGxlY3Rpb24gbGVuZ3RoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIE1hc3F1ZXJhZGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKCJNYXNxdWVyYWRpbmcgb2JqZWN0IGFs
bG9jYXRlZCIpOworICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50KCktPmZpcmVBbGwodm0sICJNYXNxdWVyYWRpbmcgb2JqZWN0IGFsbG9jYXRlZCIp
OwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBqc051bGwoKSk7CiAgICAgICAgIE1hc3F1ZXJhZGVyKiByZXN1bHQgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXNxdWVyYWRlcj4odm0uaGVhcCwgc2l6ZW9mKE1hc3F1
ZXJhZGVyKSkpIE1hc3F1ZXJhZGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICByZXN1bHQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgdm9pZCBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocAogCiB2b2lkIEFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWls
KQogewotICAgIC8vIFdlIG5lZWQgdG8gZGVmZXIgR0MgaGVyZSBvdGhlcndpc2Ugd2UgbWlnaHQg
dHJpZ2dlciBhIEdDIHRoYXQgY291bGQgZGVzdHJveSB0aGUgb3duZXIKLSAgICAvLyBDb2RlQmxv
Y2suIEluIHBhcnRpY3VsYXIsIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHdlIGFkZCByYXJlIGRhdGEg
dG8gYSBzdHJ1Y3R1cmUgd2hlbgotICAgIC8vIHdlIEVuc3VyZVdhdGNoYWJpbGl0eS4KLSAgICBE
ZWZlckdDRm9yQVdoaWxlIGRlZmVyKCpIZWFwOjpoZWFwKG1fa2V5Lm9iamVjdCgpKSk7CiAgICAg
Ly8gT25lIG9mIHRoZSB3YXRjaHBvaW50cyBmaXJlZCwgYnV0IHRoZSBvdGhlciBvbmUgZGlkbid0
LiBNYWtlIHN1cmUgdGhhdCBuZWl0aGVyIG9mIHRoZW0gYXJlCiAgICAgLy8gaW4gYW55IHNldCBh
bnltb3JlLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGJ5IGFsbG93aW5nIHVzIHRvIHJlaW5zdGFs
bCB0aGUgd2F0Y2hwb2ludHMKICAgICAvLyB3aGVyZXZlciBmcm9tIHNjcmF0Y2guCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24g
MjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyNDAsNyArMjI0MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVd
LnUud2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlm
IChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcykgewogICAgICAgICAgICAgICAgIGlmIChvcC53YXRjaHBvaW50U2V0KQot
ICAgICAgICAgICAgICAgICAgICBvcC53YXRjaHBvaW50U2V0LT5pbnZhbGlkYXRlKFB1dFRvU2Nv
cGVGaXJlRGV0YWlsKHRoaXMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgICAgIG9wLndhdGNo
cG9pbnRTZXQtPmludmFsaWRhdGUodm0sIFB1dFRvU2NvcGVGaXJlRGV0YWlsKHRoaXMsIGlkZW50
KSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKICAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCh2bSwgdGhpcywgb3Auc3RydWN0
dXJlKTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4ob3Aub3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAJ
KHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJp
YWJsZVdyaXRlRmlyZURldGFpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAg
dm9pZCBWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6ZHVtcChQcmludAogICAgIG91dC5wcmludCgi
V3JpdGUgdG8gIiwgbV9uYW1lLCAiIGluICIsIEpTVmFsdWUobV9vYmplY3QpKTsKIH0KIAotdm9p
ZCBWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goV2F0Y2hwb2ludFNldCogc2V0LCBKU09i
amVjdCogb2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIG5hbWUpCit2b2lkIFZhcmlhYmxlV3Jp
dGVGaXJlRGV0YWlsOjp0b3VjaChWTSYgdm0sIFdhdGNocG9pbnRTZXQqIHNldCwgSlNPYmplY3Qq
IG9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBuYW1lKQogewotICAgIHNldC0+dG91Y2goVmFy
aWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBuYW1lKSk7CisgICAgc2V0LT50b3VjaCh2bSwg
VmFyaWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBuYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV3Jp
dGVGaXJlRGV0YWlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB0b3VjaChXYXRjaHBvaW50U2V0KiwgSlNP
YmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCB0b3VjaChWTSYgdm0sIFdhdGNocG9pbnRTZXQqLCBKU09iamVjdCosIGNvbnN0IFBy
b3BlcnR5TmFtZSYpOwogCiBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBtX29iamVjdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlz
aW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKIAorI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbXBpbGF0aW9uVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApA
QCAtODEsMjYgKzgyLDMzIEBAIHZvaWQgV2F0Y2hwb2ludFNldDo6YWRkKFdhdGNocG9pbnQqIHdh
dGMKICAgICBtX3N0YXRlID0gSXNXYXRjaGVkOwogfQogCi12b2lkIFdhdGNocG9pbnRTZXQ6OmZp
cmVBbGxTbG93KGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKK3ZvaWQgV2F0Y2hwb2ludFNldDo6
ZmlyZUFsbFNsb3coVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgQVNT
RVJUKHN0YXRlKCkgPT0gSXNXYXRjaGVkKTsKICAgICAKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5j
ZSgpOwogICAgIG1fc3RhdGUgPSBJc0ludmFsaWRhdGVkOyAvLyBEbyB0aGlzIGZpcnN0LiBOZWVk
ZWQgZm9yIGFkYXB0aXZlIHdhdGNocG9pbnRzLgotICAgIGZpcmVBbGxXYXRjaHBvaW50cyhkZXRh
aWwpOworICAgIGZpcmVBbGxXYXRjaHBvaW50cyh2bSwgZGV0YWlsKTsKICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOwogfQogCi12b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxTbG93KGNvbnN0
IGNoYXIqIHJlYXNvbikKK3ZvaWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFNsb3coVk0mIHZtLCBj
b25zdCBjaGFyKiByZWFzb24pCiB7Ci0gICAgZmlyZUFsbFNsb3coU3RyaW5nRmlyZURldGFpbChy
ZWFzb24pKTsKKyAgICBmaXJlQWxsU2xvdyh2bSwgU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsK
IH0KIAotdm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMoY29uc3QgRmlyZURl
dGFpbCYgZGV0YWlsKQordm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsV2F0Y2hwb2ludHMoVk0m
IHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiB7CiAgICAgLy8gSW4gY2FzZSB0aGVyZSBh
cmUgYW55IGFkYXB0aXZlIHdhdGNocG9pbnRzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRo
ZXkgc2VlIHRoYXQgdGhpcwogICAgIC8vIHdhdGNocG9pbnQgaGFzIGJlZW4gYWxyZWFkeSBpbnZh
bGlkYXRlZC4KICAgICBSRUxFQVNFX0FTU0VSVChoYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisKKyAg
ICAvLyBGaXJpbmcgYSB3YXRjaHBvaW50IG1heSBjYXVzZSBhIEdDIHRvIGhhcHBlbi4gVGhpcyBH
QyBjb3VsZCBkZXN0cm95IHZhcmlvdXMKKyAgICAvLyBXYXRjaHBvaW50cyB0aGVtc2VsdmVzIHdo
aWxlIHRoZXkncmUgaW4gdGhlIHByb2Nlc3Mgb2YgZmlyaW5nLiBJdCdzIG5vdCBzYWZlCisgICAg
Ly8gZm9yIG1vc3QgV2F0Y2hwb2ludHMgdG8gYmUgZGVzdHJ1Y3RlZCB3aGlsZSB0aGV5J3JlIGlu
IHRoZSBtaWRkbGUgb2YgZmlyaW5nLgorICAgIC8vIFRoaXMgR0MgY291bGQgYWxzbyBkZXN0cm95
IHVzLCBhbmQgd2UncmUgbm90IGluIGEgc2FmZSBzdGF0ZSB0byBiZSBkZXN0cm95ZWQuCisgICAg
Ly8gVGhlIHNhZmVzdCB0aGluZyB0byBkbyBpcyB0byBEZWZlckdDRm9yQVdoaWxlIHRvIHByZXZl
bnQgdGhpcyBHQyBmcm9tIGhhcHBlbmluZy4KKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Mo
dm0uaGVhcCk7CiAgICAgCiAgICAgd2hpbGUgKCFtX3NldC5pc0VtcHR5KCkpIHsKICAgICAgICAg
V2F0Y2hwb2ludCogd2F0Y2hwb2ludCA9IG1fc2V0LmJlZ2luKCk7CkBAIC0xMzAsOSArMTM4LDkg
QEAgdm9pZCBJbmxpbmVXYXRjaHBvaW50U2V0OjphZGQoV2F0Y2hwb2ludAogICAgIGluZmxhdGUo
KS0+YWRkKHdhdGNocG9pbnQpOwogfQogCi12b2lkIElubGluZVdhdGNocG9pbnRTZXQ6OmZpcmVB
bGwoY29uc3QgY2hhciogcmVhc29uKQordm9pZCBJbmxpbmVXYXRjaHBvaW50U2V0OjpmaXJlQWxs
KFZNJiB2bSwgY29uc3QgY2hhciogcmVhc29uKQogewotICAgIGZpcmVBbGwoU3RyaW5nRmlyZURl
dGFpbChyZWFzb24pKTsKKyAgICBmaXJlQWxsKHZtLCBTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikp
OwogfQogCiBXYXRjaHBvaW50U2V0KiBJbmxpbmVXYXRjaHBvaW50U2V0OjppbmZsYXRlU2xvdygp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJl
dmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBv
aW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBXYXRjaHBvaW50U3Rh
dGUgewogfTsKIAogY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsKK2NsYXNzIFZNOwogCiBjbGFz
cyBXYXRjaHBvaW50U2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdhdGNocG9pbnRT
ZXQ+IHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtMTUyLDQz
ICsxNTMsNDMgQEAgcHVibGljOgogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAg
IH0KICAgICAKLSAgICB2b2lkIGZpcmVBbGwoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQorICAg
IHZvaWQgZmlyZUFsbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAg
ICAgICAgIGlmIChMSUtFTFkobV9zdGF0ZSAhPSBJc1dhdGNoZWQpKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBmaXJlQWxsU2xvdyhkZXRhaWwpOworICAgICAgICBmaXJlQWxsU2xvdyh2
bSwgZGV0YWlsKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaXJlQWxsKGNvbnN0IGNoYXIqIHJl
YXNvbikKKyAgICB2b2lkIGZpcmVBbGwoVk0mIHZtLCBjb25zdCBjaGFyKiByZWFzb24pCiAgICAg
ewogICAgICAgICBpZiAoTElLRUxZKG1fc3RhdGUgIT0gSXNXYXRjaGVkKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgZmlyZUFsbFNsb3cocmVhc29uKTsKKyAgICAgICAgZmlyZUFsbFNs
b3codm0sIHJlYXNvbik7CiAgICAgfQogICAgIAotICAgIHZvaWQgdG91Y2goY29uc3QgRmlyZURl
dGFpbCYgZGV0YWlsKQorICAgIHZvaWQgdG91Y2goVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBk
ZXRhaWwpCiAgICAgewogICAgICAgICBpZiAoc3RhdGUoKSA9PSBDbGVhcldhdGNocG9pbnQpCiAg
ICAgICAgICAgICBzdGFydFdhdGNoaW5nKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZp
cmVBbGwoZGV0YWlsKTsKKyAgICAgICAgICAgIGZpcmVBbGwodm0sIGRldGFpbCk7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgdG91Y2goY29uc3QgY2hhciogcmVhc29uKQorICAgIHZvaWQgdG91Y2go
Vk0mIHZtLCBjb25zdCBjaGFyKiByZWFzb24pCiAgICAgewotICAgICAgICB0b3VjaChTdHJpbmdG
aXJlRGV0YWlsKHJlYXNvbikpOworICAgICAgICB0b3VjaCh2bSwgU3RyaW5nRmlyZURldGFpbChy
ZWFzb24pKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IEZpcmVEZXRh
aWwmIGRldGFpbCkKKyAgICB2b2lkIGludmFsaWRhdGUoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWls
JiBkZXRhaWwpCiAgICAgewogICAgICAgICBpZiAoc3RhdGUoKSA9PSBJc1dhdGNoZWQpCi0gICAg
ICAgICAgICBmaXJlQWxsKGRldGFpbCk7CisgICAgICAgICAgICBmaXJlQWxsKHZtLCBkZXRhaWwp
OwogICAgICAgICBtX3N0YXRlID0gSXNJbnZhbGlkYXRlZDsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBpbnZhbGlkYXRlKGNvbnN0IGNoYXIqIHJlYXNvbikKKyAgICB2b2lkIGludmFsaWRhdGUoVk0m
IHZtLCBjb25zdCBjaGFyKiByZWFzb24pCiAgICAgewotICAgICAgICBpbnZhbGlkYXRlKFN0cmlu
Z0ZpcmVEZXRhaWwocmVhc29uKSk7CisgICAgICAgIGludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVE
ZXRhaWwocmVhc29uKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNCZWluZ1dhdGNoZWQoKSBj
b25zdApAQCAtMjAwLDExICsyMDEsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZTdGF0ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihXYXRjaHBvaW50U2V0LCBt
X3N0YXRlKTsgfQogICAgIGludDhfdCogYWRkcmVzc09mU2V0SXNOb3RFbXB0eSgpIHsgcmV0dXJu
ICZtX3NldElzTm90RW1wdHk7IH0KICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZp
cmVBbGxTbG93KGNvbnN0IEZpcmVEZXRhaWwmKTsgLy8gQ2FsbCBvbmx5IGlmIHlvdSd2ZSBjaGVj
a2VkIGlzV2F0Y2hlZC4KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpcmVBbGxTbG93KGNv
bnN0IGNoYXIqIHJlYXNvbik7IC8vIERpdHRvLgorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmlyZUFsbFNsb3coVk0mLCBjb25zdCBGaXJlRGV0YWlsJik7IC8vIENhbGwgb25seSBpZiB5b3Un
dmUgY2hlY2tlZCBpc1dhdGNoZWQuCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxs
U2xvdyhWTSYsIGNvbnN0IGNoYXIqIHJlYXNvbik7IC8vIERpdHRvLgogICAgIAogcHJpdmF0ZToK
LSAgICB2b2lkIGZpcmVBbGxXYXRjaHBvaW50cyhjb25zdCBGaXJlRGV0YWlsJik7CisgICAgdm9p
ZCBmaXJlQWxsV2F0Y2hwb2ludHMoVk0mLCBjb25zdCBGaXJlRGV0YWlsJik7CiAgICAgCiAgICAg
ZnJpZW5kIGNsYXNzIElubGluZVdhdGNocG9pbnRTZXQ7CiAKQEAgLTI5NiwxMCArMjk3LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgbV9kYXRhID0gZW5jb2RlU3RhdGUoSXNXYXRjaGVkKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBmaXJlQWxsKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKKyAgICB2
b2lkIGZpcmVBbGwoVk0mIHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICAgewogICAg
ICAgICBpZiAoaXNGYXQoKSkgewotICAgICAgICAgICAgZmF0KCktPmZpcmVBbGwoZGV0YWlsKTsK
KyAgICAgICAgICAgIGZhdCgpLT5maXJlQWxsKHZtLCBkZXRhaWwpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZWNvZGVTdGF0ZShtX2RhdGEpID09IENsZWFy
V2F0Y2hwb2ludCkKQEAgLTMwOCwyMCArMzA5LDIwIEBAIHB1YmxpYzoKICAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBpbnZhbGlkYXRlKGNvbnN0
IEZpcmVEZXRhaWwmIGRldGFpbCkKKyAgICB2b2lkIGludmFsaWRhdGUoVk0mIHZtLCBjb25zdCBG
aXJlRGV0YWlsJiBkZXRhaWwpCiAgICAgewogICAgICAgICBpZiAoaXNGYXQoKSkKLSAgICAgICAg
ICAgIGZhdCgpLT5pbnZhbGlkYXRlKGRldGFpbCk7CisgICAgICAgICAgICBmYXQoKS0+aW52YWxp
ZGF0ZSh2bSwgZGV0YWlsKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9kYXRhID0gZW5j
b2RlU3RhdGUoSXNJbnZhbGlkYXRlZCk7CiAgICAgfQogICAgIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmlyZUFsbChjb25zdCBjaGFyKiByZWFzb24pOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmlyZUFsbChWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAgICAgCi0gICAg
dm9pZCB0b3VjaChjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCisgICAgdm9pZCB0b3VjaChWTSYg
dm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChpc0ZhdCgp
KSB7Ci0gICAgICAgICAgICBmYXQoKS0+dG91Y2goZGV0YWlsKTsKKyAgICAgICAgICAgIGZhdCgp
LT50b3VjaCh2bSwgZGV0YWlsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICB1aW50cHRyX3QgZGF0YSA9IG1fZGF0YTsKQEAgLTMzNSw5ICszMzYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
dG91Y2goY29uc3QgY2hhciogcmVhc29uKQorICAgIHZvaWQgdG91Y2goVk0mIHZtLCBjb25zdCBj
aGFyKiByZWFzb24pCiAgICAgewotICAgICAgICB0b3VjaChTdHJpbmdGaXJlRGV0YWlsKHJlYXNv
bikpOworICAgICAgICB0b3VjaCh2bSwgU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKICAgICB9
CiAKICAgICAvLyBOb3RlIHRoYXQgZm9yIGFueSB3YXRjaHBvaW50IHRoYXQgaXMgdmlzaWJsZSBm
cm9tIHRoZSBERkcsIGl0IHdvdWxkIGJlIGluY29ycmVjdCB0byB3cml0ZSBjb2RlIGxpa2U6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4NSw3ICszODUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mCiAgICAgICAgICAgICAgICAgICAgIC8vIG5vdGlmeVdyaXRlKCksIHNpbmNlIHRoYXQgd291
bGQgYmUgY3VtYmVyc29tZS4gQWxzbywgd2F0Y2hpbmcgZm9ybWFsCiAgICAgICAgICAgICAgICAg
ICAgIC8vIHBhcmFtZXRlcnMgd2hlbiAiYXJndW1lbnRzIiBpcyBpbiBwbGF5IGlzIHVubGlrZWx5
IHRvIGJlIHN1cGVyIHByb2ZpdGFibGUuCiAgICAgICAgICAgICAgICAgICAgIC8vIFNvLCB3ZSBq
dXN0IGRpc2FibGUgaXQuCi0gICAgICAgICAgICAgICAgICAgIGVudHJ5LmRpc2FibGVXYXRjaGlu
ZygpOworICAgICAgICAgICAgICAgICAgICBlbnRyeS5kaXNhYmxlV2F0Y2hpbmcoKm1fdm0pOwog
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvblN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVj
ZXNzYXJ5LCBuYW1lLCBlbnRyeSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGVtaXRPcGNvZGUob3BfcHV0X3RvX3Njb3BlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0
NSw3ICsxNDQ1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5vdGlmeVdyaXRlKAog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwogCi0gICAgc2V0LT50b3VjaCgiRXhlY3V0ZWQgTm90aWZ5V3JpdGUiKTsK
KyAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQgTm90aWZ5V3JpdGUiKTsKIH0KIAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MoRXhlY1N0
YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA2
LDcgKzEyMDYsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAg
ICAgaWYgKG51bVZhcmlhYmxlcyB8fCBudW1GdW5jdGlvbnMpIHsKICAgICAgICAgQmF0Y2hlZFRy
YW5zaXRpb25PcHRpbWl6ZXIgb3B0aW1pemVyKHZtLCB2YXJpYWJsZU9iamVjdCk7CiAgICAgICAg
IGlmICh2YXJpYWJsZU9iamVjdC0+bmV4dCgpKQotICAgICAgICAgICAgdmFyaWFibGVPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLT52YXJJbmplY3Rpb25XYXRjaHBvaW50KCktPmZpcmVBbGwoIkV4ZWN1
dGVkIGV2YWwsIGZpcmVkIFZhckluamVjdGlvbiB3YXRjaHBvaW50Iik7CisgICAgICAgICAgICB2
YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+
ZmlyZUFsbCh2bSwgIkV4ZWN1dGVkIGV2YWwsIGZpcmVkIFZhckluamVjdGlvbiB3YXRjaHBvaW50
Iik7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZhcmlhYmxlczsgKytp
KSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+dmFy
aWFibGUoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNzgsNyArMjA3OCw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEUKICAgICAgICAgSlNMZXhpY2FsRW52
aXJvbm1lbnQqIGVudmlyb25tZW50ID0ganNDYXN0PEpTTGV4aWNhbEVudmlyb25tZW50Kj4oc2Nv
cGUpOwogICAgICAgICBlbnZpcm9ubWVudC0+dmFyaWFibGVBdChTY29wZU9mZnNldChwY1s2XS51
Lm9wZXJhbmQpKS5zZXQodm0sIGVudmlyb25tZW50LCB2YWx1ZSk7CiAgICAgICAgIGlmIChXYXRj
aHBvaW50U2V0KiBzZXQgPSBwY1s1XS51LndhdGNocG9pbnRTZXQpCi0gICAgICAgICAgICBzZXQt
PnRvdWNoKCJFeGVjdXRlZCBvcF9wdXRfc2NvcGU8TG9jYWxDbG9zdXJlVmFyPiIpOworICAgICAg
ICAgICAgc2V0LT50b3VjaCh2bSwgIkV4ZWN1dGVkIG9wX3B1dF9zY29wZTxMb2NhbENsb3N1cmVW
YXI+Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU1NCw3ICsxNTU0LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3B1dF90b19zYwogICAgICAgICAvLyB0byBoYXZlIGFscmVhZHkgY2hhbmdlZCB0aGUgdmFsdWUg
b2YgdGhlIHZhcmlhYmxlLiBPdGhlcndpc2Ugd2UgbWlnaHQgd2F0Y2ggYW5kIGNvbnN0YW50LWZv
bGQKICAgICAgICAgLy8gdG8gdGhlIFVuZGVmaW5lZCB2YWx1ZSBmcm9tIGJlZm9yZSB0aGUgYXNz
aWdubWVudC4KICAgICAgICAgaWYgKFdhdGNocG9pbnRTZXQqIHNldCA9IHBjWzVdLnUud2F0Y2hw
b2ludFNldCkKLSAgICAgICAgICAgIHNldC0+dG91Y2goIkV4ZWN1dGVkIG9wX3B1dF9zY29wZTxM
b2NhbENsb3N1cmVWYXI+Iik7CisgICAgICAgICAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQg
b3BfcHV0X3Njb3BlPExvY2FsQ2xvc3VyZVZhcj4iKTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDIw
MjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgU3RydWN0
dXJlKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbgogCiB2b2lkIEFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCgpCiB7Ci0gICAgc2V0KCktPmZpcmVBbGwoIkFycmF5
IGJ1ZmZlciB3YXMgbmV1dGVyZWQiKTsKKyAgICBzZXQoKS0+ZmlyZUFsbCgqdm0oKSwgIkFycmF5
IGJ1ZmZlciB3YXMgbmV1dGVyZWQiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNw
cAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBG
dW5jdGlvblJhcmVEYXRhOjpjbGVhcihjb25zdCBjaGFyKgogewogICAgIG1fb2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUuY2xlYXIoKTsKICAgICBtX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZS5jbGVhcigpOwotICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LmZp
cmVBbGwocmVhc29uKTsKKyAgICBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5m
aXJlQWxsKCp2bSgpLCByZWFzb24pOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmZlcnJlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxOSw3ICs0MTksNyBAQCBib29sIEluZmVycmVkVHlwZTo6d2lsbFN0b3JlVmFsdWVT
bG93KFZNCiAgICAgfQogICAgIAogICAgIEluZmVycmVkVHlwZUZpcmVEZXRhaWwgZGV0YWlsKHRo
aXMsIHByb3BlcnR5TmFtZS51aWQoKSwgb2xkVHlwZSwgbXlUeXBlLCB2YWx1ZSk7Ci0gICAgbV93
YXRjaHBvaW50U2V0LmZpcmVBbGwoZGV0YWlsKTsKKyAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFs
bCh2bSwgZGV0YWlsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzQsNyArNDM0LDcg
QEAgdm9pZCBJbmZlcnJlZFR5cGU6Om1ha2VUb3BTbG93KFZNJiB2bSwgUAogICAgIH0KIAogICAg
IEluZmVycmVkVHlwZUZpcmVEZXRhaWwgZGV0YWlsKHRoaXMsIHByb3BlcnR5TmFtZS51aWQoKSwg
b2xkVHlwZSwgVG9wLCBKU1ZhbHVlKCkpOwotICAgIG1fd2F0Y2hwb2ludFNldC5maXJlQWxsKGRl
dGFpbCk7CisgICAgbV93YXRjaHBvaW50U2V0LmZpcmVBbGwodm0sIGRldGFpbCk7CiB9CiAKIGJv
b2wgSW5mZXJyZWRUeXBlOjpzZXQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBW
TSYgdm0sIERlc2NyaXB0b3IgbmV3RGVzY3JpcHRvcikKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lk
IEluZmVycmVkVHlwZTo6cmVtb3ZlU3RydWN0dXJlKCkKICAgICB9CiAKICAgICBJbmZlcnJlZFR5
cGVGaXJlRGV0YWlsIGRldGFpbCh0aGlzLCBudWxscHRyLCBvbGREZXNjcmlwdG9yLCBuZXdEZXNj
cmlwdG9yLCBKU1ZhbHVlKCkpOwotICAgIG1fd2F0Y2hwb2ludFNldC5maXJlQWxsKGRldGFpbCk7
CisgICAgbV93YXRjaHBvaW50U2V0LmZpcmVBbGwodm0sIGRldGFpbCk7CiB9CiAKIHZvaWQgSW5m
ZXJyZWRUeXBlOjpJbmZlcnJlZFN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChjb25z
dCBGaXJlRGV0YWlsJikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVy
cmVkVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZmVycmVkVmFsdWUuY3BwCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmZlcnJlZFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyAr
OTIsNyBAQCB2b2lkIEluZmVycmVkVmFsdWU6Om5vdGlmeVdyaXRlU2xvdyhWTSYgCiAgICAgICAg
IEFTU0VSVCghIW1fdmFsdWUpOwogICAgICAgICBpZiAobV92YWx1ZS5nZXQoKSA9PSB2YWx1ZSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW52YWxpZGF0ZShkZXRhaWwpOworICAgICAg
ICBpbnZhbGlkYXRlKHZtLCBkZXRhaWwpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGNhc2UgSXNJbnZhbGlkYXRlZDoKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEluZmVycmVkVmFs
dWU6OlZhbHVlQ2xlYW51cDo6ZmluYWxpCiAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG1fb3duZXIt
Pm1fdmFsdWUuZ2V0KCkuYXNDZWxsKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9v
d25lci0+aW52YWxpZGF0ZShTdHJpbmdGaXJlRGV0YWlsKCJJbmZlcnJlZFZhbHVlIGNsZWFuLXVw
IGR1cmluZyBHQyIpKTsKKyAgICBtX293bmVyLT5pbnZhbGlkYXRlKCptX293bmVyLT52bSgpLCBT
dHJpbmdGaXJlRGV0YWlsKCJJbmZlcnJlZFZhbHVlIGNsZWFuLXVwIGR1cmluZyBHQyIpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbmZlcnJlZFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5mZXJyZWRWYWx1ZS5oCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEw
ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG5vdGlmeVdyaXRlU2xvdyh2bSwgdmFsdWUsIHJl
YXNvbik7CiAgICAgfQogICAgIAotICAgIHZvaWQgaW52YWxpZGF0ZShjb25zdCBGaXJlRGV0YWls
JiBkZXRhaWwpCisgICAgdm9pZCBpbnZhbGlkYXRlKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYg
ZGV0YWlsKQogICAgIHsKICAgICAgICAgbV92YWx1ZS5jbGVhcigpOwotICAgICAgICBtX3NldC5p
bnZhbGlkYXRlKGRldGFpbCk7CisgICAgICAgIG1fc2V0LmludmFsaWRhdGUodm0sIGRldGFpbCk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmhhdmVBQmFkVGltZShWTSYgdm0KICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbGwgYWxs
b2NhdGlvbnMgb3IgaW5kZXhlZCBzdG9yYWdlIHRyYW5zaXRpb25zIHRoYXQgYXJlIGlubGluaW5n
CiAgICAgLy8gdGhlIGFzc3VtcHRpb24gdGhhdCBpdCdzIHNhZmUgdG8gdHJhbnNpdGlvbiB0byBh
IG5vbi1TbG93UHV0IGFycmF5IHN0b3JhZ2UgZG9uJ3QKICAgICAvLyBkbyBzbyBhbnltb3JlLgot
ICAgIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50LT5maXJlQWxsKCJIYXZpbmcgYSBiYWQgdGlt
ZSIpOworICAgIG1faGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50LT5maXJlQWxsKHZtLCAiSGF2aW5n
IGEgYmFkIHRpbWUiKTsKICAgICBBU1NFUlQoaXNIYXZpbmdBQmFkVGltZSgpKTsgLy8gVGhlIHdh
dGNocG9pbnQgaXMgd2hhdCB0ZWxscyB1cyB0aGF0IHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLgog
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFsbCBKU0FycmF5IGFsbG9jYXRpb25zIHRoYXQg
bG9hZCB0aGUgYXBwcm9wcmlhdGUgc3RydWN0dXJlIGZyb20KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9u
IDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEFMV0FZU19JTkxJTkUg
dm9pZCBzeW1ib2xUYWJsZVB1dFRvdWNoV2EKIHsKICAgICByZWctPnNldCh2bSwgb2JqZWN0LCB2
YWx1ZSk7CiAgICAgaWYgKHNldCkKLSAgICAgICAgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRv
dWNoKHNldCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBWYXJpYWJsZVdyaXRlRmly
ZURldGFpbDo6dG91Y2godm0sIHNldCwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBTeW1ib2xUYWJsZU9iamVjdFR5cGU+CkBAIC0xNTQsNyArMTU0LDcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIHN5bWJvbFRhYmxlUHV0SW52YWxpZAogewogICAgIHJlZy0+c2V0
KHZtLCBvYmplY3QsIHZhbHVlKTsKICAgICBpZiAoc2V0KQotICAgICAgICBzZXQtPmludmFsaWRh
dGUoVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsgLy8gRG9u
J3QgbWVzcyBhcm91bmQgLSBpZiB3ZSBoYWQgZm91bmQgdGhpcyBzdGF0aWNhbGx5LCB3ZSB3b3Vs
ZCBoYXZlIGludmFsaWRhdGVkIGl0LgorICAgICAgICBzZXQtPmludmFsaWRhdGUodm0sIFZhcmlh
YmxlV3JpdGVGaXJlRGV0YWlsKG9iamVjdCwgcHJvcGVydHlOYW1lKSk7IC8vIERvbid0IG1lc3Mg
YXJvdW5kIC0gaWYgd2UgaGFkIGZvdW5kIHRoaXMgc3RhdGljYWxseSwgd2Ugd291bGQgaGF2ZSBp
bnZhbGlkYXRlZCBpdC4KIH0KIAogZW51bSBjbGFzcyBTeW1ib2xUYWJsZVB1dE1vZGUgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lv
biAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NTgsNyArODU4LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OnN0YXJ0
V2F0Y2hpbmdQcm9wZXJ0eUZvcgogCiB2b2lkIFN0cnVjdHVyZTo6ZGlkQ2FjaGVQcm9wZXJ0eVJl
cGxhY2VtZW50KFZNJiB2bSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewotICAgIGVuc3VyZVBy
b3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KHZtLCBvZmZzZXQpLT5maXJlQWxsKCJEaWQg
Y2FjaGUgcHJvcGVydHkgcmVwbGFjZW1lbnQiKTsKKyAgICBlbnN1cmVQcm9wZXJ0eVJlcGxhY2Vt
ZW50V2F0Y2hwb2ludFNldCh2bSwgb2Zmc2V0KS0+ZmlyZUFsbCh2bSwgIkRpZCBjYWNoZSBwcm9w
ZXJ0eSByZXBsYWNlbWVudCIpOwogfQogCiB2b2lkIFN0cnVjdHVyZTo6c3RhcnRXYXRjaGluZ0lu
dGVybmFsUHJvcGVydGllcyhWTSYgdm0pCkBAIC0xMDc1LDcgKzEwNzUsNyBAQCBEZWZlcnJlZFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyCiBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZTo6fkRlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRG
aXJlKCkKIHsKICAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgIG1fc3RydWN0dXJlLT50cmFu
c2l0aW9uV2F0Y2hwb2ludFNldCgpLmZpcmVBbGwoU3RydWN0dXJlRmlyZURldGFpbChtX3N0cnVj
dHVyZSkpOworICAgICAgICBtX3N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoKS5m
aXJlQWxsKCptX3N0cnVjdHVyZS0+dm0oKSwgU3RydWN0dXJlRmlyZURldGFpbChtX3N0cnVjdHVy
ZSkpOwogfQogCiB2b2lkIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJl
OjphZGQoY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xMDk2LDcgKzEwOTYsNyBAQCB2
b2lkIFN0cnVjdHVyZTo6ZGlkVHJhbnNpdGlvbkZyb21UaGlzU3RyCiAgICAgaWYgKGRlZmVycmVk
KQogICAgICAgICBkZWZlcnJlZC0+YWRkKHRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgbV90cmFu
c2l0aW9uV2F0Y2hwb2ludFNldC5maXJlQWxsKFN0cnVjdHVyZUZpcmVEZXRhaWwodGhpcykpOwor
ICAgICAgICBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0LmZpcmVBbGwoKnZtKCksIFN0cnVjdHVy
ZUZpcmVEZXRhaWwodGhpcykpOwogfQogCiBKU1ZhbHVlIFN0cnVjdHVyZTo6cHJvdG90eXBlRm9y
TG9va3VwKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMjAyNTcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2LDcgQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlOjpk
aWRSZXBsYWNlUHJvcGVydAogICAgIFdhdGNocG9pbnRTZXQqIHNldCA9IG1hcC0+Z2V0KG9mZnNl
dCk7CiAgICAgaWYgKExJS0VMWSghc2V0KSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldC0+Zmly
ZUFsbCgiUHJvcGVydHkgZGlkIGdldCByZXBsYWNlZCIpOworICAgIHNldC0+ZmlyZUFsbCgqdm0o
KSwgIlByb3BlcnR5IGRpZCBnZXQgcmVwbGFjZWQiKTsKIH0KIAogaW5saW5lIFdhdGNocG9pbnRT
ZXQqIFN0cnVjdHVyZTo6cHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBiaXRzKCkgJiBEb250RW51bUZsYWc7CiAgICAgfQogICAg
IAotICAgIHZvaWQgZGlzYWJsZVdhdGNoaW5nKCkKKyAgICB2b2lkIGRpc2FibGVXYXRjaGluZyhW
TSYgdm0pCiAgICAgewogICAgICAgICBpZiAoV2F0Y2hwb2ludFNldCogc2V0ID0gd2F0Y2hwb2lu
dFNldCgpKQotICAgICAgICAgICAgc2V0LT5pbnZhbGlkYXRlKCJEaXNhYmxpbmcgd2F0Y2hpbmcg
aW4gc3ltYm9sIHRhYmxlIik7CisgICAgICAgICAgICBzZXQtPmludmFsaWRhdGUodm0sICJEaXNh
Ymxpbmcgd2F0Y2hpbmcgaW4gc3ltYm9sIHRhYmxlIik7CiAgICAgICAgIGlmICh2YXJPZmZzZXQo
KS5pc1Njb3BlKCkpCiAgICAgICAgICAgICBwYWNrKHZhck9mZnNldCgpLCBmYWxzZSwgaXNSZWFk
T25seSgpLCBpc0RvbnRFbnVtKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ4LDcgKzc0OCw3IEBAIHZvaWQgVk06
OnJlZ2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVByb3AKIHZvaWQgVk06OmFkZEltcHVyZVByb3Bl
cnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIGlmIChSZWZQdHI8V2F0Y2hw
b2ludFNldD4gd2F0Y2hwb2ludFNldCA9IG1faW1wdXJlUHJvcGVydHlXYXRjaHBvaW50U2V0cy50
YWtlKHByb3BlcnR5TmFtZSkpCi0gICAgICAgIHdhdGNocG9pbnRTZXQtPmZpcmVBbGwoIkltcHVy
ZSBwcm9wZXJ0eSBhZGRlZCIpOworICAgICAgICB3YXRjaHBvaW50U2V0LT5maXJlQWxsKCp0aGlz
LCAiSW1wdXJlIHByb3BlcnR5IGFkZGVkIik7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZVByb2Zp
bGVyV2l0aFJlc3BlY3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gZG9FbmFibGVXb3JrKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNTczKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTYtMDYtMjggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
c29tZSBXYXRjaHBvaW50cycgOjpmaXJlSW50ZXJuYWwgbWV0aG9kIHdpbGwgY2FsbCBvcGVyYXRp
b25zIHRoYXQgbWlnaHQgR0Mgd2hlcmUgdGhlIEdDIHdpbGwgY2F1c2UgdGhlIHdhdGNocG9pbnQg
aXRzZWxmIHRvIGRlc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTkxOTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2MzAyMzYwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZmlyZUZyYW1lQ2xlYXJlZFdhdGNo
cG9pbnRzRm9yV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGUpOgorCiAyMDE2LTA2LTI4ICBGcmVkZXJpYyBXYW5nICA8
ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBQaHJhc2luZyBjb250ZW50IHNob3VsZCBiZSBh
Y2NlcHRlZCBpbiA8bW8+IGVsZW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxOCw3ICszMTgsNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmlyZUZyYW1lQ2xlYXJlZFdh
CiAgICAgICAgIGlmICghd3JhcHBlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBK
U0RPTVdpbmRvd0Jhc2UqIGpzV2luZG93ID0gSlNDOjpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4o
d3JhcHBlcik7Ci0gICAgICAgIGpzV2luZG93LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMuZmly
ZUFsbCgiRnJhbWUgY2xlYXJlZCIpOworICAgICAgICBqc1dpbmRvdy0+bV93aW5kb3dDbG9zZVdh
dGNocG9pbnRzLmZpcmVBbGwodm0sICJGcmFtZSBjbGVhcmVkIik7CiAgICAgfQogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTExMjYsNyArMTEyNiw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkhlYWRlcigk
aW1wbFR5cGUpIHVubGVzcyAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGU7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgZ2xvYmFs
T2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKFwiQWxs
b2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3RcIik7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludCgpLT5maXJlQWxsKGdsb2JhbE9iamVjdC0+dm0oKSwgXCJBbGxvY2F0ZWQgbWFzcXVl
cmFkaW5nIG9iamVjdFwiKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRj
bGFzc05hbWU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUs
ICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgp
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRy
O1xuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkocmV2aXNpb24gMjAyNTczKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
VGVzdEV2ZW50VGFyZ2V0IERPTVdyYXBwZWQ7CiAgICAgc3RhdGljIEpTVGVzdEV2ZW50VGFyZ2V0
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudFRhcmdldD4mJiBpbXBsKQogICAgIHsKLSAgICAgICAg
Z2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxs
KCJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9iamVjdCIpOworICAgICAgICBnbG9iYWxPYmplY3Qt
Pm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoZ2xvYmFsT2JqZWN0
LT52bSgpLCAiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3QiKTsKICAgICAgICAgSlNUZXN0
RXZlbnRUYXJnZXQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0
RXZlbnRUYXJnZXQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RXZlbnRUYXJnZXQo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwo=
</data>
<flag name="review"
          id="306085"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282267</attachid>
            <date>2016-06-28 12:23:23 -0700</date>
            <delta_ts>2016-06-28 12:44:24 -0700</delta_ts>
            <desc>patch for landing if bots are happy</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>32191</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDE2LTA2LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IHNvbWUgV2F0Y2hwb2ludHMnIDo6ZmlyZUludGVybmFsIG1ldGhvZCB3aWxsIGNhbGwgb3BlcmF0
aW9ucyB0aGF0IG1pZ2h0IEdDIHdoZXJlIHRoZSBHQyB3aWxsIGNhdXNlIHRoZSB3YXRjaHBvaW50
IGl0c2VsZiB0byBkZXN0cnVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MTk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjMwMjM2MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBGaXJpbmcgYSB3YXRj
aHBvaW50IG1heSBjYXVzZSBhIEdDIHRvIGhhcHBlbi4gVGhpcyBHQyBjb3VsZCBkZXN0cm95IHZh
cmlvdXMKKyAgICAgICAgV2F0Y2hwb2ludHMgdGhlbXNlbHZlcyB3aGlsZSB0aGV5J3JlIGluIHRo
ZSBwcm9jZXNzIG9mIGZpcmluZy4gSXQncyBub3Qgc2FmZQorICAgICAgICBmb3IgbW9zdCBXYXRj
aHBvaW50cyB0byBiZSBkZXN0cnVjdGVkIHdoaWxlIHRoZXkncmUgaW4gdGhlIG1pZGRsZSBvZiBm
aXJpbmcuCisgICAgICAgIFRoaXMgR0MgY291bGQgYWxzbyBkZXN0cm95IHRoZSBXYXRjaHBvaW50
U2V0IGl0c2VsZiwgYW5kIGl0J3Mgbm90IGluIGEgc2FmZQorICAgICAgICBzdGF0ZSB0byBiZSBk
ZXN0cm95ZWQuIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cyBub3cgZGVmZXJzIGdj
IGZvciBhCisgICAgICAgIHdoaWxlLiBUaGlzIHByZXZlbnRzIGEgR0MgZnJvbSBkZXN0cnVjdGlu
ZyBhbnkgV2F0Y2hwb2ludHMgd2hpbGUgdGhleSdyZQorICAgICAgICBpbiB0aGUgcHJvY2VzcyBv
ZiBmaXJpbmcuIFRoaXMgYnVnIHdhcyBiZWluZyBoaXQgYnkgdGhlIHN0cmVzcyBHQyBib3RzCisg
ICAgICAgIGJlY2F1c2Ugd2Ugd291bGQgZGVzdHJ1Y3QgYSBwYXJ0aWN1bGFyIFdhdGNocG9pbnQg
d2hpbGUgaXQgd2FzIGZpcmluZywKKyAgICAgICAgYW5kIHRoZW4gd2Ugd291bGQgYWNjZXNzIGl0
cyBmaWVsZCBhZnRlciBpdCBoYWQgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAgVGhp
cyB3YXMgY2F1c2luZyBhbGwga2luZHMgb2Ygd2VpcmQgc3ltcHRvbXMuIEFsc28sIHRoaXMgd2Fz
IGVhc2llciB0bworICAgICAgICBjYXRjaCB3aGVuIHJ1bm5pbmcgd2l0aCBndWFyZCBtYWxsb2Mg
YmVjYXVzZSB0aGUgZmlyc3QgYWNjZXNzIGFmdGVyCisgICAgICAgIGRlc3RydWN0aW9uIHdvdWxk
IGxlYWQgdG8gYSBjcmFzaC4KKworICAgICAgICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHA6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKToKKyAgICAgICAgKiBieXRlY29kZS9W
YXJpYWJsZVdyaXRlRmlyZURldGFpbC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQu
Y3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoSlNDOjpX
YXRjaHBvaW50U2V0OjpmaXJlQWxsU2xvdyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6
OmZpcmVBbGxXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6
OmFkZCk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6OmZpcmVBbGwpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0OjppbmZsYXRlU2xvdyk6CisgICAgICAgICog
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpzdGFy
dFdhdGNoaW5nKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAg
ICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnRvdWNoKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2lu
dFNldDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmlzQmVpbmdX
YXRjaGVkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6b2Zmc2V0T2ZTdGF0ZSk6Cisg
ICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZlNldElzTm90RW1wdHkpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0OjpzdGFydFdhdGNoaW5nKToKKyAgICAgICAg
KEpTQzo6SW5saW5lV2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAgICAgIChKU0M6OklubGlu
ZVdhdGNocG9pbnRTZXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVXYXRjaHBv
aW50U2V0Ojp0b3VjaCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChXVEY6Ok1hc3F1ZXJhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxsaW50L0xMSW50
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25SYXJlRGF0YTo6Y2xlYXIpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRUeXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlOjp3aWxsU3RvcmVWYWx1ZVNsb3cpOgor
ICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6Om1ha2VUb3BTbG93KToKKyAgICAgICAgKEpTQzo6
SW5mZXJyZWRUeXBlOjpzZXQpOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6OnJlbW92ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkluZmVycmVkVHlwZTo6SW5mZXJyZWRTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkluZmVycmVkVmFsdWU6Om5vdGlmeVdyaXRlU2xvdyk6Cisg
ICAgICAgIChKU0M6OkluZmVycmVkVmFsdWU6OlZhbHVlQ2xlYW51cDo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpJbmZlcnJlZFZhbHVlOjpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6OkluZmVycmVk
VmFsdWU6OmludmFsaWRhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKToKKyAgICAgICAg
KiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFi
bGVQdXRUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dElu
dmFsaWRhdGVXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVz
KToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmU6On5EZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlOjphZGQpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRpZFRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJvdG90eXBlRm9yTG9va3VwKToKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpk
aWRSZXBsYWNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnByb3BlcnR5UmVw
bGFjZW1lbnRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzRG9udEVudW0pOgorICAgICAgICAo
SlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpkaXNhYmxlV2F0Y2hpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6YWRkSW1wdXJlUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjplbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCk6CisKIDIwMTYtMDYtMjgg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBzZWxlY3RFbGVtZW50Lm9wdGlvbnMgc2hvd3MgdW5leHBlY3RlZCBlbnRyaWVzIGlu
IGNvbnNvbGUgKG5hbWVkIGluZGV4ZXMgYmV5b25kIGNvbGxlY3Rpb24gbGVuZ3RoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIE1hc3F1ZXJhZGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKCJNYXNxdWVyYWRpbmcgb2JqZWN0IGFsbG9j
YXRlZCIpOworICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCktPmZpcmVBbGwodm0sICJNYXNxdWVyYWRpbmcgb2JqZWN0IGFsbG9jYXRlZCIpOwog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBqc051bGwoKSk7CiAgICAgICAgIE1hc3F1ZXJhZGVyKiByZXN1bHQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxNYXNxdWVyYWRlcj4odm0uaGVhcCwgc2l6ZW9mKE1hc3F1ZXJh
ZGVyKSkpIE1hc3F1ZXJhZGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICByZXN1bHQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgdm9pZCBBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocAogCiB2b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQog
ewotICAgIC8vIFdlIG5lZWQgdG8gZGVmZXIgR0MgaGVyZSBvdGhlcndpc2Ugd2UgbWlnaHQgdHJp
Z2dlciBhIEdDIHRoYXQgY291bGQgZGVzdHJveSB0aGUgb3duZXIKLSAgICAvLyBDb2RlQmxvY2su
IEluIHBhcnRpY3VsYXIsIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHdlIGFkZCByYXJlIGRhdGEgdG8g
YSBzdHJ1Y3R1cmUgd2hlbgotICAgIC8vIHdlIEVuc3VyZVdhdGNoYWJpbGl0eS4KLSAgICBEZWZl
ckdDRm9yQVdoaWxlIGRlZmVyKCpIZWFwOjpoZWFwKG1fa2V5Lm9iamVjdCgpKSk7CiAgICAgLy8g
T25lIG9mIHRoZSB3YXRjaHBvaW50cyBmaXJlZCwgYnV0IHRoZSBvdGhlciBvbmUgZGlkbid0LiBN
YWtlIHN1cmUgdGhhdCBuZWl0aGVyIG9mIHRoZW0gYXJlCiAgICAgLy8gaW4gYW55IHNldCBhbnlt
b3JlLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGJ5IGFsbG93aW5nIHVzIHRvIHJlaW5zdGFsbCB0
aGUgd2F0Y2hwb2ludHMKICAgICAvLyB3aGVyZXZlciBmcm9tIHNjcmF0Y2guCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjAy
NTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNDAsNyArMjI0MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUu
d2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChv
cC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcykgewogICAgICAgICAgICAgICAgIGlmIChvcC53YXRjaHBvaW50U2V0KQotICAg
ICAgICAgICAgICAgICAgICBvcC53YXRjaHBvaW50U2V0LT5pbnZhbGlkYXRlKFB1dFRvU2NvcGVG
aXJlRGV0YWlsKHRoaXMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgICAgIG9wLndhdGNocG9p
bnRTZXQtPmludmFsaWRhdGUodm0sIFB1dFRvU2NvcGVGaXJlRGV0YWlsKHRoaXMsIGlkZW50KSk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKICAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCh2bSwgdGhpcywgb3Auc3RydWN0dXJl
KTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ob3Aub3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAJKHJl
dmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJs
ZVdyaXRlRmlyZURldGFpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAgdm9p
ZCBWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6ZHVtcChQcmludAogICAgIG91dC5wcmludCgiV3Jp
dGUgdG8gIiwgbV9uYW1lLCAiIGluICIsIEpTVmFsdWUobV9vYmplY3QpKTsKIH0KIAotdm9pZCBW
YXJpYWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goV2F0Y2hwb2ludFNldCogc2V0LCBKU09iamVj
dCogb2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIG5hbWUpCit2b2lkIFZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsOjp0b3VjaChWTSYgdm0sIFdhdGNocG9pbnRTZXQqIHNldCwgSlNPYmplY3QqIG9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBuYW1lKQogewotICAgIHNldC0+dG91Y2goVmFyaWFi
bGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBuYW1lKSk7CisgICAgc2V0LT50b3VjaCh2bSwgVmFy
aWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBuYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB0b3VjaChXYXRjaHBvaW50U2V0KiwgSlNPYmpl
Y3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCB0b3VjaChWTSYgdm0sIFdhdGNocG9pbnRTZXQqLCBKU09iamVjdCosIGNvbnN0IFByb3Bl
cnR5TmFtZSYpOwogCiBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBtX29iamVjdDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9u
IDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldhdGNocG9pbnQuaCIKIAorI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC04MSwyNiArODMsMzMgQEAgdm9pZCBXYXRjaHBvaW50
U2V0OjphZGQoV2F0Y2hwb2ludCogd2F0YwogICAgIG1fc3RhdGUgPSBJc1dhdGNoZWQ7CiB9CiAK
LXZvaWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFNsb3coY29uc3QgRmlyZURldGFpbCYgZGV0YWls
KQordm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsU2xvdyhWTSYgdm0sIGNvbnN0IEZpcmVEZXRh
aWwmIGRldGFpbCkKIHsKICAgICBBU1NFUlQoc3RhdGUoKSA9PSBJc1dhdGNoZWQpOwogICAgIAog
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgbV9zdGF0ZSA9IElzSW52YWxpZGF0ZWQ7
IC8vIERvIHRoaXMgZmlyc3QuIE5lZWRlZCBmb3IgYWRhcHRpdmUgd2F0Y2hwb2ludHMuCi0gICAg
ZmlyZUFsbFdhdGNocG9pbnRzKGRldGFpbCk7CisgICAgZmlyZUFsbFdhdGNocG9pbnRzKHZtLCBk
ZXRhaWwpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiB9CiAKLXZvaWQgV2F0Y2hwb2lu
dFNldDo6ZmlyZUFsbFNsb3coY29uc3QgY2hhciogcmVhc29uKQordm9pZCBXYXRjaHBvaW50U2V0
OjpmaXJlQWxsU2xvdyhWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKIHsKLSAgICBmaXJlQWxs
U2xvdyhTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOworICAgIGZpcmVBbGxTbG93KHZtLCBTdHJp
bmdGaXJlRGV0YWlsKHJlYXNvbikpOwogfQogCi12b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxX
YXRjaHBvaW50cyhjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCit2b2lkIFdhdGNocG9pbnRTZXQ6
OmZpcmVBbGxXYXRjaHBvaW50cyhWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsK
ICAgICAvLyBJbiBjYXNlIHRoZXJlIGFyZSBhbnkgYWRhcHRpdmUgd2F0Y2hwb2ludHMsIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBzZWUgdGhhdCB0aGlzCiAgICAgLy8gd2F0Y2hwb2lu
dCBoYXMgYmVlbiBhbHJlYWR5IGludmFsaWRhdGVkLgogICAgIFJFTEVBU0VfQVNTRVJUKGhhc0Jl
ZW5JbnZhbGlkYXRlZCgpKTsKKworICAgIC8vIEZpcmluZyBhIHdhdGNocG9pbnQgbWF5IGNhdXNl
IGEgR0MgdG8gaGFwcGVuLiBUaGlzIEdDIGNvdWxkIGRlc3Ryb3kgdmFyaW91cworICAgIC8vIFdh
dGNocG9pbnRzIHRoZW1zZWx2ZXMgd2hpbGUgdGhleSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaXJp
bmcuIEl0J3Mgbm90IHNhZmUKKyAgICAvLyBmb3IgbW9zdCBXYXRjaHBvaW50cyB0byBiZSBkZXN0
cnVjdGVkIHdoaWxlIHRoZXkncmUgaW4gdGhlIG1pZGRsZSBvZiBmaXJpbmcuCisgICAgLy8gVGhp
cyBHQyBjb3VsZCBhbHNvIGRlc3Ryb3kgdXMsIGFuZCB3ZSdyZSBub3QgaW4gYSBzYWZlIHN0YXRl
IHRvIGJlIGRlc3Ryb3llZC4KKyAgICAvLyBUaGUgc2FmZXN0IHRoaW5nIHRvIGRvIGlzIHRvIERl
ZmVyR0NGb3JBV2hpbGUgdG8gcHJldmVudCB0aGlzIEdDIGZyb20gaGFwcGVuaW5nLgorICAgIERl
ZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKICAgICB3aGlsZSAoIW1fc2V0
LmlzRW1wdHkoKSkgewogICAgICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gbV9zZXQuYmVn
aW4oKTsKQEAgLTEzMCw5ICsxMzksOSBAQCB2b2lkIElubGluZVdhdGNocG9pbnRTZXQ6OmFkZChX
YXRjaHBvaW50CiAgICAgaW5mbGF0ZSgpLT5hZGQod2F0Y2hwb2ludCk7CiB9CiAKLXZvaWQgSW5s
aW5lV2F0Y2hwb2ludFNldDo6ZmlyZUFsbChjb25zdCBjaGFyKiByZWFzb24pCit2b2lkIElubGlu
ZVdhdGNocG9pbnRTZXQ6OmZpcmVBbGwoVk0mIHZtLCBjb25zdCBjaGFyKiByZWFzb24pCiB7Ci0g
ICAgZmlyZUFsbChTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOworICAgIGZpcmVBbGwodm0sIFN0
cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7CiB9CiAKIFdhdGNocG9pbnRTZXQqIElubGluZVdhdGNo
cG9pbnRTZXQ6OmluZmxhdGVTbG93KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAs
NyBAQCBlbnVtIFdhdGNocG9pbnRTdGF0ZSB7CiB9OwogCiBjbGFzcyBJbmxpbmVXYXRjaHBvaW50
U2V0OworY2xhc3MgVk07CiAKIGNsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4gewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CkBAIC0xNTIsNDMgKzE1Myw0MyBAQCBwdWJsaWM6CiAgICAgICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmlyZUFsbChjb25zdCBG
aXJlRGV0YWlsJiBkZXRhaWwpCisgICAgdm9pZCBmaXJlQWxsKFZNJiB2bSwgY29uc3QgRmlyZURl
dGFpbCYgZGV0YWlsKQogICAgIHsKICAgICAgICAgaWYgKExJS0VMWShtX3N0YXRlICE9IElzV2F0
Y2hlZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZpcmVBbGxTbG93KGRldGFpbCk7
CisgICAgICAgIGZpcmVBbGxTbG93KHZtLCBkZXRhaWwpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGZpcmVBbGwoY29uc3QgY2hhciogcmVhc29uKQorICAgIHZvaWQgZmlyZUFsbChWTSYgdm0sIGNv
bnN0IGNoYXIqIHJlYXNvbikKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkobV9zdGF0ZSAhPSBJ
c1dhdGNoZWQpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmaXJlQWxsU2xvdyhyZWFz
b24pOworICAgICAgICBmaXJlQWxsU2xvdyh2bSwgcmVhc29uKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCB0b3VjaChjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCisgICAgdm9pZCB0b3VjaChWTSYg
dm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChzdGF0ZSgp
ID09IENsZWFyV2F0Y2hwb2ludCkKICAgICAgICAgICAgIHN0YXJ0V2F0Y2hpbmcoKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgZmlyZUFsbChkZXRhaWwpOworICAgICAgICAgICAgZmlyZUFs
bCh2bSwgZGV0YWlsKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCB0b3VjaChjb25zdCBjaGFyKiBy
ZWFzb24pCisgICAgdm9pZCB0b3VjaChWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7
Ci0gICAgICAgIHRvdWNoKFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7CisgICAgICAgIHRvdWNo
KHZtLCBTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGlu
dmFsaWRhdGUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQorICAgIHZvaWQgaW52YWxpZGF0ZShW
TSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChzdGF0
ZSgpID09IElzV2F0Y2hlZCkKLSAgICAgICAgICAgIGZpcmVBbGwoZGV0YWlsKTsKKyAgICAgICAg
ICAgIGZpcmVBbGwodm0sIGRldGFpbCk7CiAgICAgICAgIG1fc3RhdGUgPSBJc0ludmFsaWRhdGVk
OwogICAgIH0KICAgICAKLSAgICB2b2lkIGludmFsaWRhdGUoY29uc3QgY2hhciogcmVhc29uKQor
ICAgIHZvaWQgaW52YWxpZGF0ZShWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7Ci0g
ICAgICAgIGludmFsaWRhdGUoU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKKyAgICAgICAgaW52
YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBpc0JlaW5nV2F0Y2hlZCgpIGNvbnN0CkBAIC0yMDAsMTEgKzIwMSwxMSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0YXRlKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFdhdGNocG9pbnRTZXQsIG1fc3RhdGUpOyB9CiAgICAgaW50OF90KiBhZGRyZXNzT2ZT
ZXRJc05vdEVtcHR5KCkgeyByZXR1cm4gJm1fc2V0SXNOb3RFbXB0eTsgfQogICAgIAotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZUFsbFNsb3coY29uc3QgRmlyZURldGFpbCYpOyAvLyBD
YWxsIG9ubHkgaWYgeW91J3ZlIGNoZWNrZWQgaXNXYXRjaGVkLgotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmlyZUFsbFNsb3coY29uc3QgY2hhciogcmVhc29uKTsgLy8gRGl0dG8uCisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsU2xvdyhWTSYsIGNvbnN0IEZpcmVEZXRhaWwm
KTsgLy8gQ2FsbCBvbmx5IGlmIHlvdSd2ZSBjaGVja2VkIGlzV2F0Y2hlZC4KKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGZpcmVBbGxTbG93KFZNJiwgY29uc3QgY2hhciogcmVhc29uKTsgLy8g
RGl0dG8uCiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgZmlyZUFsbFdhdGNocG9pbnRzKGNvbnN0
IEZpcmVEZXRhaWwmKTsKKyAgICB2b2lkIGZpcmVBbGxXYXRjaHBvaW50cyhWTSYsIGNvbnN0IEZp
cmVEZXRhaWwmKTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsK
IApAQCAtMjk2LDEwICsyOTcsMTAgQEAgcHVibGljOgogICAgICAgICBtX2RhdGEgPSBlbmNvZGVT
dGF0ZShJc1dhdGNoZWQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZpcmVBbGwoY29uc3QgRmly
ZURldGFpbCYgZGV0YWlsKQorICAgIHZvaWQgZmlyZUFsbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRh
aWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChpc0ZhdCgpKSB7Ci0gICAgICAgICAgICBm
YXQoKS0+ZmlyZUFsbChkZXRhaWwpOworICAgICAgICAgICAgZmF0KCktPmZpcmVBbGwodm0sIGRl
dGFpbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29k
ZVN0YXRlKG1fZGF0YSkgPT0gQ2xlYXJXYXRjaHBvaW50KQpAQCAtMzA4LDIwICszMDksMjAgQEAg
cHVibGljOgogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICAKLSAg
ICB2b2lkIGludmFsaWRhdGUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQorICAgIHZvaWQgaW52
YWxpZGF0ZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAg
IGlmIChpc0ZhdCgpKQotICAgICAgICAgICAgZmF0KCktPmludmFsaWRhdGUoZGV0YWlsKTsKKyAg
ICAgICAgICAgIGZhdCgpLT5pbnZhbGlkYXRlKHZtLCBkZXRhaWwpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX2RhdGEgPSBlbmNvZGVTdGF0ZShJc0ludmFsaWRhdGVkKTsKICAgICB9CiAg
ICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKGNvbnN0IGNoYXIqIHJlYXNv
bik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKFZNJiB2bSwgY29uc3QgY2hh
ciogcmVhc29uKTsKICAgICAKLSAgICB2b2lkIHRvdWNoKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFp
bCkKKyAgICB2b2lkIHRvdWNoKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAg
IHsKICAgICAgICAgaWYgKGlzRmF0KCkpIHsKLSAgICAgICAgICAgIGZhdCgpLT50b3VjaChkZXRh
aWwpOworICAgICAgICAgICAgZmF0KCktPnRvdWNoKHZtLCBkZXRhaWwpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHVpbnRwdHJfdCBkYXRhID0gbV9kYXRhOwpAQCAt
MzM1LDkgKzMzNiw5IEBAIHB1YmxpYzoKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCB0b3VjaChjb25zdCBjaGFyKiByZWFzb24pCisgICAgdm9p
ZCB0b3VjaChWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7Ci0gICAgICAgIHRvdWNo
KFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7CisgICAgICAgIHRvdWNoKHZtLCBTdHJpbmdGaXJl
RGV0YWlsKHJlYXNvbikpOwogICAgIH0KIAogICAgIC8vIE5vdGUgdGhhdCBmb3IgYW55IHdhdGNo
cG9pbnQgdGhhdCBpcyB2aXNpYmxlIGZyb20gdGhlIERGRywgaXQgd291bGQgYmUgaW5jb3JyZWN0
IHRvIHdyaXRlIGNvZGUgbGlrZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMDI1
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAgICAgICAgICAgICAgICAgLy8gbm90aWZ5
V3JpdGUoKSwgc2luY2UgdGhhdCB3b3VsZCBiZSBjdW1iZXJzb21lLiBBbHNvLCB3YXRjaGluZyBm
b3JtYWwKICAgICAgICAgICAgICAgICAgICAgLy8gcGFyYW1ldGVycyB3aGVuICJhcmd1bWVudHMi
IGlzIGluIHBsYXkgaXMgdW5saWtlbHkgdG8gYmUgc3VwZXIgcHJvZml0YWJsZS4KICAgICAgICAg
ICAgICAgICAgICAgLy8gU28sIHdlIGp1c3QgZGlzYWJsZSBpdC4KLSAgICAgICAgICAgICAgICAg
ICAgZW50cnkuZGlzYWJsZVdhdGNoaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmRp
c2FibGVXYXRjaGluZygqbV92bSk7CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9s
VGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIGVudHJ5KTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfdG9fc2NvcGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTm90aWZ5V3JpdGUoCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBzZXQtPnRvdWNoKCJF
eGVjdXRlZCBOb3RpZnlXcml0ZSIpOworICAgIHNldC0+dG91Y2godm0sICJFeGVjdXRlZCBOb3Rp
ZnlXcml0ZSIpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092
ZXJmbG93Rm9yVmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwMjU3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMDYsNyArMTIwNiw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICBpZiAobnVtVmFyaWFibGVzIHx8IG51bUZ1bmN0aW9u
cykgewogICAgICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIodm0sIHZh
cmlhYmxlT2JqZWN0KTsKICAgICAgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5uZXh0KCkpCi0gICAg
ICAgICAgICB2YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnZhckluamVjdGlvbldhdGNo
cG9pbnQoKS0+ZmlyZUFsbCgiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0aW9uIHdhdGNo
cG9pbnQiKTsKKyAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dmFy
SW5qZWN0aW9uV2F0Y2hwb2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0ZWQgZXZhbCwgZmlyZWQg
VmFySW5qZWN0aW9uIHdhdGNocG9pbnQiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtVmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT52YXJpYWJsZShpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA3OCw3ICsyMDc4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUo
RQogICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogZW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNM
ZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7CiAgICAgICAgIGVudmlyb25tZW50LT52YXJpYWJs
ZUF0KFNjb3BlT2Zmc2V0KHBjWzZdLnUub3BlcmFuZCkpLnNldCh2bSwgZW52aXJvbm1lbnQsIHZh
bHVlKTsKICAgICAgICAgaWYgKFdhdGNocG9pbnRTZXQqIHNldCA9IHBjWzVdLnUud2F0Y2hwb2lu
dFNldCkKLSAgICAgICAgICAgIHNldC0+dG91Y2goIkV4ZWN1dGVkIG9wX3B1dF9zY29wZTxMb2Nh
bENsb3N1cmVWYXI+Iik7CisgICAgICAgICAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQgb3Bf
cHV0X3Njb3BlPExvY2FsQ2xvc3VyZVZhcj4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3RvX3NjCiAgICAgICAgIC8vIHRvIGhhdmUgYWxy
ZWFkeSBjaGFuZ2VkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUuIE90aGVyd2lzZSB3ZSBtaWdo
dCB3YXRjaCBhbmQgY29uc3RhbnQtZm9sZAogICAgICAgICAvLyB0byB0aGUgVW5kZWZpbmVkIHZh
bHVlIGZyb20gYmVmb3JlIHRoZSBhc3NpZ25tZW50LgogICAgICAgICBpZiAoV2F0Y2hwb2ludFNl
dCogc2V0ID0gcGNbNV0udS53YXRjaHBvaW50U2V0KQotICAgICAgICAgICAgc2V0LT50b3VjaCgi
RXhlY3V0ZWQgb3BfcHV0X3Njb3BlPExvY2FsQ2xvc3VyZVZhcj4iKTsKKyAgICAgICAgICAgIHNl
dC0+dG91Y2godm0sICJFeGVjdXRlZCBvcF9wdXRfc2NvcGU8TG9jYWxDbG9zdXJlVmFyPiIpOwog
ICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNyArNjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
CiAKIHZvaWQgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpmaXJlQWxsKCkKIHsKLSAg
ICBzZXQoKS0+ZmlyZUFsbCgiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIHNldCgp
LT5maXJlQWxsKCp2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODgsNyArODgsNyBAQCB2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmNsZWFyKGNvbnN0IGNoYXIq
CiB7CiAgICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOwogICAgIG1faW50ZXJu
YWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmNsZWFyKCk7Ci0gICAgbV9vYmplY3RBbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQuZmlyZUFsbChyZWFzb24pOworICAgIG1fb2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50LmZpcmVBbGwoKnZtKCksIHJlYXNvbik7CiB9CiAKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlLmNwcAko
cmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJy
ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgSW5mZXJy
ZWRUeXBlOjp3aWxsU3RvcmVWYWx1ZVNsb3coVk0KICAgICB9CiAgICAgCiAgICAgSW5mZXJyZWRU
eXBlRmlyZURldGFpbCBkZXRhaWwodGhpcywgcHJvcGVydHlOYW1lLnVpZCgpLCBvbGRUeXBlLCBt
eVR5cGUsIHZhbHVlKTsKLSAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFsbChkZXRhaWwpOworICAg
IG1fd2F0Y2hwb2ludFNldC5maXJlQWxsKHZtLCBkZXRhaWwpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEluZmVycmVkVHlwZTo6bWFrZVRvcFNsb3co
Vk0mIHZtLCBQCiAgICAgfQogCiAgICAgSW5mZXJyZWRUeXBlRmlyZURldGFpbCBkZXRhaWwodGhp
cywgcHJvcGVydHlOYW1lLnVpZCgpLCBvbGRUeXBlLCBUb3AsIEpTVmFsdWUoKSk7Ci0gICAgbV93
YXRjaHBvaW50U2V0LmZpcmVBbGwoZGV0YWlsKTsKKyAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFs
bCh2bSwgZGV0YWlsKTsKIH0KIAogYm9vbCBJbmZlcnJlZFR5cGU6OnNldChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiBsb2NrZXIsIFZNJiB2bSwgRGVzY3JpcHRvciBuZXdEZXNjcmlwdG9yKQpA
QCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgSW5mZXJyZWRUeXBlOjpyZW1vdmVTdHJ1Y3R1cmUoKQog
ICAgIH0KIAogICAgIEluZmVycmVkVHlwZUZpcmVEZXRhaWwgZGV0YWlsKHRoaXMsIG51bGxwdHIs
IG9sZERlc2NyaXB0b3IsIG5ld0Rlc2NyaXB0b3IsIEpTVmFsdWUoKSk7Ci0gICAgbV93YXRjaHBv
aW50U2V0LmZpcmVBbGwoZGV0YWlsKTsKKyAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwg
ZGV0YWlsKTsKIH0KIAogdm9pZCBJbmZlcnJlZFR5cGU6OkluZmVycmVkU3RydWN0dXJlV2F0Y2hw
b2ludDo6ZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRWYWx1ZS5jcHAJKHJldmlzaW9uIDIwMjU3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgSW5mZXJyZWRWYWx1ZTo6bm90aWZ5
V3JpdGVTbG93KFZNJiAKICAgICAgICAgQVNTRVJUKCEhbV92YWx1ZSk7CiAgICAgICAgIGlmICht
X3ZhbHVlLmdldCgpID09IHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpbnZh
bGlkYXRlKGRldGFpbCk7CisgICAgICAgIGludmFsaWRhdGUodm0sIGRldGFpbCk7CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBJc0ludmFsaWRhdGVkOgpAQCAtMTI1LDcgKzEy
NSw3IEBAIHZvaWQgSW5mZXJyZWRWYWx1ZTo6VmFsdWVDbGVhbnVwOjpmaW5hbGkKICAgICBpZiAo
SGVhcDo6aXNNYXJrZWQobV9vd25lci0+bV92YWx1ZS5nZXQoKS5hc0NlbGwoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBtX293bmVyLT5pbnZhbGlkYXRlKFN0cmluZ0ZpcmVEZXRhaWwo
IkluZmVycmVkVmFsdWUgY2xlYW4tdXAgZHVyaW5nIEdDIikpOworICAgIG1fb3duZXItPmludmFs
aWRhdGUoKm1fb3duZXItPnZtKCksIFN0cmluZ0ZpcmVEZXRhaWwoIkluZmVycmVkVmFsdWUgY2xl
YW4tdXAgZHVyaW5nIEdDIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFZhbHVlLmgJKHJldmlzaW9uIDIw
MjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtODgsMTAgKzg4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbm90aWZ5
V3JpdGVTbG93KHZtLCB2YWx1ZSwgcmVhc29uKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBpbnZh
bGlkYXRlKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKKyAgICB2b2lkIGludmFsaWRhdGUoVk0m
IHZtLCBjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICAgewogICAgICAgICBtX3ZhbHVlLmNs
ZWFyKCk7Ci0gICAgICAgIG1fc2V0LmludmFsaWRhdGUoZGV0YWlsKTsKKyAgICAgICAgbV9zZXQu
aW52YWxpZGF0ZSh2bSwgZGV0YWlsKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDMsNyAr
OTQzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKFZNJiB2bQogICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IGFsbCBhbGxvY2F0aW9ucyBvciBpbmRleGVkIHN0b3JhZ2UgdHJhbnNp
dGlvbnMgdGhhdCBhcmUgaW5saW5pbmcKICAgICAvLyB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J3Mg
c2FmZSB0byB0cmFuc2l0aW9uIHRvIGEgbm9uLVNsb3dQdXQgYXJyYXkgc3RvcmFnZSBkb24ndAog
ICAgIC8vIGRvIHNvIGFueW1vcmUuCi0gICAgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQtPmZp
cmVBbGwoIkhhdmluZyBhIGJhZCB0aW1lIik7CisgICAgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQtPmZpcmVBbGwodm0sICJIYXZpbmcgYSBiYWQgdGltZSIpOwogICAgIEFTU0VSVChpc0hhdmlu
Z0FCYWRUaW1lKCkpOyAvLyBUaGUgd2F0Y2hwb2ludCBpcyB3aGF0IHRlbGxzIHVzIHRoYXQgd2Un
cmUgaGF2aW5nIGEgYmFkIHRpbWUuCiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYWxsIEpT
QXJyYXkgYWxsb2NhdGlvbnMgdGhhdCBsb2FkIHRoZSBhcHByb3ByaWF0ZSBzdHJ1Y3R1cmUgZnJv
bQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyAr
MTQ2LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIHN5bWJvbFRhYmxlUHV0VG91Y2hXYQogewogICAg
IHJlZy0+c2V0KHZtLCBvYmplY3QsIHZhbHVlKTsKICAgICBpZiAoc2V0KQotICAgICAgICBWYXJp
YWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjp0b3VjaCh2bSwgc2V0LCBvYmplY3QsIHBy
b3BlcnR5TmFtZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlw
ZT4KQEAgLTE1NCw3ICsxNTQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgc3ltYm9sVGFibGVQdXRJ
bnZhbGlkCiB7CiAgICAgcmVnLT5zZXQodm0sIG9iamVjdCwgdmFsdWUpOwogICAgIGlmIChzZXQp
Ci0gICAgICAgIHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbChvYmplY3Qs
IHByb3BlcnR5TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhhZCBmb3VuZCB0
aGlzIHN0YXRpY2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCisgICAgICAgIHNl
dC0+aW52YWxpZGF0ZSh2bSwgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKTsgLy8gRG9uJ3QgbWVzcyBhcm91bmQgLSBpZiB3ZSBoYWQgZm91bmQgdGhpcyBzdGF0
aWNhbGx5LCB3ZSB3b3VsZCBoYXZlIGludmFsaWRhdGVkIGl0LgogfQogCiBlbnVtIGNsYXNzIFN5
bWJvbFRhYmxlUHV0TW9kZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1OCw3ICs4NTgsNyBA
QCB2b2lkIFN0cnVjdHVyZTo6c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yCiAKIHZvaWQgU3RydWN0
dXJlOjpkaWRDYWNoZVByb3BlcnR5UmVwbGFjZW1lbnQoVk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQpCiB7Ci0gICAgZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQodm0s
IG9mZnNldCktPmZpcmVBbGwoIkRpZCBjYWNoZSBwcm9wZXJ0eSByZXBsYWNlbWVudCIpOworICAg
IGVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KHZtLCBvZmZzZXQpLT5maXJl
QWxsKHZtLCAiRGlkIGNhY2hlIHByb3BlcnR5IHJlcGxhY2VtZW50Iik7CiB9CiAKIHZvaWQgU3Ry
dWN0dXJlOjpzdGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzKFZNJiB2bSkKQEAgLTEwNzUs
NyArMTA3NSw3IEBAIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXIKIERl
ZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlOjp+RGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUoKQogewogICAgIGlmIChtX3N0cnVjdHVyZSkKLSAg
ICAgICAgbV9zdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkuZmlyZUFsbChTdHJ1
Y3R1cmVGaXJlRGV0YWlsKG1fc3RydWN0dXJlKSk7CisgICAgICAgIG1fc3RydWN0dXJlLT50cmFu
c2l0aW9uV2F0Y2hwb2ludFNldCgpLmZpcmVBbGwoKm1fc3RydWN0dXJlLT52bSgpLCBTdHJ1Y3R1
cmVGaXJlRGV0YWlsKG1fc3RydWN0dXJlKSk7CiB9CiAKIHZvaWQgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmU6OmFkZChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
QEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQgU3RydWN0dXJlOjpkaWRUcmFuc2l0aW9uRnJvbVRo
aXNTdHIKICAgICBpZiAoZGVmZXJyZWQpCiAgICAgICAgIGRlZmVycmVkLT5hZGQodGhpcyk7CiAg
ICAgZWxzZQotICAgICAgICBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0LmZpcmVBbGwoU3RydWN0
dXJlRmlyZURldGFpbCh0aGlzKSk7CisgICAgICAgIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQu
ZmlyZUFsbCgqdm0oKSwgU3RydWN0dXJlRmlyZURldGFpbCh0aGlzKSk7CiB9CiAKIEpTVmFsdWUg
U3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCBp
bmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OmRpZFJlcGxhY2VQcm9wZXJ0CiAgICAgV2F0Y2hwb2ludFNl
dCogc2V0ID0gbWFwLT5nZXQob2Zmc2V0KTsKICAgICBpZiAoTElLRUxZKCFzZXQpKQogICAgICAg
ICByZXR1cm47Ci0gICAgc2V0LT5maXJlQWxsKCJQcm9wZXJ0eSBkaWQgZ2V0IHJlcGxhY2VkIik7
CisgICAgc2V0LT5maXJlQWxsKCp2bSgpLCAiUHJvcGVydHkgZGlkIGdldCByZXBsYWNlZCIpOwog
fQogCiBpbmxpbmUgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjpwcm9wZXJ0eVJlcGxhY2VtZW50
V2F0Y2hwb2ludFNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4MCwxMCArMjgwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHMoKSAmIERv
bnRFbnVtRmxhZzsKICAgICB9CiAgICAgCi0gICAgdm9pZCBkaXNhYmxlV2F0Y2hpbmcoKQorICAg
IHZvaWQgZGlzYWJsZVdhdGNoaW5nKFZNJiB2bSkKICAgICB7CiAgICAgICAgIGlmIChXYXRjaHBv
aW50U2V0KiBzZXQgPSB3YXRjaHBvaW50U2V0KCkpCi0gICAgICAgICAgICBzZXQtPmludmFsaWRh
dGUoIkRpc2FibGluZyB3YXRjaGluZyBpbiBzeW1ib2wgdGFibGUiKTsKKyAgICAgICAgICAgIHNl
dC0+aW52YWxpZGF0ZSh2bSwgIkRpc2FibGluZyB3YXRjaGluZyBpbiBzeW1ib2wgdGFibGUiKTsK
ICAgICAgICAgaWYgKHZhck9mZnNldCgpLmlzU2NvcGUoKSkKICAgICAgICAgICAgIHBhY2sodmFy
T2Zmc2V0KCksIGZhbHNlLCBpc1JlYWRPbmx5KCksIGlzRG9udEVudW0oKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NDgsNyArNzQ4LDcgQEAgdm9pZCBWTTo6cmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcAog
dm9pZCBWTTo6YWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgaWYgKFJlZlB0cjxXYXRjaHBvaW50U2V0PiB3YXRjaHBvaW50U2V0ID0gbV9pbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnRTZXRzLnRha2UocHJvcGVydHlOYW1lKSkKLSAgICAgICAgd2F0Y2hw
b2ludFNldC0+ZmlyZUFsbCgiSW1wdXJlIHByb3BlcnR5IGFkZGVkIik7CisgICAgICAgIHdhdGNo
cG9pbnRTZXQtPmZpcmVBbGwoKnRoaXMsICJJbXB1cmUgcHJvcGVydHkgYWRkZWQiKTsKIH0KIAog
c3RhdGljIGJvb2wgZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQodW5zaWduZWQmIGNv
dW50ZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkb0VuYWJsZVdvcmspCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wNi0yOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KKworICAgICAgICBzb21lIFdhdGNocG9pbnRzJyA6OmZpcmVJbnRlcm5hbCBt
ZXRob2Qgd2lsbCBjYWxsIG9wZXJhdGlvbnMgdGhhdCBtaWdodCBHQyB3aGVyZSB0aGUgR0Mgd2ls
bCBjYXVzZSB0aGUgd2F0Y2hwb2ludCBpdHNlbGYgdG8gZGVzdHJ1Y3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTE5OAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjYzMDIzNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2ludHNGb3JXaW5k
b3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJn
ZXQ6OmNyZWF0ZSk6CisKIDIwMTYtMDYtMjggIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFBocmFzaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGFjY2VwdGVkIGluIDxt
bz4gZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDcgKzMxOCw3
IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2EKICAgICAgICAgaWYg
KCF3cmFwcGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEpTRE9NV2luZG93QmFz
ZSoganNXaW5kb3cgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPih3cmFwcGVyKTsKLSAg
ICAgICAganNXaW5kb3ctPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cy5maXJlQWxsKCJGcmFtZSBj
bGVhcmVkIik7CisgICAgICAgIGpzV2luZG93LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMuZmly
ZUFsbCh2bSwgIkZyYW1lIGNsZWFyZWQiKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAyMDI1NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyKCRpbXBsVHlwZSkgdW5s
ZXNzICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjwkaW1wbFR5cGU+
JiYgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoXCJBbGxvY2F0ZWQgbWFzcXVl
cmFkaW5nIG9iamVjdFwiKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZp
cmVBbGwoZ2xvYmFsT2JqZWN0LT52bSgpLCBcIkFsbG9jYXRlZCBtYXNxdWVyYWRpbmcgb2JqZWN0
XCIpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05h
bWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5oCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBUZXN0RXZlbnRUYXJn
ZXQgRE9NV3JhcHBlZDsKICAgICBzdGF0aWMgSlNUZXN0RXZlbnRUYXJnZXQqIGNyZWF0ZShKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8VGVzdEV2ZW50VGFyZ2V0PiYmIGltcGwpCiAgICAgewotICAgICAgICBnbG9iYWxPYmplY3Qt
Pm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoIkFsbG9jYXRlZCBt
YXNxdWVyYWRpbmcgb2JqZWN0Iik7CisgICAgICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNB
c1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxPYmplY3QtPnZtKCksICJBbGxv
Y2F0ZWQgbWFzcXVlcmFkaW5nIG9iamVjdCIpOwogICAgICAgICBKU1Rlc3RFdmVudFRhcmdldCog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudFRhcmdldD4o
Z2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RFdmVudFRhcmdldChzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282269</attachid>
            <date>2016-06-28 12:44:24 -0700</date>
            <delta_ts>2016-06-28 12:50:26 -0700</delta_ts>
            <desc>lets see what the bots think</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>32524</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDE2LTA2LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IHNvbWUgV2F0Y2hwb2ludHMnIDo6ZmlyZUludGVybmFsIG1ldGhvZCB3aWxsIGNhbGwgb3BlcmF0
aW9ucyB0aGF0IG1pZ2h0IEdDIHdoZXJlIHRoZSBHQyB3aWxsIGNhdXNlIHRoZSB3YXRjaHBvaW50
IGl0c2VsZiB0byBkZXN0cnVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MTk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjMwMjM2MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBGaXJpbmcgYSB3YXRj
aHBvaW50IG1heSBjYXVzZSBhIEdDIHRvIGhhcHBlbi4gVGhpcyBHQyBjb3VsZCBkZXN0cm95IHZh
cmlvdXMKKyAgICAgICAgV2F0Y2hwb2ludHMgdGhlbXNlbHZlcyB3aGlsZSB0aGV5J3JlIGluIHRo
ZSBwcm9jZXNzIG9mIGZpcmluZy4gSXQncyBub3Qgc2FmZQorICAgICAgICBmb3IgbW9zdCBXYXRj
aHBvaW50cyB0byBiZSBkZXN0cnVjdGVkIHdoaWxlIHRoZXkncmUgaW4gdGhlIG1pZGRsZSBvZiBm
aXJpbmcuCisgICAgICAgIFRoaXMgR0MgY291bGQgYWxzbyBkZXN0cm95IHRoZSBXYXRjaHBvaW50
U2V0IGl0c2VsZiwgYW5kIGl0J3Mgbm90IGluIGEgc2FmZQorICAgICAgICBzdGF0ZSB0byBiZSBk
ZXN0cm95ZWQuIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cyBub3cgZGVmZXJzIGdj
IGZvciBhCisgICAgICAgIHdoaWxlLiBUaGlzIHByZXZlbnRzIGEgR0MgZnJvbSBkZXN0cnVjdGlu
ZyBhbnkgV2F0Y2hwb2ludHMgd2hpbGUgdGhleSdyZQorICAgICAgICBpbiB0aGUgcHJvY2VzcyBv
ZiBmaXJpbmcuIFRoaXMgYnVnIHdhcyBiZWluZyBoaXQgYnkgdGhlIHN0cmVzcyBHQyBib3RzCisg
ICAgICAgIGJlY2F1c2Ugd2Ugd291bGQgZGVzdHJ1Y3QgYSBwYXJ0aWN1bGFyIFdhdGNocG9pbnQg
d2hpbGUgaXQgd2FzIGZpcmluZywKKyAgICAgICAgYW5kIHRoZW4gd2Ugd291bGQgYWNjZXNzIGl0
cyBmaWVsZCBhZnRlciBpdCBoYWQgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAgVGhp
cyB3YXMgY2F1c2luZyBhbGwga2luZHMgb2Ygd2VpcmQgc3ltcHRvbXMuIEFsc28sIHRoaXMgd2Fz
IGVhc2llciB0bworICAgICAgICBjYXRjaCB3aGVuIHJ1bm5pbmcgd2l0aCBndWFyZCBtYWxsb2Mg
YmVjYXVzZSB0aGUgZmlyc3QgYWNjZXNzIGFmdGVyCisgICAgICAgIGRlc3RydWN0aW9uIHdvdWxk
IGxlYWQgdG8gYSBjcmFzaC4KKworICAgICAgICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHA6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKToKKyAgICAgICAgKiBieXRlY29kZS9W
YXJpYWJsZVdyaXRlRmlyZURldGFpbC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQu
Y3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoSlNDOjpX
YXRjaHBvaW50U2V0OjpmaXJlQWxsU2xvdyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6
OmZpcmVBbGxXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6
OmFkZCk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6OmZpcmVBbGwpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0OjppbmZsYXRlU2xvdyk6CisgICAgICAgICog
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpzdGFy
dFdhdGNoaW5nKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAg
ICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnRvdWNoKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2lu
dFNldDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmlzQmVpbmdX
YXRjaGVkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6b2Zmc2V0T2ZTdGF0ZSk6Cisg
ICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZlNldElzTm90RW1wdHkpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0OjpzdGFydFdhdGNoaW5nKToKKyAgICAgICAg
KEpTQzo6SW5saW5lV2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAgICAgIChKU0M6OklubGlu
ZVdhdGNocG9pbnRTZXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVXYXRjaHBv
aW50U2V0Ojp0b3VjaCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChXVEY6Ok1hc3F1ZXJhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxsaW50L0xMSW50
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25SYXJlRGF0YTo6Y2xlYXIpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRUeXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlOjp3aWxsU3RvcmVWYWx1ZVNsb3cpOgor
ICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6Om1ha2VUb3BTbG93KToKKyAgICAgICAgKEpTQzo6
SW5mZXJyZWRUeXBlOjpzZXQpOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6OnJlbW92ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkluZmVycmVkVHlwZTo6SW5mZXJyZWRTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkluZmVycmVkVmFsdWU6Om5vdGlmeVdyaXRlU2xvdyk6Cisg
ICAgICAgIChKU0M6OkluZmVycmVkVmFsdWU6OlZhbHVlQ2xlYW51cDo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpJbmZlcnJlZFZhbHVlOjpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6OkluZmVycmVk
VmFsdWU6OmludmFsaWRhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKToKKyAgICAgICAg
KiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFi
bGVQdXRUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dElu
dmFsaWRhdGVXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVz
KToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmU6On5EZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlOjphZGQpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRpZFRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJvdG90eXBlRm9yTG9va3VwKToKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpk
aWRSZXBsYWNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnByb3BlcnR5UmVw
bGFjZW1lbnRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzRG9udEVudW0pOgorICAgICAgICAo
SlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpkaXNhYmxlV2F0Y2hpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6YWRkSW1wdXJlUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjplbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCk6CisKIDIwMTYtMDYtMjgg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBzZWxlY3RFbGVtZW50Lm9wdGlvbnMgc2hvd3MgdW5leHBlY3RlZCBlbnRyaWVzIGlu
IGNvbnNvbGUgKG5hbWVkIGluZGV4ZXMgYmV5b25kIGNvbGxlY3Rpb24gbGVuZ3RoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIE1hc3F1ZXJhZGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKCJNYXNxdWVyYWRpbmcgb2JqZWN0IGFsbG9j
YXRlZCIpOworICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCktPmZpcmVBbGwodm0sICJNYXNxdWVyYWRpbmcgb2JqZWN0IGFsbG9jYXRlZCIpOwog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBqc051bGwoKSk7CiAgICAgICAgIE1hc3F1ZXJhZGVyKiByZXN1bHQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxNYXNxdWVyYWRlcj4odm0uaGVhcCwgc2l6ZW9mKE1hc3F1ZXJh
ZGVyKSkpIE1hc3F1ZXJhZGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICByZXN1bHQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgdm9pZCBBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocAogCiB2b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQog
ewotICAgIC8vIFdlIG5lZWQgdG8gZGVmZXIgR0MgaGVyZSBvdGhlcndpc2Ugd2UgbWlnaHQgdHJp
Z2dlciBhIEdDIHRoYXQgY291bGQgZGVzdHJveSB0aGUgb3duZXIKLSAgICAvLyBDb2RlQmxvY2su
IEluIHBhcnRpY3VsYXIsIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHdlIGFkZCByYXJlIGRhdGEgdG8g
YSBzdHJ1Y3R1cmUgd2hlbgotICAgIC8vIHdlIEVuc3VyZVdhdGNoYWJpbGl0eS4KLSAgICBEZWZl
ckdDRm9yQVdoaWxlIGRlZmVyKCpIZWFwOjpoZWFwKG1fa2V5Lm9iamVjdCgpKSk7CiAgICAgLy8g
T25lIG9mIHRoZSB3YXRjaHBvaW50cyBmaXJlZCwgYnV0IHRoZSBvdGhlciBvbmUgZGlkbid0LiBN
YWtlIHN1cmUgdGhhdCBuZWl0aGVyIG9mIHRoZW0gYXJlCiAgICAgLy8gaW4gYW55IHNldCBhbnlt
b3JlLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGJ5IGFsbG93aW5nIHVzIHRvIHJlaW5zdGFsbCB0
aGUgd2F0Y2hwb2ludHMKICAgICAvLyB3aGVyZXZlciBmcm9tIHNjcmF0Y2guCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjAy
NTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNDAsNyArMjI0MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUu
d2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChv
cC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcykgewogICAgICAgICAgICAgICAgIGlmIChvcC53YXRjaHBvaW50U2V0KQotICAg
ICAgICAgICAgICAgICAgICBvcC53YXRjaHBvaW50U2V0LT5pbnZhbGlkYXRlKFB1dFRvU2NvcGVG
aXJlRGV0YWlsKHRoaXMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgICAgIG9wLndhdGNocG9p
bnRTZXQtPmludmFsaWRhdGUodm0sIFB1dFRvU2NvcGVGaXJlRGV0YWlsKHRoaXMsIGlkZW50KSk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKICAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCh2bSwgdGhpcywgb3Auc3RydWN0dXJl
KTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ob3Aub3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAJKHJl
dmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJs
ZVdyaXRlRmlyZURldGFpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAgdm9p
ZCBWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6ZHVtcChQcmludAogICAgIG91dC5wcmludCgiV3Jp
dGUgdG8gIiwgbV9uYW1lLCAiIGluICIsIEpTVmFsdWUobV9vYmplY3QpKTsKIH0KIAotdm9pZCBW
YXJpYWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goV2F0Y2hwb2ludFNldCogc2V0LCBKU09iamVj
dCogb2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIG5hbWUpCit2b2lkIFZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsOjp0b3VjaChWTSYgdm0sIFdhdGNocG9pbnRTZXQqIHNldCwgSlNPYmplY3QqIG9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBuYW1lKQogewotICAgIHNldC0+dG91Y2goVmFyaWFi
bGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBuYW1lKSk7CisgICAgc2V0LT50b3VjaCh2bSwgVmFy
aWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBuYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB0b3VjaChXYXRjaHBvaW50U2V0KiwgSlNPYmpl
Y3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCB0b3VjaChWTSYsIFdhdGNocG9pbnRTZXQqLCBKU09iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYpOwogCiBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBtX29iamVjdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDIw
MjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldhdGNocG9pbnQuaCIKIAorI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSAiSGVhcElu
bGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCkBAIC04MSwyNiArODMsMzMgQEAgdm9pZCBXYXRjaHBvaW50U2V0
OjphZGQoV2F0Y2hwb2ludCogd2F0YwogICAgIG1fc3RhdGUgPSBJc1dhdGNoZWQ7CiB9CiAKLXZv
aWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFNsb3coY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQor
dm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsU2xvdyhWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwm
IGRldGFpbCkKIHsKICAgICBBU1NFUlQoc3RhdGUoKSA9PSBJc1dhdGNoZWQpOwogICAgIAogICAg
IFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgbV9zdGF0ZSA9IElzSW52YWxpZGF0ZWQ7IC8v
IERvIHRoaXMgZmlyc3QuIE5lZWRlZCBmb3IgYWRhcHRpdmUgd2F0Y2hwb2ludHMuCi0gICAgZmly
ZUFsbFdhdGNocG9pbnRzKGRldGFpbCk7CisgICAgZmlyZUFsbFdhdGNocG9pbnRzKHZtLCBkZXRh
aWwpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiB9CiAKLXZvaWQgV2F0Y2hwb2ludFNl
dDo6ZmlyZUFsbFNsb3coY29uc3QgY2hhciogcmVhc29uKQordm9pZCBXYXRjaHBvaW50U2V0Ojpm
aXJlQWxsU2xvdyhWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKIHsKLSAgICBmaXJlQWxsU2xv
dyhTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOworICAgIGZpcmVBbGxTbG93KHZtLCBTdHJpbmdG
aXJlRGV0YWlsKHJlYXNvbikpOwogfQogCi12b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRj
aHBvaW50cyhjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCit2b2lkIFdhdGNocG9pbnRTZXQ6OmZp
cmVBbGxXYXRjaHBvaW50cyhWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsKICAg
ICAvLyBJbiBjYXNlIHRoZXJlIGFyZSBhbnkgYWRhcHRpdmUgd2F0Y2hwb2ludHMsIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRoYXQgdGhleSBzZWUgdGhhdCB0aGlzCiAgICAgLy8gd2F0Y2hwb2ludCBo
YXMgYmVlbiBhbHJlYWR5IGludmFsaWRhdGVkLgogICAgIFJFTEVBU0VfQVNTRVJUKGhhc0JlZW5J
bnZhbGlkYXRlZCgpKTsKKworICAgIC8vIEZpcmluZyBhIHdhdGNocG9pbnQgbWF5IGNhdXNlIGEg
R0MgdG8gaGFwcGVuLiBUaGlzIEdDIGNvdWxkIGRlc3Ryb3kgdmFyaW91cworICAgIC8vIFdhdGNo
cG9pbnRzIHRoZW1zZWx2ZXMgd2hpbGUgdGhleSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaXJpbmcu
IEl0J3Mgbm90IHNhZmUKKyAgICAvLyBmb3IgbW9zdCBXYXRjaHBvaW50cyB0byBiZSBkZXN0cnVj
dGVkIHdoaWxlIHRoZXkncmUgaW4gdGhlIG1pZGRsZSBvZiBmaXJpbmcuCisgICAgLy8gVGhpcyBH
QyBjb3VsZCBhbHNvIGRlc3Ryb3kgdXMsIGFuZCB3ZSdyZSBub3QgaW4gYSBzYWZlIHN0YXRlIHRv
IGJlIGRlc3Ryb3llZC4KKyAgICAvLyBUaGUgc2FmZXN0IHRoaW5nIHRvIGRvIGlzIHRvIERlZmVy
R0NGb3JBV2hpbGUgdG8gcHJldmVudCB0aGlzIEdDIGZyb20gaGFwcGVuaW5nLgorICAgIERlZmVy
R0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKICAgICB3aGlsZSAoIW1fc2V0Lmlz
RW1wdHkoKSkgewogICAgICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gbV9zZXQuYmVnaW4o
KTsKQEAgLTEzMCw5ICsxMzksOSBAQCB2b2lkIElubGluZVdhdGNocG9pbnRTZXQ6OmFkZChXYXRj
aHBvaW50CiAgICAgaW5mbGF0ZSgpLT5hZGQod2F0Y2hwb2ludCk7CiB9CiAKLXZvaWQgSW5saW5l
V2F0Y2hwb2ludFNldDo6ZmlyZUFsbChjb25zdCBjaGFyKiByZWFzb24pCit2b2lkIElubGluZVdh
dGNocG9pbnRTZXQ6OmZpcmVBbGwoVk0mIHZtLCBjb25zdCBjaGFyKiByZWFzb24pCiB7Ci0gICAg
ZmlyZUFsbChTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOworICAgIGZpcmVBbGwodm0sIFN0cmlu
Z0ZpcmVEZXRhaWwocmVhc29uKSk7CiB9CiAKIFdhdGNocG9pbnRTZXQqIElubGluZVdhdGNocG9p
bnRTZXQ6OmluZmxhdGVTbG93KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBA
QCBlbnVtIFdhdGNocG9pbnRTdGF0ZSB7CiB9OwogCiBjbGFzcyBJbmxpbmVXYXRjaHBvaW50U2V0
OworY2xhc3MgVk07CiAKIGNsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4gewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CkBAIC0xNTIsNDMgKzE1Myw0MyBAQCBwdWJsaWM6CiAgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmlyZUFsbChjb25zdCBGaXJl
RGV0YWlsJiBkZXRhaWwpCisgICAgdm9pZCBmaXJlQWxsKFZNJiB2bSwgY29uc3QgRmlyZURldGFp
bCYgZGV0YWlsKQogICAgIHsKICAgICAgICAgaWYgKExJS0VMWShtX3N0YXRlICE9IElzV2F0Y2hl
ZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZpcmVBbGxTbG93KGRldGFpbCk7Cisg
ICAgICAgIGZpcmVBbGxTbG93KHZtLCBkZXRhaWwpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZp
cmVBbGwoY29uc3QgY2hhciogcmVhc29uKQorICAgIHZvaWQgZmlyZUFsbChWTSYgdm0sIGNvbnN0
IGNoYXIqIHJlYXNvbikKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkobV9zdGF0ZSAhPSBJc1dh
dGNoZWQpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmaXJlQWxsU2xvdyhyZWFzb24p
OworICAgICAgICBmaXJlQWxsU2xvdyh2bSwgcmVhc29uKTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCB0b3VjaChjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCisgICAgdm9pZCB0b3VjaChWTSYgdm0s
IGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChzdGF0ZSgpID09
IENsZWFyV2F0Y2hwb2ludCkKICAgICAgICAgICAgIHN0YXJ0V2F0Y2hpbmcoKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZmlyZUFsbChkZXRhaWwpOworICAgICAgICAgICAgZmlyZUFsbCh2
bSwgZGV0YWlsKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCB0b3VjaChjb25zdCBjaGFyKiByZWFz
b24pCisgICAgdm9pZCB0b3VjaChWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7Ci0g
ICAgICAgIHRvdWNoKFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7CisgICAgICAgIHRvdWNoKHZt
LCBTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGludmFs
aWRhdGUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQorICAgIHZvaWQgaW52YWxpZGF0ZShWTSYg
dm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChzdGF0ZSgp
ID09IElzV2F0Y2hlZCkKLSAgICAgICAgICAgIGZpcmVBbGwoZGV0YWlsKTsKKyAgICAgICAgICAg
IGZpcmVBbGwodm0sIGRldGFpbCk7CiAgICAgICAgIG1fc3RhdGUgPSBJc0ludmFsaWRhdGVkOwog
ICAgIH0KICAgICAKLSAgICB2b2lkIGludmFsaWRhdGUoY29uc3QgY2hhciogcmVhc29uKQorICAg
IHZvaWQgaW52YWxpZGF0ZShWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7Ci0gICAg
ICAgIGludmFsaWRhdGUoU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKKyAgICAgICAgaW52YWxp
ZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBpc0JlaW5nV2F0Y2hlZCgpIGNvbnN0CkBAIC0yMDAsMTEgKzIwMSwxMSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0YXRlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKFdhdGNocG9pbnRTZXQsIG1fc3RhdGUpOyB9CiAgICAgaW50OF90KiBhZGRyZXNzT2ZTZXRJ
c05vdEVtcHR5KCkgeyByZXR1cm4gJm1fc2V0SXNOb3RFbXB0eTsgfQogICAgIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZmlyZUFsbFNsb3coY29uc3QgRmlyZURldGFpbCYpOyAvLyBDYWxs
IG9ubHkgaWYgeW91J3ZlIGNoZWNrZWQgaXNXYXRjaGVkLgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZmlyZUFsbFNsb3coY29uc3QgY2hhciogcmVhc29uKTsgLy8gRGl0dG8uCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsU2xvdyhWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKTsg
Ly8gQ2FsbCBvbmx5IGlmIHlvdSd2ZSBjaGVja2VkIGlzV2F0Y2hlZC4KKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGZpcmVBbGxTbG93KFZNJiwgY29uc3QgY2hhciogcmVhc29uKTsgLy8gRGl0
dG8uCiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgZmlyZUFsbFdhdGNocG9pbnRzKGNvbnN0IEZp
cmVEZXRhaWwmKTsKKyAgICB2b2lkIGZpcmVBbGxXYXRjaHBvaW50cyhWTSYsIGNvbnN0IEZpcmVE
ZXRhaWwmKTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsKIApA
QCAtMjk2LDEwICsyOTcsMTAgQEAgcHVibGljOgogICAgICAgICBtX2RhdGEgPSBlbmNvZGVTdGF0
ZShJc1dhdGNoZWQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZpcmVBbGwoY29uc3QgRmlyZURl
dGFpbCYgZGV0YWlsKQorICAgIHZvaWQgZmlyZUFsbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwm
IGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChpc0ZhdCgpKSB7Ci0gICAgICAgICAgICBmYXQo
KS0+ZmlyZUFsbChkZXRhaWwpOworICAgICAgICAgICAgZmF0KCktPmZpcmVBbGwodm0sIGRldGFp
bCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29kZVN0
YXRlKG1fZGF0YSkgPT0gQ2xlYXJXYXRjaHBvaW50KQpAQCAtMzA4LDIwICszMDksMjAgQEAgcHVi
bGljOgogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICAKLSAgICB2
b2lkIGludmFsaWRhdGUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQorICAgIHZvaWQgaW52YWxp
ZGF0ZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlm
IChpc0ZhdCgpKQotICAgICAgICAgICAgZmF0KCktPmludmFsaWRhdGUoZGV0YWlsKTsKKyAgICAg
ICAgICAgIGZhdCgpLT5pbnZhbGlkYXRlKHZtLCBkZXRhaWwpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX2RhdGEgPSBlbmNvZGVTdGF0ZShJc0ludmFsaWRhdGVkKTsKICAgICB9CiAgICAg
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKGNvbnN0IGNoYXIqIHJlYXNvbik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKFZNJiwgY29uc3QgY2hhciogcmVh
c29uKTsKICAgICAKLSAgICB2b2lkIHRvdWNoKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKKyAg
ICB2b2lkIHRvdWNoKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAgIHsKICAg
ICAgICAgaWYgKGlzRmF0KCkpIHsKLSAgICAgICAgICAgIGZhdCgpLT50b3VjaChkZXRhaWwpOwor
ICAgICAgICAgICAgZmF0KCktPnRvdWNoKHZtLCBkZXRhaWwpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIHVpbnRwdHJfdCBkYXRhID0gbV9kYXRhOwpAQCAtMzM1LDkg
KzMzNiw5IEBAIHB1YmxpYzoKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCB0b3VjaChjb25zdCBjaGFyKiByZWFzb24pCisgICAgdm9pZCB0b3Vj
aChWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7Ci0gICAgICAgIHRvdWNoKFN0cmlu
Z0ZpcmVEZXRhaWwocmVhc29uKSk7CisgICAgICAgIHRvdWNoKHZtLCBTdHJpbmdGaXJlRGV0YWls
KHJlYXNvbikpOwogICAgIH0KIAogICAgIC8vIE5vdGUgdGhhdCBmb3IgYW55IHdhdGNocG9pbnQg
dGhhdCBpcyB2aXNpYmxlIGZyb20gdGhlIERGRywgaXQgd291bGQgYmUgaW5jb3JyZWN0IHRvIHdy
aXRlIGNvZGUgbGlrZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMDI1NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAgICAgICAgICAgICAgICAgLy8gbm90aWZ5V3JpdGUo
KSwgc2luY2UgdGhhdCB3b3VsZCBiZSBjdW1iZXJzb21lLiBBbHNvLCB3YXRjaGluZyBmb3JtYWwK
ICAgICAgICAgICAgICAgICAgICAgLy8gcGFyYW1ldGVycyB3aGVuICJhcmd1bWVudHMiIGlzIGlu
IHBsYXkgaXMgdW5saWtlbHkgdG8gYmUgc3VwZXIgcHJvZml0YWJsZS4KICAgICAgICAgICAgICAg
ICAgICAgLy8gU28sIHdlIGp1c3QgZGlzYWJsZSBpdC4KLSAgICAgICAgICAgICAgICAgICAgZW50
cnkuZGlzYWJsZVdhdGNoaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmRpc2FibGVX
YXRjaGluZygqbV92bSk7CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUt
PnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIGVudHJ5KTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfdG9fc2NvcGUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDI1
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTm90aWZ5V3JpdGUoCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBzZXQtPnRvdWNoKCJFeGVjdXRl
ZCBOb3RpZnlXcml0ZSIpOworICAgIHNldC0+dG91Y2godm0sICJFeGVjdXRlZCBOb3RpZnlXcml0
ZSIpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93
Rm9yVmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db3B5QmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvcHlCYXJyaWVyLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvcHlCYXJyaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgQ29weUJhcnJpZXJfaAogCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIlZN
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMDYsNyArMTIwNiw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGEKICAgICBpZiAobnVtVmFyaWFibGVzIHx8IG51bUZ1bmN0aW9ucykgewogICAg
ICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIodm0sIHZhcmlhYmxlT2Jq
ZWN0KTsKICAgICAgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5uZXh0KCkpCi0gICAgICAgICAgICB2
YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+
ZmlyZUFsbCgiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0aW9uIHdhdGNocG9pbnQiKTsK
KyAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dmFySW5qZWN0aW9u
V2F0Y2hwb2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0
aW9uIHdhdGNocG9pbnQiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
VmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT52YXJpYWJsZShpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3OCw3ICsy
MDc4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRQogICAgICAg
ICBKU0xleGljYWxFbnZpcm9ubWVudCogZW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52
aXJvbm1lbnQqPihzY29wZSk7CiAgICAgICAgIGVudmlyb25tZW50LT52YXJpYWJsZUF0KFNjb3Bl
T2Zmc2V0KHBjWzZdLnUub3BlcmFuZCkpLnNldCh2bSwgZW52aXJvbm1lbnQsIHZhbHVlKTsKICAg
ICAgICAgaWYgKFdhdGNocG9pbnRTZXQqIHNldCA9IHBjWzVdLnUud2F0Y2hwb2ludFNldCkKLSAg
ICAgICAgICAgIHNldC0+dG91Y2goIkV4ZWN1dGVkIG9wX3B1dF9zY29wZTxMb2NhbENsb3N1cmVW
YXI+Iik7CisgICAgICAgICAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQgb3BfcHV0X3Njb3Bl
PExvY2FsQ2xvc3VyZVZhcj4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X3RvX3NjCiAgICAgICAgIC8vIHRvIGhhdmUgYWxyZWFkeSBjaGFu
Z2VkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUuIE90aGVyd2lzZSB3ZSBtaWdodCB3YXRjaCBh
bmQgY29uc3RhbnQtZm9sZAogICAgICAgICAvLyB0byB0aGUgVW5kZWZpbmVkIHZhbHVlIGZyb20g
YmVmb3JlIHRoZSBhc3NpZ25tZW50LgogICAgICAgICBpZiAoV2F0Y2hwb2ludFNldCogc2V0ID0g
cGNbNV0udS53YXRjaHBvaW50U2V0KQotICAgICAgICAgICAgc2V0LT50b3VjaCgiRXhlY3V0ZWQg
b3BfcHV0X3Njb3BlPExvY2FsQ2xvc3VyZVZhcj4iKTsKKyAgICAgICAgICAgIHNldC0+dG91Y2go
dm0sICJFeGVjdXRlZCBvcF9wdXRfc2NvcGU8TG9jYWxDbG9zdXJlVmFyPiIpOwogICAgICAgICBM
TElOVF9FTkQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2luCiAKIHZvaWQg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpmaXJlQWxsKCkKIHsKLSAgICBzZXQoKS0+
ZmlyZUFsbCgiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIHNldCgpLT5maXJlQWxs
KCp2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmNsZWFyKGNvbnN0IGNoYXIqCiB7CiAgICAg
bV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOwogICAgIG1faW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25Qcm9maWxlLmNsZWFyKCk7Ci0gICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQuZmlyZUFsbChyZWFzb24pOworICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50LmZpcmVBbGwoKnZtKCksIHJlYXNvbik7CiB9CiAKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlLmNwcAkocmV2aXNpb24g
MjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgSW5mZXJyZWRUeXBlOjp3
aWxsU3RvcmVWYWx1ZVNsb3coVk0KICAgICB9CiAgICAgCiAgICAgSW5mZXJyZWRUeXBlRmlyZURl
dGFpbCBkZXRhaWwodGhpcywgcHJvcGVydHlOYW1lLnVpZCgpLCBvbGRUeXBlLCBteVR5cGUsIHZh
bHVlKTsKLSAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFsbChkZXRhaWwpOworICAgIG1fd2F0Y2hw
b2ludFNldC5maXJlQWxsKHZtLCBkZXRhaWwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTQzNCw3ICs0MzQsNyBAQCB2b2lkIEluZmVycmVkVHlwZTo6bWFrZVRvcFNsb3coVk0mIHZtLCBQ
CiAgICAgfQogCiAgICAgSW5mZXJyZWRUeXBlRmlyZURldGFpbCBkZXRhaWwodGhpcywgcHJvcGVy
dHlOYW1lLnVpZCgpLCBvbGRUeXBlLCBUb3AsIEpTVmFsdWUoKSk7Ci0gICAgbV93YXRjaHBvaW50
U2V0LmZpcmVBbGwoZGV0YWlsKTsKKyAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwgZGV0
YWlsKTsKIH0KIAogYm9vbCBJbmZlcnJlZFR5cGU6OnNldChjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiBsb2NrZXIsIFZNJiB2bSwgRGVzY3JpcHRvciBuZXdEZXNjcmlwdG9yKQpAQCAtNTE2LDcg
KzUxNiw3IEBAIHZvaWQgSW5mZXJyZWRUeXBlOjpyZW1vdmVTdHJ1Y3R1cmUoKQogICAgIH0KIAog
ICAgIEluZmVycmVkVHlwZUZpcmVEZXRhaWwgZGV0YWlsKHRoaXMsIG51bGxwdHIsIG9sZERlc2Ny
aXB0b3IsIG5ld0Rlc2NyaXB0b3IsIEpTVmFsdWUoKSk7Ci0gICAgbV93YXRjaHBvaW50U2V0LmZp
cmVBbGwoZGV0YWlsKTsKKyAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwgZGV0YWlsKTsK
IH0KIAogdm9pZCBJbmZlcnJlZFR5cGU6OkluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludDo6Zmly
ZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5mZXJyZWRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRWYWx1ZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgSW5mZXJyZWRWYWx1ZTo6bm90aWZ5V3JpdGVTbG93
KFZNJiAKICAgICAgICAgQVNTRVJUKCEhbV92YWx1ZSk7CiAgICAgICAgIGlmIChtX3ZhbHVlLmdl
dCgpID09IHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpbnZhbGlkYXRlKGRl
dGFpbCk7CisgICAgICAgIGludmFsaWRhdGUodm0sIGRldGFpbCk7CiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgY2FzZSBJc0ludmFsaWRhdGVkOgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgSW5mZXJyZWRWYWx1ZTo6VmFsdWVDbGVhbnVwOjpmaW5hbGkKICAgICBpZiAoSGVhcDo6aXNN
YXJrZWQobV9vd25lci0+bV92YWx1ZS5nZXQoKS5hc0NlbGwoKSkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBtX293bmVyLT5pbnZhbGlkYXRlKFN0cmluZ0ZpcmVEZXRhaWwoIkluZmVycmVk
VmFsdWUgY2xlYW4tdXAgZHVyaW5nIEdDIikpOworICAgIG1fb3duZXItPmludmFsaWRhdGUoKm1f
b3duZXItPnZtKCksIFN0cmluZ0ZpcmVEZXRhaWwoIkluZmVycmVkVmFsdWUgY2xlYW4tdXAgZHVy
aW5nIEdDIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFZhbHVlLmgJKHJldmlzaW9uIDIwMjU3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtODgsMTAgKzg4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbm90aWZ5V3JpdGVTbG93
KHZtLCB2YWx1ZSwgcmVhc29uKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBpbnZhbGlkYXRlKGNv
bnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKKyAgICB2b2lkIGludmFsaWRhdGUoVk0mIHZtLCBjb25z
dCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICAgewogICAgICAgICBtX3ZhbHVlLmNsZWFyKCk7Ci0g
ICAgICAgIG1fc2V0LmludmFsaWRhdGUoZGV0YWlsKTsKKyAgICAgICAgbV9zZXQuaW52YWxpZGF0
ZSh2bSwgZGV0YWlsKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDMsNyArOTQzLDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKFZNJiB2bQogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IGFsbCBhbGxvY2F0aW9ucyBvciBpbmRleGVkIHN0b3JhZ2UgdHJhbnNpdGlvbnMgdGhh
dCBhcmUgaW5saW5pbmcKICAgICAvLyB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J3Mgc2FmZSB0byB0
cmFuc2l0aW9uIHRvIGEgbm9uLVNsb3dQdXQgYXJyYXkgc3RvcmFnZSBkb24ndAogICAgIC8vIGRv
IHNvIGFueW1vcmUuCi0gICAgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQtPmZpcmVBbGwoIkhh
dmluZyBhIGJhZCB0aW1lIik7CisgICAgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQtPmZpcmVB
bGwodm0sICJIYXZpbmcgYSBiYWQgdGltZSIpOwogICAgIEFTU0VSVChpc0hhdmluZ0FCYWRUaW1l
KCkpOyAvLyBUaGUgd2F0Y2hwb2ludCBpcyB3aGF0IHRlbGxzIHVzIHRoYXQgd2UncmUgaGF2aW5n
IGEgYmFkIHRpbWUuCiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYWxsIEpTQXJyYXkgYWxs
b2NhdGlvbnMgdGhhdCBsb2FkIHRoZSBhcHByb3ByaWF0ZSBzdHJ1Y3R1cmUgZnJvbQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuaAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIHN5bWJvbFRhYmxlUHV0VG91Y2hXYQogewogICAgIHJlZy0+c2V0
KHZtLCBvYmplY3QsIHZhbHVlKTsKICAgICBpZiAoc2V0KQotICAgICAgICBWYXJpYWJsZVdyaXRl
RmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIFZh
cmlhYmxlV3JpdGVGaXJlRGV0YWlsOjp0b3VjaCh2bSwgc2V0LCBvYmplY3QsIHByb3BlcnR5TmFt
ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KQEAgLTE1
NCw3ICsxNTQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgc3ltYm9sVGFibGVQdXRJbnZhbGlkCiB7
CiAgICAgcmVnLT5zZXQodm0sIG9iamVjdCwgdmFsdWUpOwogICAgIGlmIChzZXQpCi0gICAgICAg
IHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbChvYmplY3QsIHByb3BlcnR5
TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhhZCBmb3VuZCB0aGlzIHN0YXRp
Y2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCisgICAgICAgIHNldC0+aW52YWxp
ZGF0ZSh2bSwgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsg
Ly8gRG9uJ3QgbWVzcyBhcm91bmQgLSBpZiB3ZSBoYWQgZm91bmQgdGhpcyBzdGF0aWNhbGx5LCB3
ZSB3b3VsZCBoYXZlIGludmFsaWRhdGVkIGl0LgogfQogCiBlbnVtIGNsYXNzIFN5bWJvbFRhYmxl
UHV0TW9kZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIFN0
cnVjdHVyZTo6c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yCiAKIHZvaWQgU3RydWN0dXJlOjpkaWRD
YWNoZVByb3BlcnR5UmVwbGFjZW1lbnQoVk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7
Ci0gICAgZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQodm0sIG9mZnNldCkt
PmZpcmVBbGwoIkRpZCBjYWNoZSBwcm9wZXJ0eSByZXBsYWNlbWVudCIpOworICAgIGVuc3VyZVBy
b3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KHZtLCBvZmZzZXQpLT5maXJlQWxsKHZtLCAi
RGlkIGNhY2hlIHByb3BlcnR5IHJlcGxhY2VtZW50Iik7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpz
dGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzKFZNJiB2bSkKQEAgLTEwNzUsNyArMTA3NSw3
IEBAIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXIKIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlOjp+RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0
aW9uV2F0Y2hwb2ludEZpcmUoKQogewogICAgIGlmIChtX3N0cnVjdHVyZSkKLSAgICAgICAgbV9z
dHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkuZmlyZUFsbChTdHJ1Y3R1cmVGaXJl
RGV0YWlsKG1fc3RydWN0dXJlKSk7CisgICAgICAgIG1fc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0
Y2hwb2ludFNldCgpLmZpcmVBbGwoKm1fc3RydWN0dXJlLT52bSgpLCBTdHJ1Y3R1cmVGaXJlRGV0
YWlsKG1fc3RydWN0dXJlKSk7CiB9CiAKIHZvaWQgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmU6OmFkZChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgU3RydWN0dXJlOjpkaWRUcmFuc2l0aW9uRnJvbVRoaXNTdHIKICAg
ICBpZiAoZGVmZXJyZWQpCiAgICAgICAgIGRlZmVycmVkLT5hZGQodGhpcyk7CiAgICAgZWxzZQot
ICAgICAgICBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0LmZpcmVBbGwoU3RydWN0dXJlRmlyZURl
dGFpbCh0aGlzKSk7CisgICAgICAgIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQuZmlyZUFsbCgq
dm0oKSwgU3RydWN0dXJlRmlyZURldGFpbCh0aGlzKSk7CiB9CiAKIEpTVmFsdWUgU3RydWN0dXJl
Ojpwcm90b3R5cGVGb3JMb29rdXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShy
ZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCBpbmxpbmUgdm9p
ZCBTdHJ1Y3R1cmU6OmRpZFJlcGxhY2VQcm9wZXJ0CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0g
bWFwLT5nZXQob2Zmc2V0KTsKICAgICBpZiAoTElLRUxZKCFzZXQpKQogICAgICAgICByZXR1cm47
Ci0gICAgc2V0LT5maXJlQWxsKCJQcm9wZXJ0eSBkaWQgZ2V0IHJlcGxhY2VkIik7CisgICAgc2V0
LT5maXJlQWxsKCp2bSgpLCAiUHJvcGVydHkgZGlkIGdldCByZXBsYWNlZCIpOwogfQogCiBpbmxp
bmUgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjpwcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2lu
dFNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4MCwx
MCArMjgwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHMoKSAmIERvbnRFbnVtRmxh
ZzsKICAgICB9CiAgICAgCi0gICAgdm9pZCBkaXNhYmxlV2F0Y2hpbmcoKQorICAgIHZvaWQgZGlz
YWJsZVdhdGNoaW5nKFZNJiB2bSkKICAgICB7CiAgICAgICAgIGlmIChXYXRjaHBvaW50U2V0KiBz
ZXQgPSB3YXRjaHBvaW50U2V0KCkpCi0gICAgICAgICAgICBzZXQtPmludmFsaWRhdGUoIkRpc2Fi
bGluZyB3YXRjaGluZyBpbiBzeW1ib2wgdGFibGUiKTsKKyAgICAgICAgICAgIHNldC0+aW52YWxp
ZGF0ZSh2bSwgIkRpc2FibGluZyB3YXRjaGluZyBpbiBzeW1ib2wgdGFibGUiKTsKICAgICAgICAg
aWYgKHZhck9mZnNldCgpLmlzU2NvcGUoKSkKICAgICAgICAgICAgIHBhY2sodmFyT2Zmc2V0KCks
IGZhbHNlLCBpc1JlYWRPbmx5KCksIGlzRG9udEVudW0oKSk7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDgsNyArNzQ4
LDcgQEAgdm9pZCBWTTo6cmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcAogdm9pZCBWTTo6
YWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYg
KFJlZlB0cjxXYXRjaHBvaW50U2V0PiB3YXRjaHBvaW50U2V0ID0gbV9pbXB1cmVQcm9wZXJ0eVdh
dGNocG9pbnRTZXRzLnRha2UocHJvcGVydHlOYW1lKSkKLSAgICAgICAgd2F0Y2hwb2ludFNldC0+
ZmlyZUFsbCgiSW1wdXJlIHByb3BlcnR5IGFkZGVkIik7CisgICAgICAgIHdhdGNocG9pbnRTZXQt
PmZpcmVBbGwoKnRoaXMsICJJbXB1cmUgcHJvcGVydHkgYWRkZWQiKTsKIH0KIAogc3RhdGljIGJv
b2wgZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQodW5zaWduZWQmIGNvdW50ZXIsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBkb0VuYWJsZVdvcmspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMDI1NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxNi0wNi0yOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KKworICAgICAgICBzb21lIFdhdGNocG9pbnRzJyA6OmZpcmVJbnRlcm5hbCBtZXRob2Qgd2ls
bCBjYWxsIG9wZXJhdGlvbnMgdGhhdCBtaWdodCBHQyB3aGVyZSB0aGUgR0Mgd2lsbCBjYXVzZSB0
aGUgd2F0Y2hwb2ludCBpdHNlbGYgdG8gZGVzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTE5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjYzMDIzNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2ludHNGb3JXaW5kb3cpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OmNyZWF0
ZSk6CisKIDIwMTYtMDYtMjggIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFBocmFzaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGFjY2VwdGVkIGluIDxtbz4gZWxlbWVu
dHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQg
SlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2EKICAgICAgICAgaWYgKCF3cmFwcGVy
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEpTRE9NV2luZG93QmFzZSoganNXaW5k
b3cgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPih3cmFwcGVyKTsKLSAgICAgICAganNX
aW5kb3ctPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cy5maXJlQWxsKCJGcmFtZSBjbGVhcmVkIik7
CisgICAgICAgIGpzV2luZG93LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMuZmlyZUFsbCh2bSwg
IkZyYW1lIGNsZWFyZWQiKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDI1NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
d29ya2luZyBjb3B5KQpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyKCRpbXBsVHlwZSkgdW5sZXNzICRzdmdQ
cm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClc
biIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoXCJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9i
amVjdFwiKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBnbG9i
YWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoZ2xv
YmFsT2JqZWN0LT52bSgpLCBcIkFsbG9jYXRlZCBtYXNxdWVyYWRpbmcgb2JqZWN0XCIpO1xuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5oCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBUZXN0RXZlbnRUYXJnZXQgRE9NV3Jh
cHBlZDsKICAgICBzdGF0aWMgSlNUZXN0RXZlbnRUYXJnZXQqIGNyZWF0ZShKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEV2
ZW50VGFyZ2V0PiYmIGltcGwpCiAgICAgewotICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoIkFsbG9jYXRlZCBtYXNxdWVyYWRp
bmcgb2JqZWN0Iik7CisgICAgICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxPYmplY3QtPnZtKCksICJBbGxvY2F0ZWQgbWFz
cXVlcmFkaW5nIG9iamVjdCIpOwogICAgICAgICBKU1Rlc3RFdmVudFRhcmdldCogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudFRhcmdldD4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RFdmVudFRhcmdldChzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282272</attachid>
            <date>2016-06-28 12:50:26 -0700</date>
            <delta_ts>2016-06-28 14:30:41 -0700</delta_ts>
            <desc>lets see what the bots think</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>32524</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDE2LTA2LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IHNvbWUgV2F0Y2hwb2ludHMnIDo6ZmlyZUludGVybmFsIG1ldGhvZCB3aWxsIGNhbGwgb3BlcmF0
aW9ucyB0aGF0IG1pZ2h0IEdDIHdoZXJlIHRoZSBHQyB3aWxsIGNhdXNlIHRoZSB3YXRjaHBvaW50
IGl0c2VsZiB0byBkZXN0cnVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MTk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjMwMjM2MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBGaXJpbmcgYSB3YXRj
aHBvaW50IG1heSBjYXVzZSBhIEdDIHRvIGhhcHBlbi4gVGhpcyBHQyBjb3VsZCBkZXN0cm95IHZh
cmlvdXMKKyAgICAgICAgV2F0Y2hwb2ludHMgdGhlbXNlbHZlcyB3aGlsZSB0aGV5J3JlIGluIHRo
ZSBwcm9jZXNzIG9mIGZpcmluZy4gSXQncyBub3Qgc2FmZQorICAgICAgICBmb3IgbW9zdCBXYXRj
aHBvaW50cyB0byBiZSBkZXN0cnVjdGVkIHdoaWxlIHRoZXkncmUgaW4gdGhlIG1pZGRsZSBvZiBm
aXJpbmcuCisgICAgICAgIFRoaXMgR0MgY291bGQgYWxzbyBkZXN0cm95IHRoZSBXYXRjaHBvaW50
U2V0IGl0c2VsZiwgYW5kIGl0J3Mgbm90IGluIGEgc2FmZQorICAgICAgICBzdGF0ZSB0byBiZSBk
ZXN0cm95ZWQuIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRjaHBvaW50cyBub3cgZGVmZXJzIGdj
IGZvciBhCisgICAgICAgIHdoaWxlLiBUaGlzIHByZXZlbnRzIGEgR0MgZnJvbSBkZXN0cnVjdGlu
ZyBhbnkgV2F0Y2hwb2ludHMgd2hpbGUgdGhleSdyZQorICAgICAgICBpbiB0aGUgcHJvY2VzcyBv
ZiBmaXJpbmcuIFRoaXMgYnVnIHdhcyBiZWluZyBoaXQgYnkgdGhlIHN0cmVzcyBHQyBib3RzCisg
ICAgICAgIGJlY2F1c2Ugd2Ugd291bGQgZGVzdHJ1Y3QgYSBwYXJ0aWN1bGFyIFdhdGNocG9pbnQg
d2hpbGUgaXQgd2FzIGZpcmluZywKKyAgICAgICAgYW5kIHRoZW4gd2Ugd291bGQgYWNjZXNzIGl0
cyBmaWVsZCBhZnRlciBpdCBoYWQgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4KKyAgICAgICAgVGhp
cyB3YXMgY2F1c2luZyBhbGwga2luZHMgb2Ygd2VpcmQgc3ltcHRvbXMuIEFsc28sIHRoaXMgd2Fz
IGVhc2llciB0bworICAgICAgICBjYXRjaCB3aGVuIHJ1bm5pbmcgd2l0aCBndWFyZCBtYWxsb2Mg
YmVjYXVzZSB0aGUgZmlyc3QgYWNjZXNzIGFmdGVyCisgICAgICAgIGRlc3RydWN0aW9uIHdvdWxk
IGxlYWQgdG8gYSBjcmFzaC4KKworICAgICAgICAqIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOgorICAgICAgICAoSlNDOjpBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlOjpmaXJlKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHA6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsOjpkdW1wKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVXcml0ZUZpcmVEZXRhaWw6OnRvdWNoKToKKyAgICAgICAgKiBieXRlY29kZS9W
YXJpYWJsZVdyaXRlRmlyZURldGFpbC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQu
Y3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGQpOgorICAgICAgICAoSlNDOjpX
YXRjaHBvaW50U2V0OjpmaXJlQWxsU2xvdyk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6
OmZpcmVBbGxXYXRjaHBvaW50cyk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6
OmFkZCk6CisgICAgICAgIChKU0M6OklubGluZVdhdGNocG9pbnRTZXQ6OmZpcmVBbGwpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0OjppbmZsYXRlU2xvdyk6CisgICAgICAgICog
Ynl0ZWNvZGUvV2F0Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjpzdGFy
dFdhdGNoaW5nKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAg
ICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OnRvdWNoKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2lu
dFNldDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmlzQmVpbmdX
YXRjaGVkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6b2Zmc2V0T2ZTdGF0ZSk6Cisg
ICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZlNldElzTm90RW1wdHkpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0OjpzdGFydFdhdGNoaW5nKToKKyAgICAgICAg
KEpTQzo6SW5saW5lV2F0Y2hwb2ludFNldDo6ZmlyZUFsbCk6CisgICAgICAgIChKU0M6OklubGlu
ZVdhdGNocG9pbnRTZXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpJbmxpbmVXYXRjaHBv
aW50U2V0Ojp0b3VjaCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChXVEY6Ok1hc3F1ZXJhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxsaW50L0xMSW50
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmlyZUFsbCk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25SYXJlRGF0YTo6Y2xlYXIpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRUeXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlOjp3aWxsU3RvcmVWYWx1ZVNsb3cpOgor
ICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6Om1ha2VUb3BTbG93KToKKyAgICAgICAgKEpTQzo6
SW5mZXJyZWRUeXBlOjpzZXQpOgorICAgICAgICAoSlNDOjpJbmZlcnJlZFR5cGU6OnJlbW92ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkluZmVycmVkVHlwZTo6SW5mZXJyZWRTdHJ1Y3R1cmVX
YXRjaHBvaW50OjpmaXJlSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkluZmVycmVkVmFsdWU6Om5vdGlmeVdyaXRlU2xvdyk6Cisg
ICAgICAgIChKU0M6OkluZmVycmVkVmFsdWU6OlZhbHVlQ2xlYW51cDo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRpbWUvSW5mZXJyZWRWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpJbmZlcnJlZFZhbHVlOjpub3RpZnlXcml0ZSk6CisgICAgICAgIChKU0M6OkluZmVycmVk
VmFsdWU6OmludmFsaWRhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKToKKyAgICAgICAg
KiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFi
bGVQdXRUb3VjaFdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dElu
dmFsaWRhdGVXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGlkQ2FjaGVQcm9wZXJ0eVJlcGxhY2VtZW50KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVz
KToKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZp
cmU6On5EZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSk6CisgICAgICAg
IChKU0M6OkRlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlOjphZGQpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRpZFRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJvdG90eXBlRm9yTG9va3VwKToKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpk
aWRSZXBsYWNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnByb3BlcnR5UmVw
bGFjZW1lbnRXYXRjaHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlRW50cnk6OmlzRG9udEVudW0pOgorICAgICAgICAo
SlNDOjpTeW1ib2xUYWJsZUVudHJ5OjpkaXNhYmxlV2F0Y2hpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6YWRkSW1wdXJlUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjplbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCk6CisKIDIwMTYtMDYtMjgg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBzZWxlY3RFbGVtZW50Lm9wdGlvbnMgc2hvd3MgdW5leHBlY3RlZCBlbnRyaWVzIGlu
IGNvbnNvbGUgKG5hbWVkIGluZGV4ZXMgYmV5b25kIGNvbGxlY3Rpb24gbGVuZ3RoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIE1hc3F1ZXJhZGVyKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKCJNYXNxdWVyYWRpbmcgb2JqZWN0IGFsbG9j
YXRlZCIpOworICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCktPmZpcmVBbGwodm0sICJNYXNxdWVyYWRpbmcgb2JqZWN0IGFsbG9jYXRlZCIpOwog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBqc051bGwoKSk7CiAgICAgICAgIE1hc3F1ZXJhZGVyKiByZXN1bHQgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxNYXNxdWVyYWRlcj4odm0uaGVhcCwgc2l6ZW9mKE1hc3F1ZXJh
ZGVyKSkpIE1hc3F1ZXJhZGVyKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICByZXN1bHQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDYgQEAgdm9pZCBBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocAogCiB2b2lkIEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2U6OmZpcmUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQog
ewotICAgIC8vIFdlIG5lZWQgdG8gZGVmZXIgR0MgaGVyZSBvdGhlcndpc2Ugd2UgbWlnaHQgdHJp
Z2dlciBhIEdDIHRoYXQgY291bGQgZGVzdHJveSB0aGUgb3duZXIKLSAgICAvLyBDb2RlQmxvY2su
IEluIHBhcnRpY3VsYXIsIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHdlIGFkZCByYXJlIGRhdGEgdG8g
YSBzdHJ1Y3R1cmUgd2hlbgotICAgIC8vIHdlIEVuc3VyZVdhdGNoYWJpbGl0eS4KLSAgICBEZWZl
ckdDRm9yQVdoaWxlIGRlZmVyKCpIZWFwOjpoZWFwKG1fa2V5Lm9iamVjdCgpKSk7CiAgICAgLy8g
T25lIG9mIHRoZSB3YXRjaHBvaW50cyBmaXJlZCwgYnV0IHRoZSBvdGhlciBvbmUgZGlkbid0LiBN
YWtlIHN1cmUgdGhhdCBuZWl0aGVyIG9mIHRoZW0gYXJlCiAgICAgLy8gaW4gYW55IHNldCBhbnlt
b3JlLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGJ5IGFsbG93aW5nIHVzIHRvIHJlaW5zdGFsbCB0
aGUgd2F0Y2hwb2ludHMKICAgICAvLyB3aGVyZXZlciBmcm9tIHNjcmF0Y2guCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjAy
NTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNDAsNyArMjI0MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUu
d2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChv
cC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9PSBDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcykgewogICAgICAgICAgICAgICAgIGlmIChvcC53YXRjaHBvaW50U2V0KQotICAg
ICAgICAgICAgICAgICAgICBvcC53YXRjaHBvaW50U2V0LT5pbnZhbGlkYXRlKFB1dFRvU2NvcGVG
aXJlRGV0YWlsKHRoaXMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgICAgIG9wLndhdGNocG9p
bnRTZXQtPmludmFsaWRhdGUodm0sIFB1dFRvU2NvcGVGaXJlRGV0YWlsKHRoaXMsIGlkZW50KSk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKICAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbnNbaSArIDVdLnUuc3RydWN0dXJlLnNldCh2bSwgdGhpcywgb3Auc3RydWN0dXJl
KTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ob3Aub3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAJKHJl
dmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJs
ZVdyaXRlRmlyZURldGFpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAgdm9p
ZCBWYXJpYWJsZVdyaXRlRmlyZURldGFpbDo6ZHVtcChQcmludAogICAgIG91dC5wcmludCgiV3Jp
dGUgdG8gIiwgbV9uYW1lLCAiIGluICIsIEpTVmFsdWUobV9vYmplY3QpKTsKIH0KIAotdm9pZCBW
YXJpYWJsZVdyaXRlRmlyZURldGFpbDo6dG91Y2goV2F0Y2hwb2ludFNldCogc2V0LCBKU09iamVj
dCogb2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIG5hbWUpCit2b2lkIFZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsOjp0b3VjaChWTSYgdm0sIFdhdGNocG9pbnRTZXQqIHNldCwgSlNPYmplY3QqIG9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBuYW1lKQogewotICAgIHNldC0+dG91Y2goVmFyaWFi
bGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBuYW1lKSk7CisgICAgc2V0LT50b3VjaCh2bSwgVmFy
aWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBuYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB0b3VjaChXYXRjaHBvaW50U2V0KiwgSlNPYmpl
Y3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCB0b3VjaChWTSYsIFdhdGNocG9pbnRTZXQqLCBKU09iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYpOwogCiBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBtX29iamVjdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDIw
MjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldhdGNocG9pbnQuaCIKIAorI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCkBAIC04MSwyNiArODMsMzMgQEAgdm9pZCBXYXRjaHBvaW50U2V0
OjphZGQoV2F0Y2hwb2ludCogd2F0YwogICAgIG1fc3RhdGUgPSBJc1dhdGNoZWQ7CiB9CiAKLXZv
aWQgV2F0Y2hwb2ludFNldDo6ZmlyZUFsbFNsb3coY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQor
dm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxsU2xvdyhWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwm
IGRldGFpbCkKIHsKICAgICBBU1NFUlQoc3RhdGUoKSA9PSBJc1dhdGNoZWQpOwogICAgIAogICAg
IFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgbV9zdGF0ZSA9IElzSW52YWxpZGF0ZWQ7IC8v
IERvIHRoaXMgZmlyc3QuIE5lZWRlZCBmb3IgYWRhcHRpdmUgd2F0Y2hwb2ludHMuCi0gICAgZmly
ZUFsbFdhdGNocG9pbnRzKGRldGFpbCk7CisgICAgZmlyZUFsbFdhdGNocG9pbnRzKHZtLCBkZXRh
aWwpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiB9CiAKLXZvaWQgV2F0Y2hwb2ludFNl
dDo6ZmlyZUFsbFNsb3coY29uc3QgY2hhciogcmVhc29uKQordm9pZCBXYXRjaHBvaW50U2V0Ojpm
aXJlQWxsU2xvdyhWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKIHsKLSAgICBmaXJlQWxsU2xv
dyhTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOworICAgIGZpcmVBbGxTbG93KHZtLCBTdHJpbmdG
aXJlRGV0YWlsKHJlYXNvbikpOwogfQogCi12b2lkIFdhdGNocG9pbnRTZXQ6OmZpcmVBbGxXYXRj
aHBvaW50cyhjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCit2b2lkIFdhdGNocG9pbnRTZXQ6OmZp
cmVBbGxXYXRjaHBvaW50cyhWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKIHsKICAg
ICAvLyBJbiBjYXNlIHRoZXJlIGFyZSBhbnkgYWRhcHRpdmUgd2F0Y2hwb2ludHMsIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRoYXQgdGhleSBzZWUgdGhhdCB0aGlzCiAgICAgLy8gd2F0Y2hwb2ludCBo
YXMgYmVlbiBhbHJlYWR5IGludmFsaWRhdGVkLgogICAgIFJFTEVBU0VfQVNTRVJUKGhhc0JlZW5J
bnZhbGlkYXRlZCgpKTsKKworICAgIC8vIEZpcmluZyBhIHdhdGNocG9pbnQgbWF5IGNhdXNlIGEg
R0MgdG8gaGFwcGVuLiBUaGlzIEdDIGNvdWxkIGRlc3Ryb3kgdmFyaW91cworICAgIC8vIFdhdGNo
cG9pbnRzIHRoZW1zZWx2ZXMgd2hpbGUgdGhleSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaXJpbmcu
IEl0J3Mgbm90IHNhZmUKKyAgICAvLyBmb3IgbW9zdCBXYXRjaHBvaW50cyB0byBiZSBkZXN0cnVj
dGVkIHdoaWxlIHRoZXkncmUgaW4gdGhlIG1pZGRsZSBvZiBmaXJpbmcuCisgICAgLy8gVGhpcyBH
QyBjb3VsZCBhbHNvIGRlc3Ryb3kgdXMsIGFuZCB3ZSdyZSBub3QgaW4gYSBzYWZlIHN0YXRlIHRv
IGJlIGRlc3Ryb3llZC4KKyAgICAvLyBUaGUgc2FmZXN0IHRoaW5nIHRvIGRvIGlzIHRvIERlZmVy
R0NGb3JBV2hpbGUgdG8gcHJldmVudCB0aGlzIEdDIGZyb20gaGFwcGVuaW5nLgorICAgIERlZmVy
R0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKICAgICB3aGlsZSAoIW1fc2V0Lmlz
RW1wdHkoKSkgewogICAgICAgICBXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0gbV9zZXQuYmVnaW4o
KTsKQEAgLTEzMCw5ICsxMzksOSBAQCB2b2lkIElubGluZVdhdGNocG9pbnRTZXQ6OmFkZChXYXRj
aHBvaW50CiAgICAgaW5mbGF0ZSgpLT5hZGQod2F0Y2hwb2ludCk7CiB9CiAKLXZvaWQgSW5saW5l
V2F0Y2hwb2ludFNldDo6ZmlyZUFsbChjb25zdCBjaGFyKiByZWFzb24pCit2b2lkIElubGluZVdh
dGNocG9pbnRTZXQ6OmZpcmVBbGwoVk0mIHZtLCBjb25zdCBjaGFyKiByZWFzb24pCiB7Ci0gICAg
ZmlyZUFsbChTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOworICAgIGZpcmVBbGwodm0sIFN0cmlu
Z0ZpcmVEZXRhaWwocmVhc29uKSk7CiB9CiAKIFdhdGNocG9pbnRTZXQqIElubGluZVdhdGNocG9p
bnRTZXQ6OmluZmxhdGVTbG93KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBA
QCBlbnVtIFdhdGNocG9pbnRTdGF0ZSB7CiB9OwogCiBjbGFzcyBJbmxpbmVXYXRjaHBvaW50U2V0
OworY2xhc3MgVk07CiAKIGNsYXNzIFdhdGNocG9pbnRTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8V2F0Y2hwb2ludFNldD4gewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CkBAIC0xNTIsNDMgKzE1Myw0MyBAQCBwdWJsaWM6CiAgICAgICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmlyZUFsbChjb25zdCBGaXJl
RGV0YWlsJiBkZXRhaWwpCisgICAgdm9pZCBmaXJlQWxsKFZNJiB2bSwgY29uc3QgRmlyZURldGFp
bCYgZGV0YWlsKQogICAgIHsKICAgICAgICAgaWYgKExJS0VMWShtX3N0YXRlICE9IElzV2F0Y2hl
ZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZpcmVBbGxTbG93KGRldGFpbCk7Cisg
ICAgICAgIGZpcmVBbGxTbG93KHZtLCBkZXRhaWwpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZp
cmVBbGwoY29uc3QgY2hhciogcmVhc29uKQorICAgIHZvaWQgZmlyZUFsbChWTSYgdm0sIGNvbnN0
IGNoYXIqIHJlYXNvbikKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkobV9zdGF0ZSAhPSBJc1dh
dGNoZWQpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmaXJlQWxsU2xvdyhyZWFzb24p
OworICAgICAgICBmaXJlQWxsU2xvdyh2bSwgcmVhc29uKTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCB0b3VjaChjb25zdCBGaXJlRGV0YWlsJiBkZXRhaWwpCisgICAgdm9pZCB0b3VjaChWTSYgdm0s
IGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChzdGF0ZSgpID09
IENsZWFyV2F0Y2hwb2ludCkKICAgICAgICAgICAgIHN0YXJ0V2F0Y2hpbmcoKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZmlyZUFsbChkZXRhaWwpOworICAgICAgICAgICAgZmlyZUFsbCh2
bSwgZGV0YWlsKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCB0b3VjaChjb25zdCBjaGFyKiByZWFz
b24pCisgICAgdm9pZCB0b3VjaChWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7Ci0g
ICAgICAgIHRvdWNoKFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7CisgICAgICAgIHRvdWNoKHZt
LCBTdHJpbmdGaXJlRGV0YWlsKHJlYXNvbikpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGludmFs
aWRhdGUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQorICAgIHZvaWQgaW52YWxpZGF0ZShWTSYg
dm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChzdGF0ZSgp
ID09IElzV2F0Y2hlZCkKLSAgICAgICAgICAgIGZpcmVBbGwoZGV0YWlsKTsKKyAgICAgICAgICAg
IGZpcmVBbGwodm0sIGRldGFpbCk7CiAgICAgICAgIG1fc3RhdGUgPSBJc0ludmFsaWRhdGVkOwog
ICAgIH0KICAgICAKLSAgICB2b2lkIGludmFsaWRhdGUoY29uc3QgY2hhciogcmVhc29uKQorICAg
IHZvaWQgaW52YWxpZGF0ZShWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7Ci0gICAg
ICAgIGludmFsaWRhdGUoU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKKyAgICAgICAgaW52YWxp
ZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBpc0JlaW5nV2F0Y2hlZCgpIGNvbnN0CkBAIC0yMDAsMTEgKzIwMSwxMSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0YXRlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKFdhdGNocG9pbnRTZXQsIG1fc3RhdGUpOyB9CiAgICAgaW50OF90KiBhZGRyZXNzT2ZTZXRJ
c05vdEVtcHR5KCkgeyByZXR1cm4gJm1fc2V0SXNOb3RFbXB0eTsgfQogICAgIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZmlyZUFsbFNsb3coY29uc3QgRmlyZURldGFpbCYpOyAvLyBDYWxs
IG9ubHkgaWYgeW91J3ZlIGNoZWNrZWQgaXNXYXRjaGVkLgotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZmlyZUFsbFNsb3coY29uc3QgY2hhciogcmVhc29uKTsgLy8gRGl0dG8uCisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsU2xvdyhWTSYsIGNvbnN0IEZpcmVEZXRhaWwmKTsg
Ly8gQ2FsbCBvbmx5IGlmIHlvdSd2ZSBjaGVja2VkIGlzV2F0Y2hlZC4KKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGZpcmVBbGxTbG93KFZNJiwgY29uc3QgY2hhciogcmVhc29uKTsgLy8gRGl0
dG8uCiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgZmlyZUFsbFdhdGNocG9pbnRzKGNvbnN0IEZp
cmVEZXRhaWwmKTsKKyAgICB2b2lkIGZpcmVBbGxXYXRjaHBvaW50cyhWTSYsIGNvbnN0IEZpcmVE
ZXRhaWwmKTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsKIApA
QCAtMjk2LDEwICsyOTcsMTAgQEAgcHVibGljOgogICAgICAgICBtX2RhdGEgPSBlbmNvZGVTdGF0
ZShJc1dhdGNoZWQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZpcmVBbGwoY29uc3QgRmlyZURl
dGFpbCYgZGV0YWlsKQorICAgIHZvaWQgZmlyZUFsbChWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwm
IGRldGFpbCkKICAgICB7CiAgICAgICAgIGlmIChpc0ZhdCgpKSB7Ci0gICAgICAgICAgICBmYXQo
KS0+ZmlyZUFsbChkZXRhaWwpOworICAgICAgICAgICAgZmF0KCktPmZpcmVBbGwodm0sIGRldGFp
bCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29kZVN0
YXRlKG1fZGF0YSkgPT0gQ2xlYXJXYXRjaHBvaW50KQpAQCAtMzA4LDIwICszMDksMjAgQEAgcHVi
bGljOgogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICAKLSAgICB2
b2lkIGludmFsaWRhdGUoY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQorICAgIHZvaWQgaW52YWxp
ZGF0ZShWTSYgdm0sIGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKICAgICB7CiAgICAgICAgIGlm
IChpc0ZhdCgpKQotICAgICAgICAgICAgZmF0KCktPmludmFsaWRhdGUoZGV0YWlsKTsKKyAgICAg
ICAgICAgIGZhdCgpLT5pbnZhbGlkYXRlKHZtLCBkZXRhaWwpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX2RhdGEgPSBlbmNvZGVTdGF0ZShJc0ludmFsaWRhdGVkKTsKICAgICB9CiAgICAg
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKGNvbnN0IGNoYXIqIHJlYXNvbik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlQWxsKFZNJiwgY29uc3QgY2hhciogcmVh
c29uKTsKICAgICAKLSAgICB2b2lkIHRvdWNoKGNvbnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKKyAg
ICB2b2lkIHRvdWNoKFZNJiB2bSwgY29uc3QgRmlyZURldGFpbCYgZGV0YWlsKQogICAgIHsKICAg
ICAgICAgaWYgKGlzRmF0KCkpIHsKLSAgICAgICAgICAgIGZhdCgpLT50b3VjaChkZXRhaWwpOwor
ICAgICAgICAgICAgZmF0KCktPnRvdWNoKHZtLCBkZXRhaWwpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIHVpbnRwdHJfdCBkYXRhID0gbV9kYXRhOwpAQCAtMzM1LDkg
KzMzNiw5IEBAIHB1YmxpYzoKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCB0b3VjaChjb25zdCBjaGFyKiByZWFzb24pCisgICAgdm9pZCB0b3Vj
aChWTSYgdm0sIGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICB7Ci0gICAgICAgIHRvdWNoKFN0cmlu
Z0ZpcmVEZXRhaWwocmVhc29uKSk7CisgICAgICAgIHRvdWNoKHZtLCBTdHJpbmdGaXJlRGV0YWls
KHJlYXNvbikpOwogICAgIH0KIAogICAgIC8vIE5vdGUgdGhhdCBmb3IgYW55IHdhdGNocG9pbnQg
dGhhdCBpcyB2aXNpYmxlIGZyb20gdGhlIERGRywgaXQgd291bGQgYmUgaW5jb3JyZWN0IHRvIHdy
aXRlIGNvZGUgbGlrZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMDI1NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAgICAgICAgICAgICAgICAgLy8gbm90aWZ5V3JpdGUo
KSwgc2luY2UgdGhhdCB3b3VsZCBiZSBjdW1iZXJzb21lLiBBbHNvLCB3YXRjaGluZyBmb3JtYWwK
ICAgICAgICAgICAgICAgICAgICAgLy8gcGFyYW1ldGVycyB3aGVuICJhcmd1bWVudHMiIGlzIGlu
IHBsYXkgaXMgdW5saWtlbHkgdG8gYmUgc3VwZXIgcHJvZml0YWJsZS4KICAgICAgICAgICAgICAg
ICAgICAgLy8gU28sIHdlIGp1c3QgZGlzYWJsZSBpdC4KLSAgICAgICAgICAgICAgICAgICAgZW50
cnkuZGlzYWJsZVdhdGNoaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmRpc2FibGVX
YXRjaGluZygqbV92bSk7CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUt
PnNldChOb0xvY2tpbmdOZWNlc3NhcnksIG5hbWUsIGVudHJ5KTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9wdXRfdG9fc2NvcGUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDI1
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTm90aWZ5V3JpdGUoCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBzZXQtPnRvdWNoKCJFeGVjdXRl
ZCBOb3RpZnlXcml0ZSIpOworICAgIHNldC0+dG91Y2godm0sICJFeGVjdXRlZCBOb3RpZnlXcml0
ZSIpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93
Rm9yVmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db3B5QmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvcHlCYXJyaWVyLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvcHlCYXJyaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgQ29weUJhcnJpZXJfaAogCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIlZN
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMDYsNyArMTIwNiw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGEKICAgICBpZiAobnVtVmFyaWFibGVzIHx8IG51bUZ1bmN0aW9ucykgewogICAg
ICAgICBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciBvcHRpbWl6ZXIodm0sIHZhcmlhYmxlT2Jq
ZWN0KTsKICAgICAgICAgaWYgKHZhcmlhYmxlT2JqZWN0LT5uZXh0KCkpCi0gICAgICAgICAgICB2
YXJpYWJsZU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnZhckluamVjdGlvbldhdGNocG9pbnQoKS0+
ZmlyZUFsbCgiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0aW9uIHdhdGNocG9pbnQiKTsK
KyAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+dmFySW5qZWN0aW9u
V2F0Y2hwb2ludCgpLT5maXJlQWxsKHZtLCAiRXhlY3V0ZWQgZXZhbCwgZmlyZWQgVmFySW5qZWN0
aW9uIHdhdGNocG9pbnQiKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
VmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT52YXJpYWJsZShpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3OCw3ICsy
MDc4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRQogICAgICAg
ICBKU0xleGljYWxFbnZpcm9ubWVudCogZW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNMZXhpY2FsRW52
aXJvbm1lbnQqPihzY29wZSk7CiAgICAgICAgIGVudmlyb25tZW50LT52YXJpYWJsZUF0KFNjb3Bl
T2Zmc2V0KHBjWzZdLnUub3BlcmFuZCkpLnNldCh2bSwgZW52aXJvbm1lbnQsIHZhbHVlKTsKICAg
ICAgICAgaWYgKFdhdGNocG9pbnRTZXQqIHNldCA9IHBjWzVdLnUud2F0Y2hwb2ludFNldCkKLSAg
ICAgICAgICAgIHNldC0+dG91Y2goIkV4ZWN1dGVkIG9wX3B1dF9zY29wZTxMb2NhbENsb3N1cmVW
YXI+Iik7CisgICAgICAgICAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQgb3BfcHV0X3Njb3Bl
PExvY2FsQ2xvc3VyZVZhcj4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X3RvX3NjCiAgICAgICAgIC8vIHRvIGhhdmUgYWxyZWFkeSBjaGFu
Z2VkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUuIE90aGVyd2lzZSB3ZSBtaWdodCB3YXRjaCBh
bmQgY29uc3RhbnQtZm9sZAogICAgICAgICAvLyB0byB0aGUgVW5kZWZpbmVkIHZhbHVlIGZyb20g
YmVmb3JlIHRoZSBhc3NpZ25tZW50LgogICAgICAgICBpZiAoV2F0Y2hwb2ludFNldCogc2V0ID0g
cGNbNV0udS53YXRjaHBvaW50U2V0KQotICAgICAgICAgICAgc2V0LT50b3VjaCgiRXhlY3V0ZWQg
b3BfcHV0X3Njb3BlPExvY2FsQ2xvc3VyZVZhcj4iKTsKKyAgICAgICAgICAgIHNldC0+dG91Y2go
dm0sICJFeGVjdXRlZCBvcF9wdXRfc2NvcGU8TG9jYWxDbG9zdXJlVmFyPiIpOwogICAgICAgICBM
TElOVF9FTkQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsNyBAQCBTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2luCiAKIHZvaWQg
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpmaXJlQWxsKCkKIHsKLSAgICBzZXQoKS0+
ZmlyZUFsbCgiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOworICAgIHNldCgpLT5maXJlQWxs
KCp2bSgpLCAiQXJyYXkgYnVmZmVyIHdhcyBuZXV0ZXJlZCIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmNsZWFyKGNvbnN0IGNoYXIqCiB7CiAgICAg
bV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOwogICAgIG1faW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25Qcm9maWxlLmNsZWFyKCk7Ci0gICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQuZmlyZUFsbChyZWFzb24pOworICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50LmZpcmVBbGwoKnZtKCksIHJlYXNvbik7CiB9CiAKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlLmNwcAkocmV2aXNpb24g
MjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgSW5mZXJyZWRUeXBlOjp3
aWxsU3RvcmVWYWx1ZVNsb3coVk0KICAgICB9CiAgICAgCiAgICAgSW5mZXJyZWRUeXBlRmlyZURl
dGFpbCBkZXRhaWwodGhpcywgcHJvcGVydHlOYW1lLnVpZCgpLCBvbGRUeXBlLCBteVR5cGUsIHZh
bHVlKTsKLSAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFsbChkZXRhaWwpOworICAgIG1fd2F0Y2hw
b2ludFNldC5maXJlQWxsKHZtLCBkZXRhaWwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTQzNCw3ICs0MzQsNyBAQCB2b2lkIEluZmVycmVkVHlwZTo6bWFrZVRvcFNsb3coVk0mIHZtLCBQ
CiAgICAgfQogCiAgICAgSW5mZXJyZWRUeXBlRmlyZURldGFpbCBkZXRhaWwodGhpcywgcHJvcGVy
dHlOYW1lLnVpZCgpLCBvbGRUeXBlLCBUb3AsIEpTVmFsdWUoKSk7Ci0gICAgbV93YXRjaHBvaW50
U2V0LmZpcmVBbGwoZGV0YWlsKTsKKyAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwgZGV0
YWlsKTsKIH0KIAogYm9vbCBJbmZlcnJlZFR5cGU6OnNldChjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiBsb2NrZXIsIFZNJiB2bSwgRGVzY3JpcHRvciBuZXdEZXNjcmlwdG9yKQpAQCAtNTE2LDcg
KzUxNiw3IEBAIHZvaWQgSW5mZXJyZWRUeXBlOjpyZW1vdmVTdHJ1Y3R1cmUoKQogICAgIH0KIAog
ICAgIEluZmVycmVkVHlwZUZpcmVEZXRhaWwgZGV0YWlsKHRoaXMsIG51bGxwdHIsIG9sZERlc2Ny
aXB0b3IsIG5ld0Rlc2NyaXB0b3IsIEpTVmFsdWUoKSk7Ci0gICAgbV93YXRjaHBvaW50U2V0LmZp
cmVBbGwoZGV0YWlsKTsKKyAgICBtX3dhdGNocG9pbnRTZXQuZmlyZUFsbCh2bSwgZGV0YWlsKTsK
IH0KIAogdm9pZCBJbmZlcnJlZFR5cGU6OkluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludDo6Zmly
ZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW5mZXJyZWRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRWYWx1ZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgSW5mZXJyZWRWYWx1ZTo6bm90aWZ5V3JpdGVTbG93
KFZNJiAKICAgICAgICAgQVNTRVJUKCEhbV92YWx1ZSk7CiAgICAgICAgIGlmIChtX3ZhbHVlLmdl
dCgpID09IHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpbnZhbGlkYXRlKGRl
dGFpbCk7CisgICAgICAgIGludmFsaWRhdGUodm0sIGRldGFpbCk7CiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgY2FzZSBJc0ludmFsaWRhdGVkOgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgSW5mZXJyZWRWYWx1ZTo6VmFsdWVDbGVhbnVwOjpmaW5hbGkKICAgICBpZiAoSGVhcDo6aXNN
YXJrZWQobV9vd25lci0+bV92YWx1ZS5nZXQoKS5hc0NlbGwoKSkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBtX293bmVyLT5pbnZhbGlkYXRlKFN0cmluZ0ZpcmVEZXRhaWwoIkluZmVycmVk
VmFsdWUgY2xlYW4tdXAgZHVyaW5nIEdDIikpOworICAgIG1fb3duZXItPmludmFsaWRhdGUoKm1f
b3duZXItPnZtKCksIFN0cmluZ0ZpcmVEZXRhaWwoIkluZmVycmVkVmFsdWUgY2xlYW4tdXAgZHVy
aW5nIEdDIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFZhbHVlLmgJKHJldmlzaW9uIDIwMjU3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtODgsMTAgKzg4LDEwIEBAIHB1YmxpYzoKICAgICAgICAgbm90aWZ5V3JpdGVTbG93
KHZtLCB2YWx1ZSwgcmVhc29uKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBpbnZhbGlkYXRlKGNv
bnN0IEZpcmVEZXRhaWwmIGRldGFpbCkKKyAgICB2b2lkIGludmFsaWRhdGUoVk0mIHZtLCBjb25z
dCBGaXJlRGV0YWlsJiBkZXRhaWwpCiAgICAgewogICAgICAgICBtX3ZhbHVlLmNsZWFyKCk7Ci0g
ICAgICAgIG1fc2V0LmludmFsaWRhdGUoZGV0YWlsKTsKKyAgICAgICAgbV9zZXQuaW52YWxpZGF0
ZSh2bSwgZGV0YWlsKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDMsNyArOTQzLDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKFZNJiB2bQogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IGFsbCBhbGxvY2F0aW9ucyBvciBpbmRleGVkIHN0b3JhZ2UgdHJhbnNpdGlvbnMgdGhh
dCBhcmUgaW5saW5pbmcKICAgICAvLyB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J3Mgc2FmZSB0byB0
cmFuc2l0aW9uIHRvIGEgbm9uLVNsb3dQdXQgYXJyYXkgc3RvcmFnZSBkb24ndAogICAgIC8vIGRv
IHNvIGFueW1vcmUuCi0gICAgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQtPmZpcmVBbGwoIkhh
dmluZyBhIGJhZCB0aW1lIik7CisgICAgbV9oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQtPmZpcmVB
bGwodm0sICJIYXZpbmcgYSBiYWQgdGltZSIpOwogICAgIEFTU0VSVChpc0hhdmluZ0FCYWRUaW1l
KCkpOyAvLyBUaGUgd2F0Y2hwb2ludCBpcyB3aGF0IHRlbGxzIHVzIHRoYXQgd2UncmUgaGF2aW5n
IGEgYmFkIHRpbWUuCiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYWxsIEpTQXJyYXkgYWxs
b2NhdGlvbnMgdGhhdCBsb2FkIHRoZSBhcHByb3ByaWF0ZSBzdHJ1Y3R1cmUgZnJvbQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuaAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIHN5bWJvbFRhYmxlUHV0VG91Y2hXYQogewogICAgIHJlZy0+c2V0
KHZtLCBvYmplY3QsIHZhbHVlKTsKICAgICBpZiAoc2V0KQotICAgICAgICBWYXJpYWJsZVdyaXRl
RmlyZURldGFpbDo6dG91Y2goc2V0LCBvYmplY3QsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIFZh
cmlhYmxlV3JpdGVGaXJlRGV0YWlsOjp0b3VjaCh2bSwgc2V0LCBvYmplY3QsIHByb3BlcnR5TmFt
ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN5bWJvbFRhYmxlT2JqZWN0VHlwZT4KQEAgLTE1
NCw3ICsxNTQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgc3ltYm9sVGFibGVQdXRJbnZhbGlkCiB7
CiAgICAgcmVnLT5zZXQodm0sIG9iamVjdCwgdmFsdWUpOwogICAgIGlmIChzZXQpCi0gICAgICAg
IHNldC0+aW52YWxpZGF0ZShWYXJpYWJsZVdyaXRlRmlyZURldGFpbChvYmplY3QsIHByb3BlcnR5
TmFtZSkpOyAvLyBEb24ndCBtZXNzIGFyb3VuZCAtIGlmIHdlIGhhZCBmb3VuZCB0aGlzIHN0YXRp
Y2FsbHksIHdlIHdvdWxkIGhhdmUgaW52YWxpZGF0ZWQgaXQuCisgICAgICAgIHNldC0+aW52YWxp
ZGF0ZSh2bSwgVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwob2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsg
Ly8gRG9uJ3QgbWVzcyBhcm91bmQgLSBpZiB3ZSBoYWQgZm91bmQgdGhpcyBzdGF0aWNhbGx5LCB3
ZSB3b3VsZCBoYXZlIGludmFsaWRhdGVkIGl0LgogfQogCiBlbnVtIGNsYXNzIFN5bWJvbFRhYmxl
UHV0TW9kZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIFN0
cnVjdHVyZTo6c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yCiAKIHZvaWQgU3RydWN0dXJlOjpkaWRD
YWNoZVByb3BlcnR5UmVwbGFjZW1lbnQoVk0mIHZtLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7
Ci0gICAgZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQodm0sIG9mZnNldCkt
PmZpcmVBbGwoIkRpZCBjYWNoZSBwcm9wZXJ0eSByZXBsYWNlbWVudCIpOworICAgIGVuc3VyZVBy
b3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KHZtLCBvZmZzZXQpLT5maXJlQWxsKHZtLCAi
RGlkIGNhY2hlIHByb3BlcnR5IHJlcGxhY2VtZW50Iik7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpz
dGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzKFZNJiB2bSkKQEAgLTEwNzUsNyArMTA3NSw3
IEBAIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXIKIERlZmVycmVkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlOjp+RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0
aW9uV2F0Y2hwb2ludEZpcmUoKQogewogICAgIGlmIChtX3N0cnVjdHVyZSkKLSAgICAgICAgbV9z
dHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0KCkuZmlyZUFsbChTdHJ1Y3R1cmVGaXJl
RGV0YWlsKG1fc3RydWN0dXJlKSk7CisgICAgICAgIG1fc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0
Y2hwb2ludFNldCgpLmZpcmVBbGwoKm1fc3RydWN0dXJlLT52bSgpLCBTdHJ1Y3R1cmVGaXJlRGV0
YWlsKG1fc3RydWN0dXJlKSk7CiB9CiAKIHZvaWQgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEZpcmU6OmFkZChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgU3RydWN0dXJlOjpkaWRUcmFuc2l0aW9uRnJvbVRoaXNTdHIKICAg
ICBpZiAoZGVmZXJyZWQpCiAgICAgICAgIGRlZmVycmVkLT5hZGQodGhpcyk7CiAgICAgZWxzZQot
ICAgICAgICBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0LmZpcmVBbGwoU3RydWN0dXJlRmlyZURl
dGFpbCh0aGlzKSk7CisgICAgICAgIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQuZmlyZUFsbCgq
dm0oKSwgU3RydWN0dXJlRmlyZURldGFpbCh0aGlzKSk7CiB9CiAKIEpTVmFsdWUgU3RydWN0dXJl
Ojpwcm90b3R5cGVGb3JMb29rdXAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShy
ZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCBpbmxpbmUgdm9p
ZCBTdHJ1Y3R1cmU6OmRpZFJlcGxhY2VQcm9wZXJ0CiAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0g
bWFwLT5nZXQob2Zmc2V0KTsKICAgICBpZiAoTElLRUxZKCFzZXQpKQogICAgICAgICByZXR1cm47
Ci0gICAgc2V0LT5maXJlQWxsKCJQcm9wZXJ0eSBkaWQgZ2V0IHJlcGxhY2VkIik7CisgICAgc2V0
LT5maXJlQWxsKCp2bSgpLCAiUHJvcGVydHkgZGlkIGdldCByZXBsYWNlZCIpOwogfQogCiBpbmxp
bmUgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjpwcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2lu
dFNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDIwMjU3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4MCwx
MCArMjgwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHMoKSAmIERvbnRFbnVtRmxh
ZzsKICAgICB9CiAgICAgCi0gICAgdm9pZCBkaXNhYmxlV2F0Y2hpbmcoKQorICAgIHZvaWQgZGlz
YWJsZVdhdGNoaW5nKFZNJiB2bSkKICAgICB7CiAgICAgICAgIGlmIChXYXRjaHBvaW50U2V0KiBz
ZXQgPSB3YXRjaHBvaW50U2V0KCkpCi0gICAgICAgICAgICBzZXQtPmludmFsaWRhdGUoIkRpc2Fi
bGluZyB3YXRjaGluZyBpbiBzeW1ib2wgdGFibGUiKTsKKyAgICAgICAgICAgIHNldC0+aW52YWxp
ZGF0ZSh2bSwgIkRpc2FibGluZyB3YXRjaGluZyBpbiBzeW1ib2wgdGFibGUiKTsKICAgICAgICAg
aWYgKHZhck9mZnNldCgpLmlzU2NvcGUoKSkKICAgICAgICAgICAgIHBhY2sodmFyT2Zmc2V0KCks
IGZhbHNlLCBpc1JlYWRPbmx5KCksIGlzRG9udEVudW0oKSk7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDgsNyArNzQ4
LDcgQEAgdm9pZCBWTTo6cmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcAogdm9pZCBWTTo6
YWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYg
KFJlZlB0cjxXYXRjaHBvaW50U2V0PiB3YXRjaHBvaW50U2V0ID0gbV9pbXB1cmVQcm9wZXJ0eVdh
dGNocG9pbnRTZXRzLnRha2UocHJvcGVydHlOYW1lKSkKLSAgICAgICAgd2F0Y2hwb2ludFNldC0+
ZmlyZUFsbCgiSW1wdXJlIHByb3BlcnR5IGFkZGVkIik7CisgICAgICAgIHdhdGNocG9pbnRTZXQt
PmZpcmVBbGwoKnRoaXMsICJJbXB1cmUgcHJvcGVydHkgYWRkZWQiKTsKIH0KIAogc3RhdGljIGJv
b2wgZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQodW5zaWduZWQmIGNvdW50ZXIsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBkb0VuYWJsZVdvcmspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMDI1NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxNi0wNi0yOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KKworICAgICAgICBzb21lIFdhdGNocG9pbnRzJyA6OmZpcmVJbnRlcm5hbCBtZXRob2Qgd2ls
bCBjYWxsIG9wZXJhdGlvbnMgdGhhdCBtaWdodCBHQyB3aGVyZSB0aGUgR0Mgd2lsbCBjYXVzZSB0
aGUgd2F0Y2hwb2ludCBpdHNlbGYgdG8gZGVzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTE5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjYzMDIzNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2ludHNGb3JXaW5kb3cpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OmNyZWF0
ZSk6CisKIDIwMTYtMDYtMjggIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFBocmFzaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGFjY2VwdGVkIGluIDxtbz4gZWxlbWVu
dHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAkocmV2aXNpb24gMjAyNTczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQg
SlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2EKICAgICAgICAgaWYgKCF3cmFwcGVy
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEpTRE9NV2luZG93QmFzZSoganNXaW5k
b3cgPSBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPih3cmFwcGVyKTsKLSAgICAgICAganNX
aW5kb3ctPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cy5maXJlQWxsKCJGcmFtZSBjbGVhcmVkIik7
CisgICAgICAgIGpzV2luZG93LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMuZmlyZUFsbCh2bSwg
IkZyYW1lIGNsZWFyZWQiKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDI1NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
d29ya2luZyBjb3B5KQpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyKCRpbXBsVHlwZSkgdW5sZXNzICRzdmdQ
cm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClc
biIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoXCJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9i
amVjdFwiKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBnbG9i
YWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoZ2xv
YmFsT2JqZWN0LT52bSgpLCBcIkFsbG9jYXRlZCBtYXNxdWVyYWRpbmcgb2JqZWN0XCIpO1xuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5oCShyZXZpc2lvbiAyMDI1NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBUZXN0RXZlbnRUYXJnZXQgRE9NV3Jh
cHBlZDsKICAgICBzdGF0aWMgSlNUZXN0RXZlbnRUYXJnZXQqIGNyZWF0ZShKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEV2
ZW50VGFyZ2V0PiYmIGltcGwpCiAgICAgewotICAgICAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZpcmVBbGwoIkFsbG9jYXRlZCBtYXNxdWVyYWRp
bmcgb2JqZWN0Iik7CisgICAgICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxPYmplY3QtPnZtKCksICJBbGxvY2F0ZWQgbWFz
cXVlcmFkaW5nIG9iamVjdCIpOwogICAgICAgICBKU1Rlc3RFdmVudFRhcmdldCogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudFRhcmdldD4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RFdmVudFRhcmdldChzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>