<?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>179988</bug_id>
          
          <creation_ts>2017-11-23 17:09:20 -0800</creation_ts>
          <short_desc>Heap::isMarked and friends should be instance methods</short_desc>
          <delta_ts>2019-03-25 15:43:12 -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 Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1374495</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-11-23 17:09:20 -0800</bug_when>
    <thetext>They need to find Heap, so they might as well be given a pointer to it.  I bet all callers already have access to VM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520692</commentid>
    <comment_count>1</comment_count>
      <attachid>365825</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-24 04:07:53 -0700</bug_when>
    <thetext>Created attachment 365825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520693</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-24 04:09:47 -0700</bug_when>
    <thetext>Attachment 365825 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/GCIncomingRefCountedSetInlines.h:43:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 60 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>1521070</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-25 15:41:13 -0700</bug_when>
    <thetext>Committed r243467: &lt;https://trac.webkit.org/changeset/243467&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521071</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-25 15:43:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/49233283&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365825</attachid>
            <date>2019-03-24 04:07:53 -0700</date>
            <delta_ts>2019-03-25 15:17:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179988-20190324040752.patch</filename>
            <type>text/plain</type>
            <size>71052</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjFiN2FkYjM5MTAyZTg1MzZjOTYxMTE0NGY1MTE3NWQ5MGRhNTBhLi4yNDc5NGU0NGZlM2QwYTlk
MGM2MTExN2YxMWVhMjQxYmM1ZjNjODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMTktMDMtMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBIZWFwOjppc01hcmtlZCBhbmQgZnJpZW5kcyBzaG91bGQgYmUgaW5zdGFu
Y2UgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5OTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWxtb3N0IGFsbCB0aGUgY2FsbGVycyBvZiBIZWFwOjppc01hcmtlZCBoYXZlIFZNJiByZWZl
cmVuY2UuIFdlIHNob3VsZCBtYWtlIEhlYXA6OmlzTWFya2VkIGluc3RhbmNlIGZ1bmN0aW9uIGlu
c3RlYWQgb2Ygc3RhdGljIGZ1bmN0aW9uCisgICAgICAgIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQg
dG8gbG9vayB1cCBIZWFwIGZyb20gdGhlIGNlbGwuCisKKyAgICAgICAgKiBBUEkvSlNBUElXcmFw
cGVyT2JqZWN0Lm1tOgorICAgICAgICAoSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBBUEkvSlNNYXJraW5nQ29uc3Ry
YWludFByaXZhdGUuY3BwOgorICAgICAgICAoSlNDOjppc01hcmtlZCk6CisgICAgICAgICogQVBJ
L2dsaWIvSlNBUElXcmFwcGVyT2JqZWN0R0xpYi5jcHA6CisgICAgICAgIChKU0FQSVdyYXBwZXJP
YmplY3RIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5F
eGVjdXRhYmxlczo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjp2aXNpdFdlYWsgY29u
c3QpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyBjb25z
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtJbmZvOjp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmZpbmFsaXplKToKKyAgICAg
ICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxW
YXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAg
ICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtS
ZWZlcmVuY2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZEpldHRpc29uRHVlVG9P
bGRBZ2UpOgorICAgICAgICAoSlNDOjpzaG91bGRNYXJrVHJhbnNpdGlvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmRldGVybWluZUxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5h
bGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6amV0dGlzb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0V4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZVRvQ29k
ZUJsb2NrRWRnZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpydW5Db25zdHJhaW50KToKKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6ZmluYWxp
emUpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9HZXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50Ojpm
aW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaDoKKyAgICAgICAg
KiBieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5SWRTdGF0dXM6
OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRTdGF0dXMuaDoKKyAgICAgICAg
KiBieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFu
dDo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFZhcmlhbnQuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5jcHA6CisgICAgICAgIChKU0M6
Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsTGl2ZSBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9P
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0OjphcmVTdGlsbExpdmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2Rl
L09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRX
ZWFrIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsTGl2ZSBjb25zdCk6CisgICAg
ICAgICogYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6ZmluYWxpemUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9QdXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50OjpmaW5h
bGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0
dXNlczo6ZmluYWxpemVXaXRob3V0RGVsZXRpbmcpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0
YXR1c2VzOjpmaW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5o
OgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHA6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVNldDo6aXNTdGlsbEFsaXZlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1
Y3R1cmVTZXQuaDoKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToKKyAg
ICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6ZmluYWxp
emVJbkdDKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjppc0tub3duVG9CZUxpdmVEdXJpbmdH
Qyk6CisgICAgICAgICogaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZC5oOgorICAgICAgICAqIGhl
YXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdDSW5jb21p
bmdSZWZDb3VudGVkPFQ+OjpmaWx0ZXJJbmNvbWluZ1JlZmVyZW5jZXMpOgorICAgICAgICAqIGhl
YXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaDoKKyAgICAgICAgKiBoZWFwL0dDSW5jb21pbmdS
ZWZDb3VudGVkU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHQ0luY29taW5nUmVmQ291bnRl
ZFNldDxUPjo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpHQ0luY29taW5n
UmVmQ291bnRlZFNldDxUPjo6c3dlZXApOgorICAgICAgICAoSlNDOjpHQ0luY29taW5nUmVmQ291
bnRlZFNldDxUPjo6cmVtb3ZlQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R0NJbmNvbWlu
Z1JlZkNvdW50ZWRTZXQ8VD46OnJlbW92ZURlYWQpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZFRvUmVtZW1iZXJlZFNldCk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnJ1bkVuZFBoYXNlKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c3dlZXBB
cnJheUJ1ZmZlcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjphZGRDb3JlQ29uc3RyYWludHMpOgor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SGVhcDo6aXNNYXJrZWQpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90
QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6OmFwcGVuZE5v
ZGUpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90
VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3RhY2spOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
LmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OnZpc2l0V2Vh
ayk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6
RXJyb3JJbnN0YW5jZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSW5mZXJyZWRWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRWYWx1ZTo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAqIHJ1bnRpbWUvU3RhY2tGcmFtZS5o
OgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjppc01hcmtlZCBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzQ2hlYXBE
dXJpbmdHQyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWFya0lmQ2hlYXApOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXIu
Y3BwOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6OmludmFsaWRhdGVUeXBlU2V0Q2FjaGUp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyLmg6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6aW52YWxpZGF0ZUNhY2hlKToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVTZXQuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBJbXBs
LmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldDxXZWFrTWFwQnVj
a2V0RGF0YUtleVZhbHVlPj46OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha01hcEltcGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OldlYWtNYXBJbXBsPFdl
YWtNYXBCdWNrZXQ+OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisKIDIwMTktMDMtMjMgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJvbGxpbmcgb3V0IHIyNDMw
MzIgYW5kIHIyNDMwNzEgYmVjYXVzZSB0aGUgZml4IGlzIGluY29ycmVjdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5kZXggOGE4NGJmNzdi
M2UyZGVlMTA2MDY5NmJhMzcxN2Y1ZDY0MThjYjBhYy4uNThiNzRlNzJiOTEzZGM4N2MyM2Q0MmM4
MmNjY2JhZjgzZjFjMjVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SVdyYXBwZXJPYmplY3QubW0KQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBKU0FQSVdyYXBwZXJPYmpl
Y3RIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjoKICAgICAvLyB0aGUgc2FtZSBPYmplY3RpdmUtQyBvYmplY3QgaW4gbXVsdGlwbGUgZ2xvYmFs
IG9iamVjdHMga2VlcHMgYWxsIG9mIHRoZSBnbG9iYWwgb2JqZWN0cyBhbGl2ZS4KICAgICBpZiAo
IXdyYXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBKU0M6OkhlYXA6OmlzTWFya2VkKHdyYXBwZXJPYmplY3QtPnN0cnVjdHVyZSgp
LT5nbG9iYWxPYmplY3QoKSkgJiYgdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qod3JhcHBlck9i
amVjdC0+d3JhcHBlZE9iamVjdCgpKTsKKyAgICByZXR1cm4gdmlzaXRvci52bSgpLmhlYXAuaXNN
YXJrZWQod3JhcHBlck9iamVjdC0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKSAmJiB2aXNp
dG9yLmNvbnRhaW5zT3BhcXVlUm9vdCh3cmFwcGVyT2JqZWN0LT53cmFwcGVkT2JqZWN0KCkpOwog
fQogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKaW5kZXggZGQ0YmFiN2RiYmRjYTA1
MTVkZmRiOTk4Mjc3MzcyNDA2ZDVmOTBhYi4uZDllZTY3NDAzNDljZmVmZGZiY2MwZDMxMDk0ZjFm
NGRlNWE1MmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQCBzdHJ1Y3Qg
TWFya2VyIDogSlNNYXJrZXIgewogICAgIFNsb3RWaXNpdG9yKiB2aXNpdG9yOwogfTsKIAotYm9v
bCBpc01hcmtlZChKU01hcmtlclJlZiwgSlNPYmplY3RSZWYgb2JqZWN0UmVmKQorYm9vbCBpc01h
cmtlZChKU01hcmtlclJlZiBtYXJrZXJSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKIHsKICAg
ICBpZiAoIW9iamVjdFJlZikKICAgICAgICAgcmV0dXJuIHRydWU7IC8vIE51bGwgaXMgYW4gaW1t
b3J0YWwgb2JqZWN0LgogICAgIAotICAgIHJldHVybiBIZWFwOjppc01hcmtlZCh0b0pTKG9iamVj
dFJlZikpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrZXIqPihtYXJrZXJSZWYpLT52aXNp
dG9yLT52bSgpLmhlYXAuaXNNYXJrZWQodG9KUyhvYmplY3RSZWYpKTsKIH0KIAogdm9pZCBtYXJr
KEpTTWFya2VyUmVmIG1hcmtlclJlZiwgSlNPYmplY3RSZWYgb2JqZWN0UmVmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQVBJV3JhcHBlck9iamVjdEdMaWIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQVBJV3JhcHBlck9iamVjdEdM
aWIuY3BwCmluZGV4IDg3ZDE5OGNjYjJmOGY4MDY1MDM2OTYzMmZlNWNkMGRlY2M0ZGVlMWQuLjg2
N2ZkNDI4ZTI3N2Y0NThlN2ZiOGE5ODEzYzMyMTgzN2Y3NGFjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0FQSVdyYXBwZXJPYmplY3RHTGliLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNBUElXcmFwcGVyT2JqZWN0R0xpYi5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjoKICAgICAvLyB0aGUg
c2FtZSB3cmFwcGVkIG9iamVjdCBpbiBtdWx0aXBsZSBnbG9iYWwgb2JqZWN0cyBrZWVwcyBhbGwg
b2YgdGhlIGdsb2JhbCBvYmplY3RzIGFsaXZlLgogICAgIGlmICghd3JhcHBlck9iamVjdC0+d3Jh
cHBlZE9iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEpTQzo6SGVh
cDo6aXNNYXJrZWQod3JhcHBlck9iamVjdC0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKSAm
JiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdCh3cmFwcGVyT2JqZWN0LT53cmFwcGVkT2JqZWN0
KCkpOworICAgIHJldHVybiB2aXNpdG9yLnZtKCkuaGVhcC5pc01hcmtlZCh3cmFwcGVyT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpICYmIHZpc2l0b3IuY29udGFpbnNPcGFxdWVS
b290KHdyYXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSk7CiB9CiAKIG5hbWVzcGFjZSBKU0Mg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAppbmRleCA4NGJhY2NjNjRiNWI5M2FlZTZkZThiZmY3MWUzZWNhOGVhNjBjNjFk
Li40ODMwYTU2ZjU0YWFkYmJlOWE3ZDk1NTZhODI3MTQxYjZhN2ZmMjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApA
QCAtMjYyLDcgKzI2Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhl
Y3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiB2b2lkIEJ1aWx0aW5F
eGVjdXRhYmxlczo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKQogewogICAgIGZvciAoYXV0byom
IHVubGlua2VkRXhlY3V0YWJsZSA6IG1fdW5saW5rZWRFeGVjdXRhYmxlcykgewotICAgICAgICBp
ZiAodW5saW5rZWRFeGVjdXRhYmxlICYmICFIZWFwOjppc01hcmtlZCh1bmxpbmtlZEV4ZWN1dGFi
bGUpKQorICAgICAgICBpZiAodW5saW5rZWRFeGVjdXRhYmxlICYmICFtX3ZtLmhlYXAuaXNNYXJr
ZWQodW5saW5rZWRFeGVjdXRhYmxlKSkKICAgICAgICAgICAgIHVubGlua2VkRXhlY3V0YWJsZSA9
IG51bGxwdHI7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwCmluZGV4IDE4NzcyMzFkNzNhYmZjNWM3ZTZkNDhmYjgyZGQ2OTJhYzdkOWUz
YzMuLjkwNTk4MTE0ODAxYmViYTI2MDZmY2Q2N2Y5NjhmYjBjNGU2OWVkODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTMyMywzNCArMzIz
LDM0IEBAIHZvaWQgQWNjZXNzQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogCiBi
b29sIEFjY2Vzc0Nhc2U6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3Ry
dWN0dXJlICYmICFIZWFwOjppc01hcmtlZChtX3N0cnVjdHVyZS5nZXQoKSkpCisgICAgaWYgKG1f
c3RydWN0dXJlICYmICF2bS5oZWFwLmlzTWFya2VkKG1fc3RydWN0dXJlLmdldCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChtX3BvbHlQcm90b0FjY2Vzc0NoYWluKSB7CiAgICAg
ICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLT5j
aGFpbigpKSB7Ci0gICAgICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2VkKHN0cnVjdHVyZSkpCisg
ICAgICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoc3RydWN0dXJlKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFtX2NvbmRpdGlv
blNldC5hcmVTdGlsbExpdmUoKSkKKyAgICBpZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2
ZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaXNBY2Nlc3NvcigpKSB7CiAg
ICAgICAgIGF1dG8mIGFjY2Vzc29yID0gdGhpcy0+YXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4o
KTsKICAgICAgICAgaWYgKGFjY2Vzc29yLmNhbGxMaW5rSW5mbygpKQogICAgICAgICAgICAgYWNj
ZXNzb3IuY2FsbExpbmtJbmZvKCktPnZpc2l0V2Vhayh2bSk7Ci0gICAgICAgIGlmIChhY2Nlc3Nv
ci5jdXN0b21TbG90QmFzZSgpICYmICFIZWFwOjppc01hcmtlZChhY2Nlc3Nvci5jdXN0b21TbG90
QmFzZSgpKSkKKyAgICAgICAgaWYgKGFjY2Vzc29yLmN1c3RvbVNsb3RCYXNlKCkgJiYgIXZtLmhl
YXAuaXNNYXJrZWQoYWNjZXNzb3IuY3VzdG9tU2xvdEJhc2UoKSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfSBlbHNlIGlmICh0eXBlKCkgPT0gSW50cmluc2ljR2V0dGVyKSB7CiAg
ICAgICAgIGF1dG8mIGludHJpbnNpYyA9IHRoaXMtPmFzPEludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U+KCk7Ci0gICAgICAgIGlmIChpbnRyaW5zaWMuaW50cmluc2ljRnVuY3Rpb24oKSAmJiAhSGVh
cDo6aXNNYXJrZWQoaW50cmluc2ljLmludHJpbnNpY0Z1bmN0aW9uKCkpKQorICAgICAgICBpZiAo
aW50cmluc2ljLmludHJpbnNpY0Z1bmN0aW9uKCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQoaW50cmlu
c2ljLmludHJpbnNpY0Z1bmN0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0gZWxzZSBpZiAodHlwZSgpID09IE1vZHVsZU5hbWVzcGFjZUxvYWQpIHsKICAgICAgICAgYXV0
byYgYWNjZXNzQ2FzZSA9IHRoaXMtPmFzPE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2U+KCk7Ci0g
ICAgICAgIGlmIChhY2Nlc3NDYXNlLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpICYmICFIZWFwOjpp
c01hcmtlZChhY2Nlc3NDYXNlLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKSkKKyAgICAgICAgaWYg
KGFjY2Vzc0Nhc2UubW9kdWxlTmFtZXNwYWNlT2JqZWN0KCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQo
YWNjZXNzQ2FzZS5tb2R1bGVOYW1lc3BhY2VPYmplY3QoKSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGlmIChhY2Nlc3NDYXNlLm1vZHVsZUVudmlyb25tZW50KCkgJiYgIUhl
YXA6OmlzTWFya2VkKGFjY2Vzc0Nhc2UubW9kdWxlRW52aXJvbm1lbnQoKSkpCisgICAgICAgIGlm
IChhY2Nlc3NDYXNlLm1vZHVsZUVudmlyb25tZW50KCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQoYWNj
ZXNzQ2FzZS5tb2R1bGVFbnZpcm9ubWVudCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9IGVsc2UgaWYgKHR5cGUoKSA9PSBJbnN0YW5jZU9mSGl0IHx8IHR5cGUoKSA9PSBJbnN0
YW5jZU9mTWlzcykgewotICAgICAgICBpZiAoYXM8SW5zdGFuY2VPZkFjY2Vzc0Nhc2U+KCkucHJv
dG90eXBlKCkgJiYgIUhlYXA6OmlzTWFya2VkKGFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpLnBy
b3RvdHlwZSgpKSkKKyAgICAgICAgaWYgKGFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpLnByb3Rv
dHlwZSgpICYmICF2bS5oZWFwLmlzTWFya2VkKGFzPEluc3RhbmNlT2ZBY2Nlc3NDYXNlPigpLnBy
b3RvdHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM3MSw3
ICszNzEsNyBAQCBib29sIEFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKSBjb25zdAogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFRy
YW5zaXRpb246Ci0gICAgICAgIGlmIChIZWFwOjppc01hcmtlZChtX3N0cnVjdHVyZS0+cHJldmlv
dXNJRCgpKSkKKyAgICAgICAgaWYgKHZpc2l0b3Iudm0oKS5oZWFwLmlzTWFya2VkKG1fc3RydWN0
dXJlLT5wcmV2aW91c0lEKCkpKQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZChtX3N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmNwcAppbmRleCBjMGEzNzc4NTZiMjZlNWRhMDliYzNiY2FkMWJhYzBkYTUzOWFlODkzLi5kZWFl
MzgzMmYwNmRhMDZmZmVkNTBkYzM1MWJlZjcwMDhmMWY1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBA
IHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRNYXhOdW1Bcmd1bWVudHModW5zaWduZWQgdmFsdWUpCiB2
b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKIHsKICAgICBhdXRvIGhhbmRsZVNw
ZWNpZmljQ2FsbGVlID0gWyZdIChKU0Z1bmN0aW9uKiBjYWxsZWUpIHsKLSAgICAgICAgaWYgKEhl
YXA6OmlzTWFya2VkKGNhbGxlZS0+ZXhlY3V0YWJsZSgpKSkKKyAgICAgICAgaWYgKHZtLmhlYXAu
aXNNYXJrZWQoY2FsbGVlLT5leGVjdXRhYmxlKCkpKQogICAgICAgICAgICAgbV9oYXNTZWVuQ2xv
c3VyZSA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fY2xlYXJlZEJ5R0MgPSB0
cnVlOwpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0m
IHZtKQogICAgICAgICAgICAgICAgIHVubGluayh2bSk7CiAgICAgICAgICAgICAgICAgbV9jbGVh
cmVkQnlHQyA9IHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoIUhlYXA6
OmlzTWFya2VkKG1fY2FsbGVlT3JDb2RlQmxvY2suZ2V0KCkpKSB7CisgICAgICAgIH0gZWxzZSBp
ZiAoIXZtLmhlYXAuaXNNYXJrZWQobV9jYWxsZWVPckNvZGVCbG9jay5nZXQoKSkpIHsKICAgICAg
ICAgICAgIGlmIChpc0RpcmVjdCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKApAQCAtMjUyLDcgKzI1
Miw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVubGluayh2bSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaXNEaXJlY3QoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sYXN0U2VlbkNhbGxlZU9y
RXhlY3V0YWJsZS5nZXQoKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc0RpcmVjdCgpICYmICF2
bS5oZWFwLmlzTWFya2VkKG1fbGFzdFNlZW5DYWxsZWVPckV4ZWN1dGFibGUuZ2V0KCkpKSB7CiAg
ICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAgIkNsZWFyaW5nIGNhbGwgdG8gIiwgUmF3UG9p
bnRlcihleGVjdXRhYmxlKCkpLApAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgQ2FsbExpbmtJbmZv
Ojp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAgICAgICAgbV9sYXN0U2VlbkNhbGxlZU9yRXhlY3V0
YWJsZS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghaXNEaXJlY3QoKSAmJiBo
YXZlTGFzdFNlZW5DYWxsZWUoKSAmJiAhSGVhcDo6aXNNYXJrZWQobGFzdFNlZW5DYWxsZWUoKSkp
IHsKKyAgICBpZiAoIWlzRGlyZWN0KCkgJiYgaGF2ZUxhc3RTZWVuQ2FsbGVlKCkgJiYgIXZtLmhl
YXAuaXNNYXJrZWQobGFzdFNlZW5DYWxsZWUoKSkpIHsKICAgICAgICAgaWYgKGxhc3RTZWVuQ2Fs
bGVlKCktPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKICAgICAgICAgICAgIGhhbmRsZVNwZWNp
ZmljQ2FsbGVlKGpzQ2FzdDxKU0Z1bmN0aW9uKj4obGFzdFNlZW5DYWxsZWUoKSkpOwogICAgICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcAppbmRleCAxNTdhMjcxYzcyOTEwZTJjYTgwNjFlNzFhYTEwYzlhZjE5NmUxMjllLi4z
MmFhNmNhOTFiNDY4ZGYyZWY0YjRlM2Q3MjNkNDc0NjczOGNjM2RhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKQEAgLTQxOCwxMCAr
NDE4LDEwIEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCgpCiAgICAgbV92
YXJpYW50cyA9IGRlc3BlY2lmaWVkVmFyaWFudExpc3QobV92YXJpYW50cyk7CiB9CiAKLWJvb2wg
Q2FsbExpbmtTdGF0dXM6OmZpbmFsaXplKCkKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmZpbmFsaXpl
KFZNJiB2bSkKIHsKICAgICBmb3IgKENhbGxWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykg
ewotICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgaWYgKCF2YXJpYW50
LmZpbmFsaXplKHZtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCmluZGV4IDNhNDBjOTIzODYyZGZhMzk0MTBmMGU2NTM3YTQ0NzVlZTVkMmM2NGIuLmYw
ZWQ0MDdkYzA4ZTA2ZTI1MzQ3YmM0OGFhM2QwZWRhMDI5NWNjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCkBAIC0xMDYsNyArMTA2LDcg
QEAgY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogICAgIAogICAgIHVuc2lnbmVkIG1heE51bUFyZ3Vt
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4TnVtQXJndW1lbnRzOyB9CiAgICAgCi0gICAgYm9v
bCBmaW5hbGl6ZSgpOworICAgIGJvb2wgZmluYWxpemUoVk0mKTsKICAgICAKICAgICB2b2lkIG1l
cmdlKGNvbnN0IENhbGxMaW5rU3RhdHVzJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAppbmRleCBkMjBlYTkzZDViN2ZiZTk3ZTRjMDc2
NWY1YzUwYWUxMzZkMTkxYTMyLi43MTY5Nzg2YmQ0MGVlZjBjNTA4NzU4NjU4YjllMWVjMTc5YWU2
MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlh
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5j
cHAKQEAgLTMxLDkgKzMxLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgQ2FsbFZhcmlh
bnQ6OmZpbmFsaXplKCkKK2Jvb2wgQ2FsbFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkKIHsKLSAg
ICBpZiAobV9jYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fY2FsbGVlKSkKKyAgICBpZiAobV9j
YWxsZWUgJiYgIXZtLmhlYXAuaXNNYXJrZWQobV9jYWxsZWUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsVmFyaWFudC5oCmluZGV4IDhjZWRhZTYxMjAyYWQ4MjNkNDdhNTM0ODFkYmI2OTFmNWFk
YmU5ZDcuLjVhMWM1NWM0MWRmOWU5NjkwYTc0YTk2OTNiMTQyN2I1NmJjMWJhNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCkBAIC0xMzcsNyArMTM3
LDcgQEAgY2xhc3MgQ2FsbFZhcmlhbnQgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIGJvb2wgZmluYWxpemUoVk0mKTsKICAg
ICAKICAgICBib29sIG1lcmdlKGNvbnN0IENhbGxWYXJpYW50Jik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDYyODlhNTYzNGY1M2Nh
MWU2NGI2NzNiN2JkZTY0MjBiMGU5MjgyNDIuLmI1OTQ5YjE5MTAxNjEyNjQ4Y2ZhOTdjMzM3MDQx
ZjgwNjI0ZjY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC05OTgsMTEgKzk5OCwxMSBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkVmlzaXRT
dHJvbmdseShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlcikKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgQ29kZUJsb2NrOjpzaG91bGRKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5j
ZSgpCitib29sIENvZGVCbG9jazo6c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UoVk0m
IHZtKQogewogICAgIGlmICghSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIUhlYXA6OmlzTWFya2VkKHRoaXMpOwor
ICAgIHJldHVybiAhdm0uaGVhcC5pc01hcmtlZCh0aGlzKTsKIH0KIAogc3RhdGljIFNlY29uZHMg
dGltZVRvTGl2ZShKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCkBAIC0xMDQwLDcgKzEwNDAsNyBA
QCBzdGF0aWMgU2Vjb25kcyB0aW1lVG9MaXZlKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIAog
Ym9vbCBDb2RlQmxvY2s6OnNob3VsZEpldHRpc29uRHVlVG9PbGRBZ2UoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKLSAgICBpZiAoSGVhcDo6aXNNYXJrZWQodGhpcykpCisgICAgaWYgKG1f
dm0tPmhlYXAuaXNNYXJrZWQodGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjpmb3JjZUNvZGVCbG9ja1RvSmV0dGlzb25EdWVUb09sZEFnZSgp
KSkKQEAgLTEwNTMsMTIgKzEwNTMsMTIgQEAgYm9vbCBDb2RlQmxvY2s6OnNob3VsZEpldHRpc29u
RHVlVG9PbGRBZ2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKIH0KIAogI2lmIEVOQUJMRShE
RkdfSklUKQotc3RhdGljIGJvb2wgc2hvdWxkTWFya1RyYW5zaXRpb24oREZHOjpXZWFrUmVmZXJl
bmNlVHJhbnNpdGlvbiYgdHJhbnNpdGlvbikKK3N0YXRpYyBib29sIHNob3VsZE1hcmtUcmFuc2l0
aW9uKFZNJiB2bSwgREZHOjpXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiYgdHJhbnNpdGlvbikKIHsK
LSAgICBpZiAodHJhbnNpdGlvbi5tX2NvZGVPcmlnaW4gJiYgIUhlYXA6OmlzTWFya2VkKHRyYW5z
aXRpb24ubV9jb2RlT3JpZ2luLmdldCgpKSkKKyAgICBpZiAodHJhbnNpdGlvbi5tX2NvZGVPcmln
aW4gJiYgIXZtLmhlYXAuaXNNYXJrZWQodHJhbnNpdGlvbi5tX2NvZGVPcmlnaW4uZ2V0KCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFIZWFwOjppc01hcmtlZCh0cmFu
c2l0aW9uLm1fZnJvbS5nZXQoKSkpCisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKHRyYW5zaXRp
b24ubV9mcm9tLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJldHVy
biB0cnVlOwpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRy
YW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMKICAg
ICAgICAgICAgICAgICAgICAgdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVj
dHVyZUlEKTsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9CiAgICAg
ICAgICAgICAgICAgICAgIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1
cmVJRCk7Ci0gICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKG9sZFN0cnVjdHVyZSkp
CisgICAgICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQob2xkU3RydWN0dXJlKSkKICAg
ICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChuZXdTdHJ1Y3R1cmUp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMTExMiw3ICsx
MTEyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMKICAgICAgICAgICAgIHdlYWtSZWZlcmVu
Y2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCiAgICAgICAgIGZvciAoYXV0byYgdHJhbnNpdGlv
biA6IGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnMpIHsKLSAgICAgICAgICAgIGlmIChzaG91bGRNYXJr
VHJhbnNpdGlvbih0cmFuc2l0aW9uKSkgeworICAgICAgICAgICAgaWYgKHNob3VsZE1hcmtUcmFu
c2l0aW9uKHZtLCB0cmFuc2l0aW9uKSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmb2xs
b3dpbmcgdGhyZWUgdGhpbmdzIGFyZSBsaXZlLCB0aGVuIHRoZSB0YXJnZXQgb2YgdGhlCiAgICAg
ICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBpcyBhbHNvIGxpdmU6CiAgICAgICAgICAgICAgICAg
Ly8KQEAgLTExNDQsNyArMTE0NCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVz
cyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTbG90VmlzaXRvciYgdmlzaXRvCiAgICAgVU5V
U0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChI
ZWFwOjppc01hcmtlZCh0aGlzKSkKKyAgICBWTSYgdm0gPSAqbV92bTsKKyAgICBpZiAodm0uaGVh
cC5pc01hcmtlZCh0aGlzKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIEluIHJhcmUg
YW5kIHdlaXJkIGNhc2VzLCB0aGlzIGNvdWxkIGJlIGNhbGxlZCBvbiBhIGJhc2VsaW5lIENvZGVC
bG9jay4gT25lIHRoYXQgSSBmb3VuZCB3YXMKQEAgLTExNjAsMTUgKzExNjEsMTUgQEAgdm9pZCBD
b2RlQmxvY2s6OmRldGVybWluZUxpdmVuZXNzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNs
b3RWaXNpdG9yJiB2aXNpdG8KICAgICBib29sIGFsbEFyZUxpdmVTb0ZhciA9IHRydWU7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5jZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgSlNDZWxsKiByZWZlcmVuY2UgPSBkZmdDb21tb24tPndlYWtSZWZl
cmVuY2VzW2ldLmdldCgpOwotICAgICAgICBBU1NFUlQoIWpzRHluYW1pY0Nhc3Q8Q29kZUJsb2Nr
Kj4oKnJlZmVyZW5jZS0+dm0oKSwgcmVmZXJlbmNlKSk7Ci0gICAgICAgIGlmICghSGVhcDo6aXNN
YXJrZWQocmVmZXJlbmNlKSkgeworICAgICAgICBBU1NFUlQoIWpzRHluYW1pY0Nhc3Q8Q29kZUJs
b2NrKj4odm0sIHJlZmVyZW5jZSkpOworICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQocmVm
ZXJlbmNlKSkgewogICAgICAgICAgICAgYWxsQXJlTGl2ZVNvRmFyID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoYWxsQXJlTGl2ZVNvRmFyKSB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmdDb21tb24tPndlYWtTdHJ1Y3R1
cmVSZWZlcmVuY2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIUhlYXA6OmlzTWFy
a2VkKGRmZ0NvbW1vbi0+d2Vha1N0cnVjdHVyZVJlZmVyZW5jZXNbaV0uZ2V0KCkpKSB7CisgICAg
ICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQoZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVm
ZXJlbmNlc1tpXS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBhbGxBcmVMaXZlU29GYXIgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTExOTEsMTMg
KzExOTIsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQog
ICAgIFZNJiB2bSA9ICptX3ZtOwogICAgIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6
T2Zmc2V0PiYgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMgPSBtX3VubGlua2VkQ29kZS0+cHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMoKTsKIAotICAgIGF1dG8gaGFuZGxlR2V0UHV0RnJvbVNj
b3BlID0gW10oYXV0byYgbWV0YWRhdGEpIHsKKyAgICBhdXRvIGhhbmRsZUdldFB1dEZyb21TY29w
ZSA9IFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKICAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZv
ID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvOwogICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZl
VHlwZSgpID09IEdsb2JhbFZhciB8fCBnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgPT0gR2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyAKICAgICAgICAgICAgIHx8IGdldFB1dEluZm8ucmVz
b2x2ZVR5cGUoKSA9PSBMb2NhbENsb3N1cmVWYXIgfHwgZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgp
ID09IEdsb2JhbExleGljYWxWYXIgfHwgZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IEdsb2Jh
bExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4mIHN0cnVjdHVyZSA9IG1ldGFkYXRh
Lm1fc3RydWN0dXJlOwotICAgICAgICBpZiAoIXN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChz
dHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICBpZiAoIXN0cnVjdHVyZSB8fCB2bS5oZWFwLmlzTWFy
a2VkKHN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgc2Nv
cGUgYWNjZXNzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJlLmdldCgpKTsKQEAgLTEy
MTMsNyArMTIxNCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVz
KCkKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1
bHQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVy
ZUlEOwotICAgICAgICAgICAgaWYgKCFvbGRTdHJ1Y3R1cmVJRCB8fCBIZWFwOjppc01hcmtlZCh2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKKyAgICAgICAg
ICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2Vzcy5cbiIpOwpAQCAtMTIy
Myw3ICsxMjI0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMo
KQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9kaXJlY3Q6IHsKICAgICAgICAgICAgIGF1dG8m
IG1ldGFkYXRhID0gY3VySW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZERpcmVjdD4oKS5tZXRhZGF0
YSh0aGlzKTsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRh
dGEubV9zdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgSGVh
cDo6aXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlE
KSkpCisgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQo
dm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mu
XG4iKTsKQEAgLTEyMzYsOSArMTIzNyw5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50
SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0g
bWV0YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0
cnVjdHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiA9IG1ldGFkYXRhLm1fc3RydWN0dXJlQ2hhaW4uZ2V0KCk7Ci0gICAg
ICAgICAgICBpZiAoKCFvbGRTdHJ1Y3R1cmVJRCB8fCBIZWFwOjppc01hcmtlZCh2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKLSAgICAgICAgICAgICAgICAm
JiAoIW5ld1N0cnVjdHVyZUlEIHx8IEhlYXA6OmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURU
YWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCkpKQotICAgICAgICAgICAgICAgICYmICghY2hhaW4g
fHwgSGVhcDo6aXNNYXJrZWQoY2hhaW4pKSkKKyAgICAgICAgICAgIGlmICgoIW9sZFN0cnVjdHVy
ZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9s
ZFN0cnVjdHVyZUlEKSkpCisgICAgICAgICAgICAgICAgJiYgKCFuZXdTdHJ1Y3R1cmVJRCB8fCB2
bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1
cmVJRCkpKQorICAgICAgICAgICAgICAgICYmICghY2hhaW4gfHwgdm0uaGVhcC5pc01hcmtlZChj
aGFpbikpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQg
cHV0IHRyYW5zaXRpb24uXG4iKTsKQEAgLTEyNTQsNyArMTI1NSw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VySW5z
dHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYg
KCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChtZXRhZGF0YS5t
X2NhY2hlZFN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlIHx8IHZtLmhlYXAuaXNNYXJrZWQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1
cmUuZ2V0KCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJ
bnQgdG9fdGhpcyB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlLmdldCgpKTsKQEAgLTEyNjgsNyArMTI2OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGlmICghY2FjaGVXcml0ZUJhcnJpZXIg
fHwgY2FjaGVXcml0ZUJhcnJpZXIudW52YWxpZGF0ZWRHZXQoKSA9PSBKU0NlbGw6OnNlZW5NdWx0
aXBsZUNhbGxlZU9iamVjdHMoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IEpTQ2VsbCogY2FjaGVkRnVuY3Rpb24gPSBjYWNoZVdyaXRlQmFycmllci5nZXQoKTsKLSAgICAg
ICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjYWNoZWRGdW5jdGlvbikpCisgICAgICAgICAgICBp
ZiAodm0uaGVhcC5pc01hcmtlZChjYWNoZWRGdW5jdGlvbikpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAg
ICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCBjcmVhdGVfdGhpcyB3aXRoIGNhY2hlZCBjYWxs
ZWUgJXAuXG4iLCBjYWNoZWRGdW5jdGlvbik7CkBAIC0xMjgxLDcgKzEyODIsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgICAgICAvLyB0byB0
aGUgc3ltYm9sIHRhYmxlIHN0cm9uZ2x5LiBCdXQgaXQncyBuaWNlIHRvIGJlIG9uIHRoZSBzYWZl
IHNpZGUuCiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxP
cFJlc29sdmVTY29wZT4oKS5tZXRhZGF0YSh0aGlzKTsKICAgICAgICAgICAgIFdyaXRlQmFycmll
ckJhc2U8U3ltYm9sVGFibGU+JiBzeW1ib2xUYWJsZSA9IG1ldGFkYXRhLm1fc3ltYm9sVGFibGU7
Ci0gICAgICAgICAgICBpZiAoIXN5bWJvbFRhYmxlIHx8IEhlYXA6OmlzTWFya2VkKHN5bWJvbFRh
YmxlLmdldCgpKSkKKyAgICAgICAgICAgIGlmICghc3ltYm9sVGFibGUgfHwgdm0uaGVhcC5pc01h
cmtlZChzeW1ib2xUYWJsZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCJDbGVhcmluZyBkZWFkIHN5bWJvbFRhYmxlICVwLlxuIiwgc3ltYm9sVGFibGUuZ2V0KCkpOwpA
QCAtMTMxNCwxMSArMTMxNSwxMSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGlu
ZUNhY2hlcygpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKIAotICAgICAg
ICBpZiAoIUhlYXA6OmlzTWFya2VkKHN0ZDo6Z2V0PDA+KHBhaXIua2V5KSkpCisgICAgICAgIGlm
ICghdm0uaGVhcC5pc01hcmtlZChzdGQ6OmdldDwwPihwYWlyLmtleSkpKQogICAgICAgICAgICAg
cmV0dXJuIGNsZWFyKCk7CiAKICAgICAgICAgZm9yIChjb25zdCBMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQqIHdhdGNocG9pbnQgOiBwYWlyLnZhbHVlKSB7Ci0g
ICAgICAgICAgICBpZiAoIXdhdGNocG9pbnQtPmtleSgpLmlzU3RpbGxMaXZlKCkpCisgICAgICAg
ICAgICBpZiAoIXdhdGNocG9pbnQtPmtleSgpLmlzU3RpbGxMaXZlKHZtKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gY2xlYXIoKTsKICAgICAgICAgfQogCkBAIC0xMzI2LDEyICsxMzI3LDEyIEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICB9KTsKIAog
ICAgIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhbJl0oTExJbnRDYWxsTGlua0luZm8mIGNhbGxM
aW5rSW5mbykgewotICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2VkKCkgJiYgIUhlYXA6
OmlzTWFya2VkKGNhbGxMaW5rSW5mby5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgIGlmIChjYWxs
TGlua0luZm8uaXNMaW5rZWQoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8uY2Fs
bGVlLmdldCgpKSkgewogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gIiwgKnRoaXMs
ICJcbiIpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLnVubGluaygpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmICghIWNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJr
ZWQoY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgaWYgKCEhY2Fs
bExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlICYmICF2bS5oZWFwLmlzTWFya2VkKGNhbGxMaW5rSW5m
by5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCiAgICAgICAgICAgICBjYWxsTGlua0luZm8ubGFzdFNl
ZW5DYWxsZWUuY2xlYXIoKTsKICAgICB9KTsKIH0KQEAgLTEzNTYsOCArMTM1NywxMCBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpCiB9CiAjZW5kaWYK
IAotdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJikKK3ZvaWQgQ29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiB7CisgICAgVU5VU0VEX1BB
UkFNKHZtKTsKKwogICAgIHVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7CiAgICAgCiAgICAgaWYgKEpJ
VENvZGU6OmNvdWxkQmVJbnRlcnByZXRlZChqaXRUeXBlKCkpKQpAQCAtMTM3MSw3ICsxMzc0LDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJikKICNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkp
IHsKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0Nv
bW1vbigpOwotICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZmluYWxpemUoKTsK
KyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmZpbmFsaXplKHZtKTsKICAgICB9
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKQEAgLTE5NTIsNiArMTk1NSw4IEBAIHZvaWQg
Q29kZUJsb2NrOjpqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25SZWFzb24gcmVhc29uLCBSZW9w
dGltaXphdGlvbk1vZGUgbW9kCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgIFVOVVNFRF9Q
QVJBTShkZXRhaWwpOwogI2VuZGlmCisKKyAgICBWTSYgdm0gPSAqbV92bTsKICAgICAKICAgICBD
T0RFQkxPQ0tfTE9HX0VWRU5UKHRoaXMsICJqZXR0aXNvbiIsICgiZHVlIHRvICIsIHJlYXNvbiwg
IiwgY291bnRpbmcgPSAiLCBtb2RlID09IENvdW50UmVvcHRpbWl6YXRpb24sICIsIGRldGFpbCA9
ICIsIHBvaW50ZXJEdW1wKGRldGFpbCkpKTsKIApAQCAtMTk3NiwxMyArMTk4MSwxMyBAQCB2b2lk
IENvZGVCbG9jazo6amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVhc29uIHJlYXNvbiwgUmVv
cHRpbWl6YXRpb25Nb2RlIG1vZAogICAgICAgICAgICAgICAgIEpTQ2VsbCogb3JpZ2luID0gdHJh
bnNpdGlvbi5tX2NvZGVPcmlnaW4uZ2V0KCk7CiAgICAgICAgICAgICAgICAgSlNDZWxsKiBmcm9t
ID0gdHJhbnNpdGlvbi5tX2Zyb20uZ2V0KCk7CiAgICAgICAgICAgICAgICAgSlNDZWxsKiB0byA9
IHRyYW5zaXRpb24ubV90by5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoKCFvcmlnaW4gfHwg
SGVhcDo6aXNNYXJrZWQob3JpZ2luKSkgJiYgSGVhcDo6aXNNYXJrZWQoZnJvbSkpCisgICAgICAg
ICAgICAgICAgaWYgKCghb3JpZ2luIHx8IHZtLmhlYXAuaXNNYXJrZWQob3JpZ2luKSkgJiYgdm0u
aGVhcC5pc01hcmtlZChmcm9tKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgIFRyYW5zaXRpb24gdW5kZXIgIiwgUmF3UG9pbnRlcihv
cmlnaW4pLCAiLCAiLCBSYXdQb2ludGVyKGZyb20pLCAiIC0+ICIsIFJhd1BvaW50ZXIodG8pLCAi
LlxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZGZnQ29tbW9uLT53ZWFrUmVmZXJlbmNlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
ICAgIEpTQ2VsbCogd2VhayA9IGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5jZXNbaV0uZ2V0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKHdlYWspKQorICAgICAgICAgICAgICAg
IGlmICh2bS5oZWFwLmlzTWFya2VkKHdlYWspKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgV2VhayByZWZlcmVuY2UgIiwgUmF3UG9p
bnRlcih3ZWFrKSwgIi5cbiIpOwogICAgICAgICAgICAgfQpAQCAtMTk5MCw3ICsxOTk1LDYgQEAg
dm9pZCBDb2RlQmxvY2s6OmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvblJlYXNvbiByZWFzb24s
IFJlb3B0aW1pemF0aW9uTW9kZSBtb2QKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CiAKLSAgICBWTSYgdm0gPSAqbV92bTsKICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoKmhl
YXAoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2FudCB0byBhY2NvbXBsaXNoIHR3byB0aGluZ3MgaGVy
ZToKQEAgLTIwMTAsNyArMjAxNCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNvbihQcm9maWxl
cjo6SmV0dGlzb25SZWFzb24gcmVhc29uLCBSZW9wdGltaXphdGlvbk1vZGUgbW9kCiAgICAgICAg
IC8vIFRoaXMgYWNjb21wbGlzaGVzICgxKSwgYW5kIGRvZXMgaXRzIG93biBib29rLWtlZXBpbmcg
YWJvdXQgd2hldGhlciBpdCBoYXMgYWxyZWFkeSBoYXBwZW5lZC4KICAgICAgICAgaWYgKCFqaXRD
b2RlKCktPmRmZ0NvbW1vbigpLT5pbnZhbGlkYXRlKCkpIHsKICAgICAgICAgICAgIC8vIFdlJ3Zl
IGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZC4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRo
aXMgIT0gcmVwbGFjZW1lbnQoKSB8fCAodm0uaGVhcC5pc0N1cnJlbnRUaHJlYWRCdXN5KCkgJiYg
IUhlYXA6OmlzTWFya2VkKG93bmVyRXhlY3V0YWJsZSgpKSkpOworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQodGhpcyAhPSByZXBsYWNlbWVudCgpIHx8ICh2bS5oZWFwLmlzQ3VycmVudFRocmVh
ZEJ1c3koKSAmJiAhdm0uaGVhcC5pc01hcmtlZChvd25lckV4ZWN1dGFibGUoKSkpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTIwNDIsNyArMjA0Niw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25SZWFzb24gcmVhc29uLCBS
ZW9wdGltaXphdGlvbk1vZGUgbW9kCiAKICAgICAvLyBKZXR0aXNvbiBjYW4gaGFwcGVuIGR1cmlu
ZyBHQy4gV2UgZG9uJ3Qgd2FudCB0byBpbnN0YWxsIGNvZGUgdG8gYSBkZWFkIGV4ZWN1dGFibGUK
ICAgICAvLyBiZWNhdXNlIHRoYXQgd291bGQgYWRkIGEgZGVhZCBvYmplY3QgdG8gdGhlIHJlbWVt
YmVyZWQgc2V0LgotICAgIGlmICh2bS5oZWFwLmlzQ3VycmVudFRocmVhZEJ1c3koKSAmJiAhSGVh
cDo6aXNNYXJrZWQob3duZXJFeGVjdXRhYmxlKCkpKQorICAgIGlmICh2bS5oZWFwLmlzQ3VycmVu
dFRocmVhZEJ1c3koKSAmJiAhdm0uaGVhcC5pc01hcmtlZChvd25lckV4ZWN1dGFibGUoKSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoaXMgYWNjb21wbGlzaGVzICgyKS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA1ZWVjYjc3ZjkyMzczMzU5
ZTU0OWM2NDA5OGNhMmZiYWRkZWIzYTRkLi41MmQwMWJhODIxYTg3MzA3MGU2MmE4ODY0MWFmY2Y4
MjJhMzJjZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CkBAIC05MTksNyArOTE5LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgfQogCiAgICAgYm9vbCBzaG91bGRWaXNpdFN0cm9uZ2x5KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYpOwotICAgIGJvb2wgc2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2UoKTsKKyAg
ICBib29sIHNob3VsZEpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNlKFZNJik7CiAgICAgYm9vbCBz
aG91bGRKZXR0aXNvbkR1ZVRvT2xkQWdlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpOwogICAg
IAogICAgIHZvaWQgcHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgU2xvdFZpc2l0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAppbmRleCAxNGQyZDM2YjQ3
YTMxN2FjNTYxNWFlNDM0YTYyMTlmY2JhYmJmZmJiLi5mYzM3NzgzNGI2MzNlZDUyYWE2MjI5ZThj
ZTc1MDA4MDQwZmEwNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yCiAgICAgaWYgKGNvZGVCbG9jay0+c2hvdWxkVmlz
aXRTdHJvbmdseShsb2NrZXIpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNv
ZGVCbG9jayk7CiAgICAgCi0gICAgaWYgKCFIZWFwOjppc01hcmtlZChjb2RlQmxvY2spKQorICAg
IGlmICghdm0uaGVhcC5pc01hcmtlZChjb2RlQmxvY2spKQogICAgICAgICB2bS5leGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlc1dpdGhGaW5hbGl6ZXJzLmFkZChlZGdlKTsKICAgICAKICAgICBpZiAo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSkgewpAQCAtMTI1
LDggKzEyNSw4IEBAIHZvaWQgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoVk0mIHZtKQogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2Rl
QmxvY2suZ2V0KCk7CiAgICAgCi0gICAgaWYgKCFIZWFwOjppc01hcmtlZChjb2RlQmxvY2spKSB7
Ci0gICAgICAgIGlmIChjb2RlQmxvY2stPnNob3VsZEpldHRpc29uRHVlVG9XZWFrUmVmZXJlbmNl
KCkpCisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKGNvZGVCbG9jaykpIHsKKyAgICAgICAgaWYg
KGNvZGVCbG9jay0+c2hvdWxkSmV0dGlzb25EdWVUb1dlYWtSZWZlcmVuY2Uodm0pKQogICAgICAg
ICAgICAgY29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb1dlYWtSZWZl
cmVuY2UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2RlQmxvY2stPmpldHRpc29uKFBy
b2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT2xkQWdlKTsKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIEV4
ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OnJ1bkNvbnN0cmFpbnQoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiBsb2NrZXIsCiAgICAgY29kZUJsb2NrLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyhsb2Nr
ZXIsIHZpc2l0b3IpOwogICAgIGNvZGVCbG9jay0+ZGV0ZXJtaW5lTGl2ZW5lc3MobG9ja2VyLCB2
aXNpdG9yKTsKICAgICAKLSAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY29kZUJsb2NrKSkKKyAgICBp
ZiAodm0uaGVhcC5pc01hcmtlZChjb2RlQmxvY2spKQogICAgICAgICB2bS5leGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlc1dpdGhDb25zdHJhaW50cy5yZW1vdmUodGhpcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAppbmRleCA1NThi
YjI0MmFjYjU3N2JhODNmMTAyZDExYmU3ZDdhMjE5ODBhNjMxLi4yNmJjZDVmZjc2MzBiNTg1MThl
OGE5Mjk4NzIxMzBlMjhkMDAwN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC00NzYsMTUgKzQ3NiwxNSBAQCB2b2lkIEdldEJ5
SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICB2YXJp
YW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogfQogCi1ib29sIEdldEJ5SWRTdGF0dXM6OmZpbmFs
aXplKCkKK2Jvb2wgR2V0QnlJZFN0YXR1czo6ZmluYWxpemUoVk0mIHZtKQogewogICAgIGZvciAo
R2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7Ci0gICAgICAgIGlmICghdmFy
aWFudC5maW5hbGl6ZSgpKQorICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUodm0pKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VP
YmplY3QgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAgICBp
ZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QgJiYgIXZtLmhlYXAuaXNNYXJrZWQobV9tb2R1bGVO
YW1lc3BhY2VPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fbW9kdWxl
RW52aXJvbm1lbnQgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlRW52aXJvbm1lbnQpKQorICAg
IGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICF2bS5oZWFwLmlzTWFya2VkKG1fbW9kdWxlRW52
aXJvbm1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAppbmRleCAx
OWRkMDY3MzIzNTg3NDY5Yjk2YzhkYmRmZGVlM2UzZGJmNjJlNTE2Li40NzY3NWI3ODdkNDA1Njdh
YjZkYzEzNjk5ZmE2YjJkYzIwMGM2NWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBHZXRCeUlk
U3RhdHVzIHsKICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NvcGVPZmZzZXQ7IH0KICAgICAKICAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7
Ci0gICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2
ZS4KKyAgICBib29sIGZpbmFsaXplKFZNJik7IC8vIFJldHVybiB0cnVlIGlmIHRoaXMgZ2V0cyB0
byBsaXZlLgogICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAK
aW5kZXggZWUyNWU3ZmRiNTU4ODNjZTYwMTA4MzdhMGY5NTE4NDEzMjNjZDU1ZS4uZmMxZjQ2MGRl
OTY1NDFkOGZhMDk5Y2JiNDVmMjMwOWMyYTMzMzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCkBAIC0xNDksMTUgKzE0OSwxNSBA
QCB2b2lkIEdldEJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICBtX3N0cnVjdHVyZVNldC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKIH0KIAotYm9vbCBHZXRC
eUlkVmFyaWFudDo6ZmluYWxpemUoKQorYm9vbCBHZXRCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0m
IHZtKQogewotICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNTdGlsbEFsaXZlKCkpCisgICAgaWYg
KCFtX3N0cnVjdHVyZVNldC5pc1N0aWxsQWxpdmUodm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICBpZiAoIW1fY29u
ZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUoKSkKKyAg
ICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUodm0p
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1faW50cmluc2ljRnVuY3Rpb24gJiYg
IUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVuY3Rpb24pKQorICAgIGlmIChtX2ludHJpbnNp
Y0Z1bmN0aW9uICYmICF2bS5oZWFwLmlzTWFya2VkKG1faW50cmluc2ljRnVuY3Rpb24pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCmluZGV4IGJmYTMxMTI4YTVjZTg2
MGU5ZTYxZDY5MTA4OGE3YmRmOGU1MDAxODEuLjhkNmFmMDBkYzExZmVjODhhZTE4YjM4ZGI2ZWVi
ZDZiMWU1ZmFmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkVmFyaWFudC5oCkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIEdldEJ5SWRWYXJpYW50IHsKICAg
ICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAg
CiAgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwotICAgIGJvb2wgZmluYWxpemUo
KTsKKyAgICBib29sIGZpbmFsaXplKFZNJik7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENv
bnRleHQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbkJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJ
ZFN0YXR1cy5jcHAKaW5kZXggNjM5OWNlYzMyOGJlZmIxZWY1OWIxZWRjODcxNTFjY2Q4MDBjMDM0
Zi4uYjQ1ODhiNTg1MjU5M2Q5ZWE3MzBkNDFkMWFiOWMzNmUxNWZmMTQyYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAKQEAgLTI1OCwxMCAr
MjU4LDEwIEBAIHZvaWQgSW5CeUlkU3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKIH0KIAotYm9vbCBJ
bkJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK2Jvb2wgSW5CeUlkU3RhdHVzOjpmaW5hbGl6ZShWTSYg
dm0pCiB7CiAgICAgZm9yIChJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgewot
ICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgaWYgKCF2YXJpYW50LmZp
bmFsaXplKHZtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlk
U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmgK
aW5kZXggNTdhYjllZDY0ZTM5ZTkxY2QzMjU1Y2YwYzUxNDdkZTIxMzE4OWI4OC4uZjY4NmQyYzM1
ZjQyZTk2MDg2OGVlYmE5ZGIzOGQ1ZmQ5NWFlMDYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaApAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIElu
QnlJZFN0YXR1cyB7CiAgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0Jik7CiAgICAg
CiAgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwotICAgIGJvb2wgZmluYWxpemUo
KTsKKyAgICBib29sIGZpbmFsaXplKFZNJik7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZh
cmlhbnQuY3BwCmluZGV4IGUyZThmYTYxZGNkZDVlMGQ4NTA4YTMwNGI5NjdhNDY0N2MwMWIzMDMu
LjBiMzdmNTM3Njg1OTg1NDRkYTM4ZWU2NmFjOTc5ZDE1M2RiOTI2NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAKQEAgLTcyLDExICs3
MiwxMSBAQCB2b2lkIEluQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIG1fc3RydWN0dXJlU2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogfQogCi1ib29s
IEluQnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK2Jvb2wgSW5CeUlkVmFyaWFudDo6ZmluYWxpemUo
Vk0mIHZtKQogewotICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNTdGlsbEFsaXZlKCkpCisgICAg
aWYgKCFtX3N0cnVjdHVyZVNldC5pc1N0aWxsQWxpdmUodm0pKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICBpZiAoIW1f
Y29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbkJ5SWRWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5C
eUlkVmFyaWFudC5oCmluZGV4IGRkMjA5MTEyYjA2MjM3ODdiMzI0Mzc2ZmI4YTgzN2JiNWYyNWM1
ZWUuLjQyOWExZjU1YzFlZDc2MGQ4NDVmN2YxNDFhNmUxMjM2MDhlNzljY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuaApAQCAtNTcsNyArNTcs
NyBAQCBjbGFzcyBJbkJ5SWRWYXJpYW50IHsKICAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0
IEluQnlJZFZhcmlhbnQmIG90aGVyKTsKICAgICAKICAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJik7Ci0gICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIGJvb2wgZmluYWxpemUoVk0mKTsK
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29u
dGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uLmNw
cAppbmRleCAzYWFkMDk0MDkyZjE5OWIxZmFmZmI2YWIzMDE4YTJlYzc2MGNjOGE3Li5mM2UzYTdj
NjgyYjljZDYzM2M5M2U1MWI1N2FlYjdhYzg4MDhlYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5jcHAK
QEAgLTE0MiwxNSArMTQyLDE1IEBAIGJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmlzV2F0
Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpXYXRjaGFiaWxpdHlFZmZvcnQKICAgICByZXR1cm4g
aXNXYXRjaGFibGUobV9vYmplY3QtPnN0cnVjdHVyZSgpLCBlZmZvcnQpOwogfQogCi1ib29sIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsTGl2ZSgpIGNvbnN0Citib29sIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsTGl2ZShWTSYgdm0pIGNvbnN0CiB7CiAgICAgaWYgKCEq
dGhpcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlmICghSGVhcDo6aXNNYXJr
ZWQobV9vYmplY3QpKQorICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChtX29iamVjdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gbV9jb25kaXRpb24uaXNTdGlsbExp
dmUoKTsKKyAgICByZXR1cm4gbV9jb25kaXRpb24uaXNTdGlsbExpdmUodm0pOwogfQogCiB2b2lk
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjp2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tl
ZFJlZmVyZW5jZXMmIHRyYWNrZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oCmluZGV4IGQwMzMxYTA0
OTVkNjJhZTUyM2NmNGEzNDY4Mzk3YWNjMzVlMzJlOGMuLjY4OTM0ZGY1YTYzYmFlNjgzNjYyMjg5
NmMzNDUzYzEwM2NiYTE1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oCkBAIC0yNDQsNyArMjQ0LDcgQEAg
Y2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gewogICAgIH0KICAgICAKICAgICAvLyBUaGlz
IG1lYW5zIHRoYXQgdGhlIG9iamVjdHMgaW52b2x2ZWQgaW4gdGhpcyBhcmUgc3RpbGwgbGl2ZS4K
LSAgICBib29sIGlzU3RpbGxMaXZlKCkgY29uc3Q7CisgICAgYm9vbCBpc1N0aWxsTGl2ZShWTSYp
IGNvbnN0OwogICAgIAogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRS
ZWZlcmVuY2VzJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCmluZGV4IDJkMTk2
M2E0MjJlZTNjMzc2YjRmZDczYmNmNWVjMzY0Mjc2N2I1YjUuLjJjNjBkNmI4MmNkZDM2OWZiNzNm
NWI4OGI3YzI0M2VhMmM3OTMzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcApAQCAtMTQx
LDEwICsxNDEsMTAgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6bmVlZEltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjphcmVTdGlsbExpdmUoKSBjb25zdAorYm9vbCBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6YXJlU3RpbGxMaXZlKFZNJiB2bSkgY29uc3QKIHsK
ICAgICBmb3IgKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBjb25kaXRpb24gOiAqdGhp
cykgewotICAgICAgICBpZiAoIWNvbmRpdGlvbi5pc1N0aWxsTGl2ZSgpKQorICAgICAgICBpZiAo
IWNvbmRpdGlvbi5pc1N0aWxsTGl2ZSh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAppbmRleCA4ZTUzYTFi
MjdiNDcyM2IzMTRhY2MxNzA1NWM3OGQxNGFkMTkzMTc2Li4wNTQyOTBjNWNlZjJiM2M0Y2U2MDQ2
ZTk1N2E1YTUwOGJkNGI1ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaApAQCAtMTExLDcgKzEx
MSw3IEBAIGNsYXNzIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHsKICAgICBib29sIHN0cnVj
dHVyZXNFbnN1cmVWYWxpZGl0eUFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkgY29u
c3Q7CiAgICAgCiAgICAgYm9vbCBuZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkgY29uc3Q7
Ci0gICAgYm9vbCBhcmVTdGlsbExpdmUoKSBjb25zdDsKKyAgICBib29sIGFyZVN0aWxsTGl2ZShW
TSYpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1
bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcAppbmRleCBiNjgwODlkY2ZiMTY5N2YwMjA1MjY5ZDMwYTdjMGY5NWFmOTBkMjQ2Li5kYmMz
OTIzZWQ1OTA5ZjllYmExMjRjNDQ4NDUzNmMyMTZmYWFmNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTMyNCw3
ICszMjQsNyBAQCBib29sIFBvbHltb3JwaGljQWNjZXNzOjp2aXNpdFdlYWsoVk0mIHZtKSBjb25z
dAogICAgIH0KICAgICBpZiAoVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Piogd2Vha1JlZmVy
ZW5jZXMgPSBtX3dlYWtSZWZlcmVuY2VzLmdldCgpKSB7CiAgICAgICAgIGZvciAoV3JpdGVCYXJy
aWVyPEpTQ2VsbD4mIHdlYWtSZWZlcmVuY2UgOiAqd2Vha1JlZmVyZW5jZXMpIHsKLSAgICAgICAg
ICAgIGlmICghSGVhcDo6aXNNYXJrZWQod2Vha1JlZmVyZW5jZS5nZXQoKSkpCisgICAgICAgICAg
ICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQod2Vha1JlZmVyZW5jZS5nZXQoKSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKaW5kZXggOGIxYTRj
YzQ2ODFmZmRkYjA1NzNiMWZjOTk5MjU5MmM2MmZiN2E0MC4uYTMyOTZhZDNiMDEzZjZjNDcyZjU0
M2MyYjRmNTExZDU3YTVjZWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCkBAIC0zNTIsMTUgKzM1MiwxNSBAQCBib29s
IFByb3BlcnR5Q29uZGl0aW9uOjppc1dhdGNoYWJsZSgKICAgICAgICAgJiYgaXNXYXRjaGFibGVX
aGVuVmFsaWQoc3RydWN0dXJlLCBlZmZvcnQpOwogfQogCi1ib29sIFByb3BlcnR5Q29uZGl0aW9u
Ojppc1N0aWxsTGl2ZSgpIGNvbnN0Citib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsTGl2
ZShWTSYgdm0pIGNvbnN0CiB7Ci0gICAgaWYgKGhhc1Byb3RvdHlwZSgpICYmIHByb3RvdHlwZSgp
ICYmICFIZWFwOjppc01hcmtlZChwcm90b3R5cGUoKSkpCisgICAgaWYgKGhhc1Byb3RvdHlwZSgp
ICYmIHByb3RvdHlwZSgpICYmICF2bS5oZWFwLmlzTWFya2VkKHByb3RvdHlwZSgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChoYXNSZXF1aXJlZFZhbHVlKCkKICAgICAg
ICAgJiYgcmVxdWlyZWRWYWx1ZSgpCiAgICAgICAgICYmIHJlcXVpcmVkVmFsdWUoKS5pc0NlbGwo
KQotICAgICAgICAmJiAhSGVhcDo6aXNNYXJrZWQocmVxdWlyZWRWYWx1ZSgpLmFzQ2VsbCgpKSkK
KyAgICAgICAgJiYgIXZtLmhlYXAuaXNNYXJrZWQocmVxdWlyZWRWYWx1ZSgpLmFzQ2VsbCgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAppbmRleCA4
YWNiMTE5MDE4NThkZmM2NDkzZGY3NzA4OTUzZmFiYTI0YWQzMDdlLi5kYjU5ZGUzY2VlNGIyMTIy
NjdhMWQwYWQ3YWM1N2VlMTRkNGZmMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaApAQCAtMjk3LDcgKzI5Nyw3IEBAIGNsYXNz
IFByb3BlcnR5Q29uZGl0aW9uIHsKICAgICB9CiAgICAgCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0
IHRoZSBvYmplY3RzIGludm9sdmVkIGluIHRoaXMgYXJlIHN0aWxsIGxpdmUuCi0gICAgYm9vbCBp
c1N0aWxsTGl2ZSgpIGNvbnN0OworICAgIGJvb2wgaXNTdGlsbExpdmUoVk0mKSBjb25zdDsKICAg
ICAKICAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAKaW5kZXggNGRiOGJkMTA0ZjkzYzZiZGE3ZTBmNmYwMDRkNDA0YmJhY2E3MWNiYi4u
YzJkOTUzMjBjZWJkNTZkYmRjOTNlZWJkNmMzMTQwYTdkZjdjYzIwOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtMzg2LDEwICsz
ODYsMTAgQEAgdm9pZCBQdXRCeUlkU3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKIH0KIAotYm9vbCBQ
dXRCeUlkU3RhdHVzOjpmaW5hbGl6ZSgpCitib29sIFB1dEJ5SWRTdGF0dXM6OmZpbmFsaXplKFZN
JiB2bSkKIHsKICAgICBmb3IgKFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykg
ewotICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgaWYgKCF2YXJpYW50
LmZpbmFsaXplKHZtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuaAppbmRleCA0YzQ1Nzg1MDUwNWI2NzI1YzAwN2E2OTNiMTc2YmJhZDIwMTZjNDVmLi4xOWI5
NzhhMGFjYWUwMjY1OTM5YTBkNjdlYzI2NjM1YjU1NzZhZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBj
bGFzcyBQdXRCeUlkU3RhdHVzIHsKICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgb3BlcmF0b3Jb
XShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogICAgIAogICAgIHZv
aWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKLSAgICBib29sIGZpbmFsaXplKCk7CisgICAg
Ym9vbCBmaW5hbGl6ZShWTSYpOwogICAgIAogICAgIHZvaWQgbWVyZ2UoY29uc3QgUHV0QnlJZFN0
YXR1cyYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkVmFyaWFudC5jcHAKaW5kZXggODhkZWUwNzdiMzdmMjJkMmQ0MWFkNzY0MWVmZWFiYWE2MTJj
M2JjYy4uNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0NzVhMTE1YjJkZjZmM2M1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCkBAIC0y
NzAsMTUgKzI3MCwxNSBAQCB2b2lkIFB1dEJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICAgICAgbV9uZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0
b3IpOwogfQogCi1ib29sIFB1dEJ5SWRWYXJpYW50OjpmaW5hbGl6ZSgpCitib29sIFB1dEJ5SWRW
YXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCiB7Ci0gICAgaWYgKCFtX29sZFN0cnVjdHVyZS5pc1N0
aWxsQWxpdmUoKSkKKyAgICBpZiAoIW1fb2xkU3RydWN0dXJlLmlzU3RpbGxBbGl2ZSh2bSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIUhlYXA6Omlz
TWFya2VkKG1fbmV3U3RydWN0dXJlKSkKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIXZtLmhl
YXAuaXNNYXJrZWQobV9uZXdTdHJ1Y3R1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICBpZiAoIW1fY29uZGl0aW9u
U2V0LmFyZVN0aWxsTGl2ZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9j
YWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUoKSkKKyAgICBpZiAo
bV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUodm0pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCmluZGV4IDM2MzZjOGNkYzcxN2Jk
MTFiZGYyNjUxOWEzZDNlY2JlYjMyY2M4MTMuLmNhYWRkMzI0YjA3NTFjMDNjZTA3YzU5NDJjN2My
MGJlMTRhZjMyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkVmFyaWFudC5oCkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgUHV0QnlJZFZhcmlhbnQgewog
ICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgUHV0QnlJZFZhcmlhbnQmIG90aGVyKTsKICAg
ICAKICAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7Ci0gICAgYm9vbCBmaW5hbGl6
ZSgpOworICAgIGJvb2wgZmluYWxpemUoVk0mKTsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1w
Q29udGV4dCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDNkN2UxM2VlYTMzMTI0MzZiOTU3NWFkNjhkZDg3
ZmRlYTRmZjBlOTIuLjk2ZDIyZWNmYTBhNGM3NTZlZGZmNjFmMDAxM2Y3MjU4ZTdkM2ZiZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNl
cy5jcHAKQEAgLTg1LDI4ICs4NSwyOCBAQCB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNo
ZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJ
ZkNoZWFwKHNsb3RWaXNpdG9yKTsKIH0KIAotdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6
ZVdpdGhvdXREZWxldGluZygpCit2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91
dERlbGV0aW5nKFZNJiB2bSkKIHsKICAgICAvLyBUaGlzIHZhcmlhbnQgb2YgZmluYWxpemUgZ2V0
cyBjYWxsZWQgZnJvbSB3aXRoaW4gZ3JhcGggc2FmZXBvaW50cyAtLSBzbyB0aGVyZSBtYXkgYmUg
REZHIElSIGluCiAgICAgLy8gc29tZSBjb21waWxlciB0aHJlYWQgdGhhdCBwb2ludHMgdG8gdGhl
IHN0YXR1c2VzLiBUaGF0IHRocmVhZCBpcyBzdG9wcGVkIGF0IGEgc2FmZXBvaW50IHNvCiAgICAg
Ly8gaXQncyBPSyB0byBlZGl0IGl0cyBkYXRhIHN0cnVjdHVyZSwgYnV0IGl0J3Mgbm90IE9LIHRv
IGRlbGV0ZSB0aGVtLiBIZW5jZSB3ZSBkb24ndCByZW1vdmUKICAgICAvLyBhbnl0aGluZyBmcm9t
IHRoZSB2ZWN0b3Igb3IgZGVsZXRlIHRoZSB1bmlxdWVfcHRycy4KICAgICAKLSAgICBhdXRvIGZp
bmFsaXplID0gW10gKGF1dG8mIHZlY3RvcikgeworICAgIGF1dG8gZmluYWxpemUgPSBbJl0gKGF1
dG8mIHZlY3RvcikgewogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiB2ZWN0b3IpIHsKLSAgICAg
ICAgICAgIGlmICghcGFpci5zZWNvbmQtPmZpbmFsaXplKCkpCisgICAgICAgICAgICBpZiAoIXBh
aXIuc2Vjb25kLT5maW5hbGl6ZSh2bSkpCiAgICAgICAgICAgICAgICAgKnBhaXIuc2Vjb25kID0g
eyB9OwogICAgICAgICB9CiAgICAgfTsKICAgICBmb3JFYWNoVmVjdG9yKGZpbmFsaXplKTsKIH0K
IAotdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZSgpCit2b2lkIFJlY29yZGVkU3RhdHVz
ZXM6OmZpbmFsaXplKFZNJiB2bSkKIHsKLSAgICBhdXRvIGZpbmFsaXplID0gW10gKGF1dG8mIHZl
Y3RvcikgeworICAgIGF1dG8gZmluYWxpemUgPSBbJl0gKGF1dG8mIHZlY3RvcikgewogICAgICAg
ICB2ZWN0b3IucmVtb3ZlQWxsTWF0Y2hpbmcoCiAgICAgICAgICAgICBbJl0gKGF1dG8mIHBhaXIp
IC0+IGJvb2wgewotICAgICAgICAgICAgICAgIHJldHVybiAhKnBhaXIuc2Vjb25kIHx8ICFwYWly
LnNlY29uZC0+ZmluYWxpemUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gISpwYWlyLnNlY29u
ZCB8fCAhcGFpci5zZWNvbmQtPmZpbmFsaXplKHZtKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB2ZWN0b3Iuc2hyaW5rVG9GaXQoKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKaW5kZXggZmMwM2JkMmNiNDM2NTgyMmEy
ZmI2NzhlMDQ2OTVhYjdmY2ViZmU1NS4uYTAzYjRmNjgyZWE4ODBlNjA0NWZmODFkNjMyNTMyZTQ1
NjI5NDI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5oCkBAIC01MCw4ICs1MCw4IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsK
ICAgICAKICAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcik7CiAg
ICAgCi0gICAgdm9pZCBmaW5hbGl6ZVdpdGhvdXREZWxldGluZygpOwotICAgIHZvaWQgZmluYWxp
emUoKTsKKyAgICB2b2lkIGZpbmFsaXplV2l0aG91dERlbGV0aW5nKFZNJik7CisgICAgdm9pZCBm
aW5hbGl6ZShWTSYpOwogICAgIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKaW5kZXggMjBl
NjE2ZmRmMGJiNzA3N2Y0NjI5MzFhMWY5NTRiN2VhY2U5MGJkMi4uOTI4YjgyYzVlNGEyODFiNDQ3
NWIzZGI5NTIyMjJlYmQ0YzRmODJlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKQEAgLTM3LDEwICszNywxMCBAQCB2b2lkIFN0cnVjdHVy
ZVNldDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAgICAgICAgIHN0
cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiB9CiAKLWJvb2wgU3RydWN0dXJlU2V0Ojpp
c1N0aWxsQWxpdmUoKSBjb25zdAorYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2ZShWTSYg
dm0pIGNvbnN0CiB7CiAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKSB7Ci0g
ICAgICAgIGlmICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgaWYgKCF2bS5o
ZWFwLmlzTWFya2VkKHN0cnVjdHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVNldC5oCmluZGV4IDM5YThmMDI4MjViZjUyNjBhYjQ4NzQyZTBkNjgyYTk5M2M4YzM5
ZTYuLjlmOGYxMDQ5MDg4MGNlMzAxNjNmODIwNDQxYjg2YTk1OTgxMWRlNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKQEAgLTU1LDcgKzU1LDcg
QEAgY2xhc3MgU3RydWN0dXJlU2V0IDogcHVibGljIFRpbnlQdHJTZXQ8U3RydWN0dXJlKj4gewog
ICAgIH0KIAogICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsKLSAgICBi
b29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OworICAgIGJvb2wgaXNTdGlsbEFsaXZlKFZNJikgY29u
c3Q7CiAgICAgCiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRl
eHQqKSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmlu
ZGV4IDM1NGNjZjQ2MDRiNDk5YmVmODMwMTZhNzRmNjNlZjM3YzIyZGZkMGIuLjc3ZjJjMmE1ZTAz
YjdmYzBkNDFiNGJiNmZhYzYxMTQzZDNhYmI0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjcyLDE0ICsyNzIs
MTQgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6dmlzaXRXZWFrUmVmZXJlbmNlcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICAgICAKICAgICBidWZmZXJlZFN0cnVjdHVyZXMuZ2VuZXJpY0ZpbHRl
cigKICAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICByZXR1cm4gSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVy
biB2bS5oZWFwLmlzTWFya2VkKHN0cnVjdHVyZSk7CiAgICAgICAgIH0pOwogCiAgICAgc3dpdGNo
IChjYWNoZVR5cGUpIHsKICAgICBjYXNlIENhY2hlVHlwZTo6R2V0QnlJZFNlbGY6CiAgICAgY2Fz
ZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgogICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRT
ZWxmOgotICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQodS5ieUlkU2VsZi5iYXNlT2JqZWN0U3Ry
dWN0dXJlLmdldCgpKSkKKyAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQodS5ieUlkU2VsZi5i
YXNlT2JqZWN0U3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcAppbmRleCA5NGNhZWZiNTNhN2JiMTFiMDU2YmZlMTcyYThhNTRmNDZlNzA3MDgz
Li45MDBhNjFmOTE1MTkxOThkMjQ1ODE0NDEyNjk5MDZhMjA1MTZlMTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTY2NCwxOCArNjY0LDE5IEBAIHZvaWQgUGxhbjo6
Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIHZv
aWQgUGxhbjo6ZmluYWxpemVJbkdDKCkKIHsKLSAgICBtX3JlY29yZGVkU3RhdHVzZXMuZmluYWxp
emVXaXRob3V0RGVsZXRpbmcoKTsKKyAgICBBU1NFUlQobV92bSk7CisgICAgbV9yZWNvcmRlZFN0
YXR1c2VzLmZpbmFsaXplV2l0aG91dERlbGV0aW5nKCptX3ZtKTsKIH0KIAogYm9vbCBQbGFuOjpp
c0tub3duVG9CZUxpdmVEdXJpbmdHQygpCiB7CiAgICAgaWYgKG1fc3RhZ2UgPT0gQ2FuY2VsbGVk
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFIZWFwOjppc01hcmtlZChtX2NvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCkpKQorICAgIGlmICghbV92bS0+aGVhcC5pc01hcmtlZCht
X2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFIZWFwOjppc01hcmtlZChtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkpCisgICAg
aWYgKCFtX3ZtLT5oZWFwLmlzTWFya2VkKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghIW1fcHJvZmlsZWRERkdDb2RlQmxvY2sgJiYg
IUhlYXA6OmlzTWFya2VkKG1fcHJvZmlsZWRERkdDb2RlQmxvY2spKQorICAgIGlmICghIW1fcHJv
ZmlsZWRERkdDb2RlQmxvY2sgJiYgIW1fdm0tPmhlYXAuaXNNYXJrZWQobV9wcm9maWxlZERGR0Nv
ZGVCbG9jaykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZC5oCmlu
ZGV4IDFkMzM2YmZhZDcxZDlkYTA5ZWFkMzA3YjdiZDUzMTFjNDFmNjNlNDcuLjBmZTZiOGE4YmRh
ZTlhMTUzMjYyN2YyMzA4NGE5YzVjOTM3ODU2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVkLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWQuaApAQCAtODIsNyArODIsNyBAQCBjbGFz
cyBHQ0luY29taW5nUmVmQ291bnRlZCA6IHB1YmxpYyBEZWZlcnJhYmxlUmVmQ291bnRlZDxUPiB7
CiAgICAgLy8gdG8gdXNlIHRoaXMgd2l0aCBhIGZpbHRlciBmdW5jdGlvbiB0aGF0IGNhbiByZXR1
cm4gZmFsc2UgdW5sZXNzCiAgICAgLy8geW91J3JlIGFsc28gd2Fsa2luZyB0aGUgR0MncyBsaXN0
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlckZ1bmN0aW9uVHlwZT4KLSAgICBib29sIGZp
bHRlckluY29taW5nUmVmZXJlbmNlcyhGaWx0ZXJGdW5jdGlvblR5cGUmKTsKKyAgICBib29sIGZp
bHRlckluY29taW5nUmVmZXJlbmNlcyhGaWx0ZXJGdW5jdGlvblR5cGUmJik7CiAgICAgCiBwcml2
YXRlOgogICAgIHN0YXRpYyB1aW50cHRyX3Qgc2luZ2xldG9uRmxhZygpIHsgcmV0dXJuIDE7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3Vu
dGVkSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NJbmNvbWluZ1JlZkNv
dW50ZWRJbmxpbmVzLmgKaW5kZXggYTFhOTFlMjAzOTZjMzgyZWIxNWNmOTk1OGMxZmI4YjY3Yzk0
ZTkyOC4uMzVkNDE5OWI2MTI1NGE1MWY0Yzc3ZWU2MzUxMDdmMWY1ZGYxYzhiYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRJ
bmxpbmVzLmgKQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBHQ0luY29taW5nUmVmQ291bnRlZDxUPjo6
YWRkSW5jb21pbmdSZWZlcmVuY2UoSlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyRnVuY3Rpb25UeXBlPgotYm9vbCBHQ0luY29taW5n
UmVmQ291bnRlZDxUPjo6ZmlsdGVySW5jb21pbmdSZWZlcmVuY2VzKEZpbHRlckZ1bmN0aW9uVHlw
ZSYgZmlsdGVyRnVuY3Rpb24pCitib29sIEdDSW5jb21pbmdSZWZDb3VudGVkPFQ+OjpmaWx0ZXJJ
bmNvbWluZ1JlZmVyZW5jZXMoRmlsdGVyRnVuY3Rpb25UeXBlJiYgZmlsdGVyRnVuY3Rpb24pCiB7
CiAgICAgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaAppbmRleCAwYjQz
NTE5NWNhNWFhYzJkOGZjOWViYjU4OGU2N2M1NDkyYTFjOGU5Li5jNzNhODk3YzRiZmM3YjVlZWUy
NDBlM2JiNTA1NDQzMGY1ZDE1NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0luY29taW5nUmVmQ291bnRlZFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVkU2V0LmgKQEAgLTQxLDE0ICs0MSwxMSBAQCBjbGFz
cyBHQ0luY29taW5nUmVmQ291bnRlZFNldCB7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBu
YXRpdmUgb2JqZWN0IGlzIG5ldyB0byB0aGlzIHNldC4KICAgICBib29sIGFkZFJlZmVyZW5jZShK
U0NlbGwqLCBUKik7CiAgICAgCi0gICAgdm9pZCBzd2VlcCgpOworICAgIHZvaWQgc3dlZXAoVk0m
KTsKICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXM7IH07CiAg
ICAgCiBwcml2YXRlOgotICAgIHN0YXRpYyBib29sIHJlbW92ZUFsbChKU0NlbGwqKTsKLSAgICBz
dGF0aWMgYm9vbCByZW1vdmVEZWFkKEpTQ2VsbCopOwotICAgIAogICAgIFZlY3RvcjxUKj4gbV92
ZWN0b3I7CiAgICAgc2l6ZV90IG1fYnl0ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaAppbmRl
eCBiMTA5NzJkYTBhNDhiZDExZTVhYzFmMmNhZjczZDJmY2VlNGFjMWQ4Li4zM2VmNGQwNThmOTkw
NDc2MmQzMTIxOTc2M2U4YjE1MWExMTM2YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaApAQCAt
NDAsNyArNDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBHQ0luY29taW5nUmVmQ291
bnRlZFNldDxUPjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewogICAgIGZvciAoc2l6ZV90IGkg
PSBtX3ZlY3Rvci5zaXplKCk7IGktLTspCi0gICAgICAgIG1fdmVjdG9yW2ldLT5maWx0ZXJJbmNv
bWluZ1JlZmVyZW5jZXMocmVtb3ZlQWxsKTsKKyAgICAgICAgbV92ZWN0b3JbaV0tPmZpbHRlcklu
Y29taW5nUmVmZXJlbmNlcyhbXSAoSlNDZWxsKikgeyByZXR1cm4gZmFsc2U7IH0pOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNTksMTQgKzU5LDE0IEBAIGJvb2wgR0NJbmNvbWluZ1Jl
ZkNvdW50ZWRTZXQ8VD46OmFkZFJlZmVyZW5jZShKU0NlbGwqIGNlbGwsIFQqIG9iamVjdCkKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8VD46
OnN3ZWVwKCkKK3ZvaWQgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8VD46OnN3ZWVwKFZNJiB2bSkK
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmVjdG9yLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIFQqIG9iamVjdCA9IG1fdmVjdG9yW2ldOwogICAgICAgICBzaXplX3Qgc2l6ZSA9IG9i
amVjdC0+Z2NTaXplRXN0aW1hdGVJbkJ5dGVzKCk7CiAgICAgICAgIEFTU0VSVChvYmplY3QtPmlz
RGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VSVChvYmplY3QtPm51bWJlck9mSW5jb21pbmdSZWZl
cmVuY2VzKCkpOwotICAgICAgICBpZiAoIW9iamVjdC0+ZmlsdGVySW5jb21pbmdSZWZlcmVuY2Vz
KHJlbW92ZURlYWQpKQorICAgICAgICBpZiAoIW9iamVjdC0+ZmlsdGVySW5jb21pbmdSZWZlcmVu
Y2VzKFsmXSAoSlNDZWxsKiBjZWxsKSB7IHJldHVybiB2bS5oZWFwLmlzTWFya2VkKGNlbGwpOyB9
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBtX2J5dGVzIC09IHNpemU7CiAgICAg
ICAgIG1fdmVjdG9yW2ktLV0gPSBtX3ZlY3Rvci5sYXN0KCk7CkBAIC03NCwxNiArNzQsNCBAQCB2
b2lkIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0PFQ+Ojpzd2VlcCgpCiAgICAgfQogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBHQ0luY29taW5nUmVmQ291bnRlZFNldDxUPjo6cmVtb3Zl
QWxsKEpTQ2VsbCopCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotYm9vbCBHQ0luY29taW5nUmVmQ291bnRlZFNldDxUPjo6cmVtb3ZlRGVhZChKU0NlbGwq
IGNlbGwpCi17Ci0gICAgcmV0dXJuIEhlYXA6OmlzTWFya2VkKGNlbGwpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggN2ZkYjcyYWM1
MzJmYjQ1NjYzZGQwNzhjYzQxNGUxYWVlMzk1YmRkNy4uOWRkZDEzNzVmNjZmNDFiNjIxNjRlMTBm
YzNkOGZmYjAwZDlkYWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTEw
MTAsNyArMTAxMCw3IEBAIHZvaWQgSGVhcDo6YWRkVG9SZW1lbWJlcmVkU2V0KGNvbnN0IEpTQ2Vs
bCogY29uc3RDZWxsKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNl
Ci0gICAgICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7CisgICAgICAgIEFTU0VSVChp
c01hcmtlZChjZWxsKSk7CiAgICAgLy8gSXQgY291bGQgYmUgdGhhdCB0aGUgb2JqZWN0IHdhcyAq
anVzdCogbWFya2VkLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNvbGxlY3RvciBtYXkgc2V0IHRoZQog
ICAgIC8vIHN0YXRlIHRvIERlZmluaXRlbHlHcmV5IGFuZCB0aGVuIHRvIFBvc3NpYmx5T2xkT3JC
bGFjayBhdCBhbnkgdGltZS4gSXQncyBPSyBmb3IgdXMgdG8KICAgICAvLyByYWNlIHdpdGggdGhl
IGNvbGxlY3RvciBoZXJlLiBJZiB3ZSB3aW4gdGhlbiB0aGlzIGlzIGFjY3VyYXRlIGJlY2F1c2Ug
dGhlIG9iamVjdCBfd2lsbF8KQEAgLTE0OTQsNyArMTQ5NCw3IEBAIE5FVkVSX0lOTElORSBib29s
IEhlYXA6OnJ1bkVuZFBoYXNlKEdDQ29uZHVjdG9yIGNvbm4pCiAgICAgfQogICAgICAgICAKICAg
ICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpCi0gICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigp
LT5pbnZhbGlkYXRlVHlwZVNldENhY2hlKCk7CisgICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigp
LT5pbnZhbGlkYXRlVHlwZVNldENhY2hlKCp2bSgpKTsKIAogICAgIHJlYXBXZWFrSGFuZGxlcygp
OwogICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKQEAgLTIyMTIsNyArMjIx
Miw3IEBAIHZvaWQgSGVhcDo6cHJ1bmVTdGFsZUVudHJpZXNGcm9tV2Vha0dDTWFwcygpCiAKIHZv
aWQgSGVhcDo6c3dlZXBBcnJheUJ1ZmZlcnMoKQogewotICAgIG1fYXJyYXlCdWZmZXJzLnN3ZWVw
KCk7CisgICAgbV9hcnJheUJ1ZmZlcnMuc3dlZXAoKnZtKCkpOwogfQogCiB2b2lkIEhlYXA6OnNu
YXBzaG90VW5zd2VwdCgpCkBAIC0yODMzLDcgKzI4MzMsNyBAQCB2b2lkIEhlYXA6OmFkZENvcmVD
b25zdHJhaW50cygpCiAgICAgICAgICAgICBpdGVyYXRlRXhlY3V0aW5nQW5kQ29tcGlsaW5nQ29k
ZUJsb2Nrc1dpdGhvdXRIb2xkaW5nTG9ja3MoCiAgICAgICAgICAgICAgICAgWyZdIChDb2RlQmxv
Y2sqIGNvZGVCbG9jaykgewogICAgICAgICAgICAgICAgICAgICAvLyBWaXNpdCB0aGUgQ29kZUJs
b2NrIGFzIGEgY29uc3RyYWludCBvbmx5IGlmIGl0J3MgYmxhY2suCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChIZWFwOjppc01hcmtlZChjb2RlQmxvY2spCisgICAgICAgICAgICAgICAgICAgIGlm
IChpc01hcmtlZChjb2RlQmxvY2spCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjb2RlQmxv
Y2stPmNlbGxTdGF0ZSgpID09IENlbGxTdGF0ZTo6UG9zc2libHlCbGFjaykKICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3RWaXNpdG9yLnZpc2l0QXNDb25zdHJhaW50KGNvZGVCbG9jayk7CiAg
ICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggODZhZGU2
ZWYwNzY3ODVmY2JhOTIyOWQxMDUzZGVkZTkwNjBkODYyNS4uMzhmNTMyMWFkOWQ3N2MzODViNWVi
MmY5Y2E5NTEyODc5ODMwYTdhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMTIz
LDcgKzEyMyw3IEBAIGNsYXNzIEhlYXAgewogICAgIC8vIG91ciBzY2FuIHRvIHJ1biBmYXN0ZXIu
IAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3RpbWVDaGVja1Jlc29sdXRpb24gPSAxNjsK
IAotICAgIHN0YXRpYyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFy
a2VkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKEhlYXBW
ZXJzaW9uLCBjb25zdCB2b2lkKik7CiAgICAgCiAgICAgc3RhdGljIHNpemVfdCBjZWxsU2l6ZShj
b25zdCB2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRl
eCBmNWIwZDQ5ZTI2NDZlYjc5OWZkNTk2YmY4MjhjY2E5N2RlMmVjZjZhLi5mOGQzYzEyM2IxYjU2
NGUzNmY4ZjRhMTg3YWE3NzI3YmYzMTdhMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBJbmxpbmVzLmgKQEAgLTY4LDE1ICs2OCwxMyBAQCBpbmxpbmUgYm9vbCBIZWFwOjp3b3Js
ZElzU3RvcHBlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd29ybGRJc1N0b3BwZWQ7CiB9CiAKLS8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBpbnN0YW5jZSBtZXRob2QsIHNvIHRoYXQgaXQgY2Fu
IGdldCB0aGUgbWFya2luZ1ZlcnNpb24oKSBxdWlja2x5LgotLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTk4OAogQUxXQVlTX0lOTElORSBib29sIEhlYXA6Omlz
TWFya2VkKGNvbnN0IHZvaWQqIHJhd0NlbGwpCiB7CiAgICAgSGVhcENlbGwqIGNlbGwgPSBiaXR3
aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxsKTsKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9j
YXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNlbGwtPmxhcmdlQWxsb2NhdGlvbigpLmlzTWFya2Vk
KCk7CiAgICAgTWFya2VkQmxvY2smIGJsb2NrID0gY2VsbC0+bWFya2VkQmxvY2soKTsKLSAgICBy
ZXR1cm4gYmxvY2suaXNNYXJrZWQoYmxvY2sudm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtp
bmdWZXJzaW9uKCksIGNlbGwpOworICAgIHJldHVybiBibG9jay5pc01hcmtlZChtX29iamVjdFNw
YWNlLm1hcmtpbmdWZXJzaW9uKCksIGNlbGwpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSGVh
cDo6dGVzdEFuZFNldE1hcmtlZChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9p
ZCogcmF3Q2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBz
aG90QnVpbGRlci5jcHAKaW5kZXggYTU4MWJiNTUxZDQ5NjNjMjk4MDE1MWZkYTdmYTgzMWZlY2I1
NjIzNC4uNWI5YWM4OWRhYmYwNGEwNjE0ZGMxMGZiYmFmMTZjMGY0YTQ5OWY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAg
LTgwLDcgKzgwLDcgQEAgdm9pZCBIZWFwU25hcHNob3RCdWlsZGVyOjphcHBlbmROb2RlKEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBBU1NFUlQobV9wcm9maWxlci5hY3RpdmVTbmFwc2hvdEJ1aWxkZXIo
KSA9PSB0aGlzKTsKIAotICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7CisgICAgQVNT
RVJUKG1fcHJvZmlsZXIudm0oKS5oZWFwLmlzTWFya2VkKGNlbGwpKTsKIAogICAgIE5vZGVJZGVu
dGlmaWVyIGlkZW50aWZpZXI7CiAgICAgaWYgKHByZXZpb3VzU25hcHNob3RIYXNOb2RlRm9yQ2Vs
bChjZWxsLCBpZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmNwcAppbmRleCAyYjAzZDBhMzVlODMwMDFmMWFhM2NjM2IyNzZiZTQwZGRhMzU3MzA2Li42
YWM0NjdhMzAxMmM0NmFhNzViM2ZiOTcyMjZiOTFmZjc0YWU3OGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBT
bG90VmlzaXRvcjo6YXBwZW5kVG9NYXJrU3RhY2soSlNDZWxsKiBjZWxsKQogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29udGFpbmVyVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6YXBw
ZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBKU0NlbGwqIGNlbGwpCiB7
Ci0gICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKKyAgICBBU1NFUlQobV9oZWFwLmlz
TWFya2VkKGNlbGwpKTsKICAgICBBU1NFUlQoIWNlbGwtPmlzWmFwcGVkKCkpOwogICAgIAogICAg
IGNvbnRhaW5lci5ub3RlTWFya2VkKCk7CkBAIC0zNTQsNyArMzU0LDcgQEAgY2xhc3MgU2V0Q3Vy
cmVudENlbGxTY29wZSB7CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6dmlzaXRD
aGlsZHJlbihjb25zdCBKU0NlbGwqIGNlbGwpCiB7Ci0gICAgQVNTRVJUKEhlYXA6OmlzTWFya2Vk
KGNlbGwpKTsKKyAgICBBU1NFUlQobV9oZWFwLmlzTWFya2VkKGNlbGwpKTsKICAgICAKICAgICBT
ZXRDdXJyZW50Q2VsbFNjb3BlIGN1cnJlbnRDZWxsU2NvcGUoKnRoaXMsIGNlbGwpOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcAppbmRleCBmMDM3YzczY2I3NmIyYTNmMGM2MmQ1MzJhNmNkOGY3YWI5ZmJi
Njg5Li43Y2Y3NGIxNjRkM2NiYjA2NDI4YTczNDMyY2U3NzQyNDVkNmUxOGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmNwcApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdm9pZCBQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZTo6Y2xlYXJDYWxsTm9kZXNGb3IoQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgIH0KIH0KIAot
Ym9vbCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6dmlzaXRXZWFrKFZNJikKK2Jvb2wgUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OnZpc2l0V2VhayhWTSYgdm0pCiB7CiAgICAgZm9yIChh
dXRvJiB2YXJpYW50IDogbV92YXJpYW50cykgewotICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2Vk
KHZhcmlhbnQuZ2V0KCkpKQorICAgICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQodmFyaWFudC5n
ZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApp
bmRleCA3YjA5ZTBhYzMwMjA2NWIwYTY1MGU2NGRjMmRiZGRmNDI3MzJiMjEzLi4yZGExMjFiODQ2
ZTZjODk0ZGMyNTdmMDIyMjc0YjY0NjZhN2Q3ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQg
RXJyb3JJbnN0YW5jZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQogICAgIC8vIElm
IHdlIGRpZCwgd2UgbWlnaHQgZW5kIHVwIGtlZXBpbmcgZnVuY3Rpb25zIChhbmQgdGhlaXIgZ2xv
YmFsIG9iamVjdHMpIGFsaXZlIHRoYXQgaGFwcGVuZWQgdG8KICAgICAvLyBnZXQgY2F1Z2h0IGlu
IGEgdHJhY2UuCiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFtZSA6ICptX3N0YWNrVHJhY2UuZ2V0
KCkpIHsKLSAgICAgICAgaWYgKCFmcmFtZS5pc01hcmtlZCgpKSB7CisgICAgICAgIGlmICghZnJh
bWUuaXNNYXJrZWQodm0pKSB7CiAgICAgICAgICAgICBjb21wdXRlRXJyb3JJbmZvKHZtKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luZmVycmVkVmFsdWVJbmxpbmVzLmgKaW5kZXggOTUxMTRlNDRlYjZhYTYx
N2FmMjBkM2M1MjkzNjBjMjQ4N2RmYjg4Ni4uYzE0MzY4N2U1ZGRiMTM0YjgyYWVmZjkwNGQyZDA4
MTUyOGEzMTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5m
ZXJyZWRWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bmZlcnJlZFZhbHVlSW5saW5lcy5oCkBAIC0zNCw3ICszNCw3IEBAIHZvaWQgSW5mZXJyZWRWYWx1
ZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQogICAgIEpTVmFsdWUgdmFsdWUgPSBt
X3ZhbHVlLmdldCgpOwogICAgIAogICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewot
ICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQodmFsdWUuYXNDZWxsKCkpKQorICAgICAgICBpZiAo
dm0uaGVhcC5pc01hcmtlZCh2YWx1ZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgICAgICBpbnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJJbmZlcnJl
ZFZhbHVlIGNsZWFuLXVwIGR1cmluZyBHQyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0YWNrRnJhbWUuaAppbmRleCA1ZWVkZWU2ZjgxODZkYWVhMzA0MDk4MTNkNDUzNDZhYzA3
NWVmZDgwLi41ZGFhMTU3NzZkNDE1ZDhmY2RlYmViNjMzYjEyYWFiYWIwNGI2Y2I0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5oCkBAIC01OCw3ICs1OCw3IEBA
IGNsYXNzIFN0YWNrRnJhbWUgewogICAgIH0KICAgICAKICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImKTsKLSAgICBib29sIGlzTWFya2VkKCkgY29uc3QgeyByZXR1cm4gKCFtX2Nh
bGxlZSB8fCBIZWFwOjppc01hcmtlZChtX2NhbGxlZS5nZXQoKSkpICYmICghbV9jb2RlQmxvY2sg
fHwgSGVhcDo6aXNNYXJrZWQobV9jb2RlQmxvY2suZ2V0KCkpKTsgfQorICAgIGJvb2wgaXNNYXJr
ZWQoVk0mIHZtKSBjb25zdCB7IHJldHVybiAoIW1fY2FsbGVlIHx8IHZtLmhlYXAuaXNNYXJrZWQo
bV9jYWxsZWUuZ2V0KCkpKSAmJiAoIW1fY29kZUJsb2NrIHx8IHZtLmhlYXAuaXNNYXJrZWQobV9j
b2RlQmxvY2suZ2V0KCkpKTsgfQogCiBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+
IG1fY2FsbGVlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCmluZGV4IDNjYTk2YWQ2OGNiZTM4ODc1ZTQxMTUxMjFmZWJkOWRjYmQ4Y2I1ZjguLmZmMzhi
Yjk4N2JmM2I2NDUxMzZmNDI4ZTljYWUzM2YxYjU3MjlmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTA1NCwyMCArMTA1NCwyMSBAQCB2b2lk
IFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGVVbnNhZmUuY2xlYXIoKTsK
IH0KIAotYm9vbCBTdHJ1Y3R1cmU6OmlzQ2hlYXBEdXJpbmdHQygpCitib29sIFN0cnVjdHVyZTo6
aXNDaGVhcER1cmluZ0dDKFZNJiB2bSkKIHsKICAgICAvLyBGSVhNRTogV2UgY291bGQgbWFrZSB0
aGlzIGV2ZW4gc2FmZXIgYnkgcmV0dXJuaW5nIGZhbHNlIGlmIHRoaXMgc3RydWN0dXJlJ3MgcHJv
cGVydHkgdGFibGUKICAgICAvLyBoYXMgYW55IGxhcmdlIHByb3BlcnR5IG5hbWVzLgogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTczMzQKICAgICAKLSAg
ICByZXR1cm4gKCFtX2dsb2JhbE9iamVjdCB8fCBIZWFwOjppc01hcmtlZChtX2dsb2JhbE9iamVj
dC5nZXQoKSkpCi0gICAgICAgICYmIChoYXNQb2x5UHJvdG8oKSB8fCAhc3RvcmVkUHJvdG90eXBl
T2JqZWN0KCkgfHwgSGVhcDo6aXNNYXJrZWQoc3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKKyAg
ICByZXR1cm4gKCFtX2dsb2JhbE9iamVjdCB8fCB2bS5oZWFwLmlzTWFya2VkKG1fZ2xvYmFsT2Jq
ZWN0LmdldCgpKSkKKyAgICAgICAgJiYgKGhhc1BvbHlQcm90bygpIHx8ICFzdG9yZWRQcm90b3R5
cGVPYmplY3QoKSB8fCB2bS5oZWFwLmlzTWFya2VkKHN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7
CiB9CiAKIGJvb2wgU3RydWN0dXJlOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBpZiAoIWlzQ2hlYXBEdXJpbmdHQygpKQotICAgICAgICByZXR1cm4gSGVhcDo6aXNN
YXJrZWQodGhpcyk7CisgICAgVk0mIHZtID0gdmlzaXRvci52bSgpOworICAgIGlmICghaXNDaGVh
cER1cmluZ0dDKHZtKSkKKyAgICAgICAgcmV0dXJuIHZtLmhlYXAuaXNNYXJrZWQodGhpcyk7CiAg
ICAgCiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCh0aGlzKTsKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZTQwOWI3
MjQ5NGNmODFkNjVjNmEwZmNhNWQwODE4ODRjNTIzZmE3ZC4uNGIwZDAzMWQ0NDAzOGRjYjJlOTBi
Yjc2MGM1MWM0MWQ0YTdmMTA4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKQEAgLTI5OSw3ICsyOTksNyBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAvLyBpbmNyZWFzZSBpbiBmb290cHJpbnQgYmVjYXVzZSBubyBvdGhl
ciBvYmplY3QgcmVmZXJzIHRvIHRoYXQgZ2xvYmFsIG9iamVjdC4gVGhpcyBtZXRob2QKICAgICAv
LyByZXR1cm5zIHRydWUgaWYgYWxsIHVzZXItY29udHJvbGxlZCAoYW5kIGhlbmNlIHVuYm91bmRl
ZCBpbiBzaXplKSBvYmplY3RzIHJlZmVyZW5jZWQgZnJvbSB0aGUKICAgICAvLyBTdHJ1Y3R1cmUg
YXJlIGFscmVhZHkgbWFya2VkLgotICAgIGJvb2wgaXNDaGVhcER1cmluZ0dDKCk7CisgICAgYm9v
bCBpc0NoZWFwRHVyaW5nR0MoVk0mKTsKICAgICAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhp
cyBzdHJ1Y3R1cmUgaXMgbm93IG1hcmtlZC4KICAgICBib29sIG1hcmtJZkNoZWFwKFNsb3RWaXNp
dG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNw
cAppbmRleCAwZjg1ZWY4ODI4NWMyZThiODFkNWZmMDBiY2FhMmI5OWNmNmRjODBhLi44YTZkNWMw
ODIyMDE2OGIxODY5MzcyNDQ0Njk0NTQyYjNiYWUxYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIFR5
cGVMb2NhdGlvbiogVHlwZVByb2ZpbGVyOjpuZXh0VHlwZUxvY2F0aW9uKCkKICAgICByZXR1cm4g
bV90eXBlTG9jYXRpb25JbmZvLmFkZCgpOyAKIH0KIAotdm9pZCBUeXBlUHJvZmlsZXI6OmludmFs
aWRhdGVUeXBlU2V0Q2FjaGUoKQordm9pZCBUeXBlUHJvZmlsZXI6OmludmFsaWRhdGVUeXBlU2V0
Q2FjaGUoVk0mIHZtKQogewogICAgIGZvciAoQmFnPFR5cGVMb2NhdGlvbj46Oml0ZXJhdG9yIGl0
ZXIgPSBtX3R5cGVMb2NhdGlvbkluZm8uYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKICAgICAg
ICAgVHlwZUxvY2F0aW9uKiBsb2NhdGlvbiA9ICppdGVyOwotICAgICAgICBsb2NhdGlvbi0+bV9p
bnN0cnVjdGlvblR5cGVTZXQtPmludmFsaWRhdGVDYWNoZSgpOworICAgICAgICBsb2NhdGlvbi0+
bV9pbnN0cnVjdGlvblR5cGVTZXQtPmludmFsaWRhdGVDYWNoZSh2bSk7CiAgICAgICAgIGlmIChs
b2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0KQotICAgICAgICAgICAgbG9jYXRpb24tPm1fZ2xvYmFs
VHlwZVNldC0+aW52YWxpZGF0ZUNhY2hlKCk7CisgICAgICAgICAgICBsb2NhdGlvbi0+bV9nbG9i
YWxUeXBlU2V0LT5pbnZhbGlkYXRlQ2FjaGUodm0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuaAppbmRleCA1NTI4MmVhZWY0NzVlZWQy
NTU1MDUyMDE5MGFjNzk3ODYxZjcyNTZiLi5hMmNiNzFmZTM3OGFmNmRlZjAxZDM3ZDY3NzdmZTY0
ODM1ZTYxZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXIuaApAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIFR5cGVQcm9maWxlciB7CiAgICAgVHlwZUxv
Y2F0aW9uKiBmaW5kTG9jYXRpb24odW5zaWduZWQgZGl2b3QsIGludHB0cl90IHNvdXJjZUlELCBU
eXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yLCBWTSYpOwogICAgIEdsb2JhbFZhcmlhYmxlSUQg
Z2V0TmV4dFVuaXF1ZVZhcmlhYmxlSUQoKSB7IHJldHVybiBtX25leHRVbmlxdWVWYXJpYWJsZUlE
Kys7IH0KICAgICBUeXBlTG9jYXRpb24qIG5leHRUeXBlTG9jYXRpb24oKTsKLSAgICB2b2lkIGlu
dmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKKyAgICB2b2lkIGludmFsaWRhdGVUeXBlU2V0Q2FjaGUo
Vk0mKTsKICAgICB2b2lkIGR1bXBUeXBlUHJvZmlsZXJEYXRhKFZNJik7CiAgICAgCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRleCBiOGRjNmJh
YWNmODdiNjU1OGU5OTgyYWVhMzY5MmUxZDU2YTUzZjhkLi40MTBlYjZkNWFlMTZmMzYwMjI2ZGIz
ODIzZjdlZTgyOGVjY2FiMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcApAQCAtNzksMTAgKzc5LDEyIEBAIHZvaWQgVHlwZVNldDo6YWRkVHlwZUluZm9ybWF0
aW9uKFJ1bnRpbWVUeXBlIHR5cGUsIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4mJiBwYXNzCiAgICAg
fQogfQogCi12b2lkIFR5cGVTZXQ6OmludmFsaWRhdGVDYWNoZSgpCit2b2lkIFR5cGVTZXQ6Omlu
dmFsaWRhdGVDYWNoZShWTSYgdm0pCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIGF1dG8ga2VlcE1hcmtlZFN0cnVjdHVyZXNGaWx0ZXIgPSBbXSAoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIC0+IGJvb2wgeyByZXR1cm4gSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJl
KTsgfTsKKyAgICBhdXRvIGtlZXBNYXJrZWRTdHJ1Y3R1cmVzRmlsdGVyID0gWyZdIChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiB2bS5oZWFwLmlzTWFya2Vk
KHN0cnVjdHVyZSk7CisgICAgfTsKICAgICBtX3N0cnVjdHVyZVNldC5nZW5lcmljRmlsdGVyKGtl
ZXBNYXJrZWRTdHJ1Y3R1cmVzRmlsdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5oCmluZGV4IGQ3NmJhOTVlNWY3YmM5YjI2NTQ1OGI4Y2JiNmNjZWFjNDRjYjkz
MjEuLjgwYmI0MDdlZjFkMjZiODQ4ZDA2YzVlNzEwYzYwYTA5YjU4YWZiMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgVHlw
ZVNldCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUeXBlU2V0PiB7CiAgICAgc3RhdGlj
IFJlZjxUeXBlU2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFR5cGVTZXQpOyB9
CiAgICAgVHlwZVNldCgpOwogICAgIHZvaWQgYWRkVHlwZUluZm9ybWF0aW9uKFJ1bnRpbWVUeXBl
LCBSZWZQdHI8U3RydWN0dXJlU2hhcGU+JiYsIFN0cnVjdHVyZSosIGJvb2wgc2F3UG9seVByb3Rv
U3RydWN0dXJlKTsKLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZSgpOworICAgIHZvaWQgaW52YWxp
ZGF0ZUNhY2hlKFZNJik7CiAgICAgU3RyaW5nIGR1bXBUeXBlcygpIGNvbnN0OwogICAgIFN0cmlu
ZyBkaXNwbGF5TmFtZSgpIGNvbnN0OwogICAgIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVjdHVyZURlc2NyaXB0aW9uPj4gYWxsU3RydWN0dXJlUmVw
cmVzZW50YXRpb25zKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwSW1wbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwSW1wbC5jcHAKaW5kZXggZTdjYWNhOTBjZjZjMWI3OTc3ZDYwZDFmMmE4OGY2YjI1NDEy
ZDQzNi4uYjhhYWEyZjE3YWNjMzYwZGEzZDllMjcyYzFlZDdkODgwMGJhODBhZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmNwcApAQCAtNjQsNiArNjQs
NyBAQCB2b2lkIFdlYWtNYXBJbXBsPFdlYWtNYXBCdWNrZXQ8V2Vha01hcEJ1Y2tldERhdGFLZXk+
Pjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyhKUwogdGVtcGxhdGUgPD4KIHZvaWQgV2Vha01hcElt
cGw8V2Vha01hcEJ1Y2tldDxXZWFrTWFwQnVja2V0RGF0YUtleVZhbHVlPj46OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMoSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKKyAgICBW
TSYgdm0gPSB2aXNpdG9yLnZtKCk7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWFr
TWFwSW1wbCo+KGNlbGwpOwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09iamVjdC0+
Y2VsbExvY2soKSk7CiAgICAgYXV0byogYnVmZmVyID0gdGhpc09iamVjdC0+YnVmZmVyKCk7CkBA
IC03MSw3ICs3Miw3IEBAIHZvaWQgV2Vha01hcEltcGw8V2Vha01hcEJ1Y2tldDxXZWFrTWFwQnVj
a2V0RGF0YUtleVZhbHVlPj46OnZpc2l0T3V0cHV0Q29uc3RyYWluCiAgICAgICAgIGF1dG8qIGJ1
Y2tldCA9IGJ1ZmZlciArIGluZGV4OwogICAgICAgICBpZiAoYnVja2V0LT5pc0VtcHR5KCkgfHwg
YnVja2V0LT5pc0RlbGV0ZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
IUhlYXA6OmlzTWFya2VkKGJ1Y2tldC0+a2V5KCkpKQorICAgICAgICBpZiAoIXZtLmhlYXAuaXNN
YXJrZWQoYnVja2V0LT5rZXkoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYnVj
a2V0LT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbElubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsSW5saW5lcy5oCmluZGV4IGE3YjhiOTk1YjFi
Y2E2ZmRlYWUzMzU2MWI4MTU1NGFmMWZiZTEzNmUuLjk5N2I5MjY2NDRlYmIyODg3YTFmZTZiMGRk
ZGJhYjRhOWFkYzY2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBJbXBsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtNYXBJbXBsSW5saW5lcy5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4gYmUgZXhlY3V0ZWQgaW4gcGFyYWxsZWwg
YXMgbG9uZyBhcyB0aGUgbXV0YXRvciBzdG9wcy4KIHRlbXBsYXRlPHR5cGVuYW1lIFdlYWtNYXBC
dWNrZXQ+Ci12b2lkIFdlYWtNYXBJbXBsPFdlYWtNYXBCdWNrZXQ+OjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseShWTSYpCit2b2lkIFdlYWtNYXBJbXBsPFdlYWtNYXBCdWNrZXQ+OjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseShWTSYgdm0pCiB7CiAgICAgYXV0byogYnVmZmVyID0gdGhpcy0+YnVmZmVy
KCk7CiAgICAgZm9yICh1aW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9jYXBhY2l0eTsgKytp
bmRleCkgewpAQCAtMzksNyArMzksNyBAQCB2b2lkIFdlYWtNYXBJbXBsPFdlYWtNYXBCdWNrZXQ+
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpCiAgICAgICAgIGlmIChidWNrZXQtPmlzRW1w
dHkoKSB8fCBidWNrZXQtPmlzRGVsZXRlZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGJ1Y2tldC0+a2V5KCkpKQorICAgICAgICBpZiAodm0u
aGVhcC5pc01hcmtlZChidWNrZXQtPmtleSgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIGJ1Y2tldC0+bWFrZURlbGV0ZWQoKTsK
</data>
<flag name="review"
          id="382236"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>