<?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>156407</bug_id>
          
          <creation_ts>2016-04-08 10:29:42 -0700</creation_ts>
          <short_desc>Web Inspector: get rid of InspectorBasicValue and InspectorString subclasses</short_desc>
          <delta_ts>2016-04-11 16:22:11 -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>Web Inspector</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>
          <dependson>156442</dependson>
          <blocked>156424</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1182195</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-08 10:29:42 -0700</bug_when>
    <thetext>They don&apos;t do anything helpful, and actively prevent code sharing/cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182196</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-08 10:30:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/25627659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182199</commentid>
    <comment_count>2</comment_count>
      <attachid>276011</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-08 10:42:09 -0700</bug_when>
    <thetext>Created attachment 276011
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182266</commentid>
    <comment_count>3</comment_count>
      <attachid>276011</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-08 12:59:25 -0700</bug_when>
    <thetext>Comment on attachment 276011
Proposed Fix

Clearing flags on attachment: 276011

Committed r199242: &lt;http://trac.webkit.org/changeset/199242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182267</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-08 12:59:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182490</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-09 13:28:39 -0700</bug_when>
    <thetext>r199242 introduced a large number of leaks on the bots. Will try to roll out now.

Apr 08 14:17	199246	failure	#4343	Failed 112636 total leaks found for a total of 15,171,488 bytes. 460 unique leaks found. 2 failures 9 new passes
Apr 08 13:56	199245	failure	#4342	Failed 110033 total leaks found for a total of 23,142,368 bytes. 425 unique leaks found. 9 new passes
Apr 08 13:30	199242	failure	#4341	Failed 114409 total leaks found for a total of 282,429,440 bytes. 423 unique leaks found. 1 failures 9 new passes
Apr 08 13:08	199241	failure	#4340	Failed 6828 total leaks found for a total of 2,673,520 bytes. 207 unique leaks found. 2 failures 9 new passes
Apr 08 12:46	199240	failure	#4339	Failed 5586 total leaks found for a total of 1,496,480 bytes. 129 unique leaks found. 13 failures 9 new passes
Apr 08 12:08	199237	failure	#4338	Failed 5708 total leaks found for a total of 732,912 bytes. 201 unique leaks found. 2 failures 9 new passes
Apr 08 11:48	199238	failure	#4337	Failed 4781 total leaks found for a total of 2,272,064 bytes. 162 unique leaks found. 1 failures 9 new passes

Leaks output seems too large to load in the browser, but individual leaks files can be seen here: &lt;https://build.webkit.org/results/Apple%20El%20Capitan%20(Leaks)/r199268%20(4353)/&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182493</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-09 13:31:13 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 156442</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182527</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-09 20:40:16 -0700</bug_when>
    <thetext>The correct way to implement this can be copied from NodeOrString.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182815</commentid>
    <comment_count>8</comment_count>
      <attachid>276172</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-11 13:49:51 -0700</bug_when>
    <thetext>Created attachment 276172
Proposed Fix (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182816</commentid>
    <comment_count>9</comment_count>
      <attachid>276172</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-11 13:50:12 -0700</bug_when>
    <thetext>Comment on attachment 276172
Proposed Fix (v2)

Needs to land with corresponding internal change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182819</commentid>
    <comment_count>10</comment_count>
      <attachid>276172</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-04-11 14:00:31 -0700</bug_when>
    <thetext>Comment on attachment 276172
Proposed Fix (v2)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182869</commentid>
    <comment_count>11</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-11 16:22:11 -0700</bug_when>
    <thetext>Committed r199320: &lt;http://trac.webkit.org/changeset/199320&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276011</attachid>
            <date>2016-04-08 10:42:09 -0700</date>
            <delta_ts>2016-04-11 13:49:47 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-156407-20160408104214.patch</filename>
            <type>text/plain</type>
            <size>26327</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
OGFmNjQyNGJhMTNjNWNhYWZlYzEyNmFjMjM4ZGExMjQ3MzIxMjQyLi5iODcxZWZiNmUzZjI0YTQ1
MmI0OTBhNTMwYjRhY2UzYjlkZTc3YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxNi0wNC0wOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIEluc3BlY3RvckJhc2ljVmFsdWUgYW5k
IEluc3BlY3RvclN0cmluZyBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NjI3
NjU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZXJlJ3Mgbm8gcG9pbnQgaGF2aW5nIHRoZXNlIHN1YmNsYXNzZXMgYXMgdGhleSBkb24ndCBzYXZl
IGFueSBzcGFjZS4KKyAgICAgICAgQWRkIG1fc3RyaW5nVmFsdWUgdG8gdGhlIHVuaW9uIGFuZCBt
ZXJnZSBzb21lIGltcGxlbWVudGF0aW9ucyBvZiB3cml0ZUpTT04uCisgICAgICAgIE1vdmUgdXNl
cyBvZiB0aGUgc3ViY2xhc3MgdG8gSW5zcGVjdG9yVmFsdWUgYW5kIGRlbGV0ZSByZWR1bmRhbnQg
bWV0aG9kcy4KKyAgICAgICAgTm93LCBtb3N0IEluc3BlY3RvclZhbHVlIG1ldGhvZHMgYXJlIG5v
bi12aXJ0dWFsIHNvIHRoZXkgY2FuIGJlIHRlbXBsYXRlZC4KKworICAgICAgICAqIGJpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwpOgorICAgICAgICBEb24n
dCB1c2VkIGRlbGV0ZWQgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6bnVsbCk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpjcmVhdGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6YXNWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlOjphc0Jvb2xlYW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZTo6YXNEb3VibGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6
YXNJbnRlZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OmFzU3RyaW5n
KToKKyAgICAgICAgVGhlc2Ugb25seSBuZWVkIG9uZSBpbXBsZW1lbnRhdGlvbiBub3cuCisKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OndyaXRlSlNPTik6CisgICAgICAgIFN0
aWxsIGEgdmlydHVhbCBtZXRob2Qgc2luY2UgT2JqZWN0IGFuZCBBcnJheSBuZWVkIHRoZWlyIG1l
bWJlcnMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6SW5zcGVj
dG9yT2JqZWN0QmFzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhc2ljVmFsdWU6
OmFzQm9vbGVhbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhc2lj
VmFsdWU6OmFzRG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFzaWNWYWx1ZTo6YXNJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFzaWNWYWx1ZTo6d3JpdGVKU09OKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yU3RyaW5nOjphc1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvclN0cmluZzo6d3JpdGVKU09OKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUpOiBEZWxldGVkLgorCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3RCYXNlOjpzZXRCb29sZWFuKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0QmFzZTo6c2V0SW50ZWdlcik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdEJhc2U6OnNldERvdWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dEJhc2U6OnNldFN0cmluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFz
ZTo6cHVzaEJvb2xlYW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheUJhc2U6
OnB1c2hJbnRlZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpw
dXNoRG91YmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNo
U3RyaW5nKToKKyAgICAgICAgVXNlIG5ldyBmYWN0b3J5IG1ldGhvZHMuCisKKyAgICAgICAgKiBy
ZXBsYXkvRW5jb2RlZFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NhbGFyRW5jb2RpbmdUcmFp
dHM8Ym9vbD46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6U2NhbGFyRW5jb2RpbmdUcmFp
dHM8ZG91YmxlPjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAoSlNDOjpTY2FsYXJFbmNvZGluZ1Ry
YWl0czxmbG9hdD46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6U2NhbGFyRW5jb2RpbmdU
cmFpdHM8aW50MzJfdD46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6U2NhbGFyRW5jb2Rp
bmdUcmFpdHM8aW50NjRfdD46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6U2NhbGFyRW5j
b2RpbmdUcmFpdHM8dWludDMyX3Q+OjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjYWxh
ckVuY29kaW5nVHJhaXRzPHVpbnQ2NF90Pjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAqIHJlcGxh
eS9FbmNvZGVkVmFsdWUuaDoKKyAgICAgICAgVXNlIG5ldyBmYWN0b3J5IG1ldGhvZHMuCisKIDIw
MTYtMDQtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBs
ZW1lbnRpbmcgY2FjaGluZyB0cmFuc2l0aW9uIHB1dHMgdGhhdCBuZWVkIHRvIHJlYWxsb2NhdGUg
d2l0aCBpbmRleGluZyBzdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBjYWI1ODQwMTI4MWRlZjI2Yzgw
MGNmMDk2ZDY1ZDhmN2JlMTU5YS4uNzJjMTFiN2YzYzlkNGM5ZTRkMTkyOTgxYTU3MTE0NjA3Nzg4
MDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA0LTA4ICBCcmlhbiBCdXJn
ICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGdldCByaWQgb2Yg
SW5zcGVjdG9yQmFzaWNWYWx1ZSBhbmQgSW5zcGVjdG9yU3RyaW5nIHN1YmNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQwNworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjU2Mjc2NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5j
cHA6IERvbid0IHVzZSBkZWxldGVkIHN1YmNsYXNzZXMuCisKIDIwMTYtMDQtMDcgIEFkYSBDaGFu
ICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbCBvdXQgdGhlIGNzcyBjaGFuZ2Ug
aW4gbWVkaWFDb250cm9sc0FwcGxlLmNzcyB0aGF0IGhhcyBiZWVuIGNhdXNpbmcgYXNzZXJ0aW9u
cyBpbiBsYXlvdXQgZm9yIG11bHRpcGxlIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3YWM3NTYxODMwYzU3MTc5ZGMxMGJkNzU1
MGNmMGRmM2U4NWZiYTUyLi4zZWYwYmM5YTcyODc5MTQ0Y2U1NjJjNzdkMTUyZjhhZWMzYjU0NjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAK
QEAgLTExMiwxMyArMTEyLDEzIEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9J
bnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVlCiAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpIHx8IHZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JWYWx1ZTo6bnVsbCgpOwogICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKLSAgICAgICAg
cmV0dXJuIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZS5hc0Jvb2xlYW4oKSk7Cisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFzQm9vbGVhbigpKTsK
ICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiB2YWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFzTnVtYmVyKCkpOworICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZS5hc051bWJlcigpKTsKICAg
ICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiB2YWx1ZS5pc01hY2hpbmVJbnQoKSkKLSAgICAgICAg
cmV0dXJuIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVl
LmFzTWFjaGluZUludCgpKSk7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRl
KHN0YXRpY19jYXN0PGludD4odmFsdWUuYXNNYWNoaW5lSW50KCkpKTsKICAgICBpZiAodmFsdWUu
aXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVl
LmdldFN0cmluZyhzY3JpcHRTdGF0ZSkpOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6
OmNyZWF0ZSh2YWx1ZS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUpKTsKIAogICAgIGlmICh2YWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgIGlmIChpc0pTQXJyYXkodmFsdWUpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAK
aW5kZXggMjdlYzhhMTY1MzJhMjNhZDE4NTdiZjJlOWRkM2M1ODlmNWIzMzE4OC4uZDliYmE4N2Y4
Yzk1MzgwMGY1MWNlNjZhNTg3ZTg5YzBmYjM2OTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcApAQCAtOTksOSAr
OTksOSBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUNhbGwoRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUAogICAgIGlmICghaGFkRXhjZXB0aW9uKSB7
CiAgICAgICAgICpyZXN1bHQgPSByZXN1bHRWYWx1ZS50b0luc3BlY3RvclZhbHVlKG1faW5qZWN0
ZWRTY3JpcHRPYmplY3Quc2NyaXB0U3RhdGUoKSk7CiAgICAgICAgIGlmICghKnJlc3VsdCkKLSAg
ICAgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJpbmc6OmZvcm1h
dCgiT2JqZWN0IGhhcyB0b28gbG9uZyByZWZlcmVuY2UgY2hhaW4gKG11c3Qgbm90IGJlIGxvbmdl
ciB0aGFuICVkKSIsIEluc3BlY3RvclZhbHVlOjptYXhEZXB0aCkpOworICAgICAgICAgICAgKnJl
c3VsdCA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoU3RyaW5nOjpmb3JtYXQoIk9iamVjdCBoYXMg
dG9vIGxvbmcgcmVmZXJlbmNlIGNoYWluIChtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiAlZCkiLCBJ
bnNwZWN0b3JWYWx1ZTo6bWF4RGVwdGgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgKnJlc3VsdCA9
IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4i
KTsKKyAgICAgICAgKnJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoIkV4Y2VwdGlvbiB3
aGlsZSBtYWtpbmcgYSBjYWxsLiIpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFr
ZUV2YWxDYWxsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsJiBmdW5jdGlvbiwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+KiBvYmplY3RSZXN1bHQsIFByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93biwg
UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmluZGV4IDU0
N2IxODEzMzZmNGVkMGQyNDkxMjEzYjlhOWE3NDE2Y2UxMzMyNDguLmYzMWU1ODQwMTFlMDUxMDVi
ODdiYmE3NGMyYWMxMjgzMTQzM2Y0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTM2MywxNyArMzYzLDE3IEBAIFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4gYnVpbGRWYWx1ZShjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0
IFVDaGFyKiBlbmQsIGNvbnN0IFVDCiAgICAgICAgIHJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpu
dWxsKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQk9PTF9UUlVFOgotICAgICAgICByZXN1
bHQgPSBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodHJ1ZSk7CisgICAgICAgIHJlc3VsdCA9
IEluc3BlY3RvclZhbHVlOjpjcmVhdGUodHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Qk9PTF9GQUxTRToKLSAgICAgICAgcmVzdWx0ID0gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRl
KGZhbHNlKTsKKyAgICAgICAgcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZShmYWxzZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIGJvb2wgb2s7CiAg
ICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNoYXJhY3RlcnNUb0RvdWJsZSh0b2tlblN0YXJ0LCB0b2tl
bkVuZCAtIHRva2VuU3RhcnQsICZvayk7CiAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmVzdWx0ID0gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3Jl
YXRlKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0ID0gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFNUUklORzogewpAQCAtMzgxLDcg
KzM4MSw3IEBAIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gYnVpbGRWYWx1ZShjb25zdCBVQ2hhciog
c3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVDCiAgICAgICAgIGJvb2wgb2sgPSBkZWNv
ZGVTdHJpbmcodG9rZW5TdGFydCArIDEsIHRva2VuRW5kIC0gMSwgdmFsdWUpOwogICAgICAgICBp
ZiAoIW9rKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJlc3VsdCA9IElu
c3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlKTsKKyAgICAgICAgcmVzdWx0ID0gSW5zcGVjdG9y
VmFsdWU6OmNyZWF0ZSh2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEFS
UkFZX0JFR0lOOiB7CkBAIC00OTgsNTkgKzQ5OCwzOSBAQCBpbmxpbmUgdm9pZCBkb3VibGVRdW90
ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0ciwgU3RyaW5nQnVpbGRlciYgZHN0KQogCiB9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNCb29sZWFuKGJvb2wm
KSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6
YXNEb3VibGUoZG91YmxlJikgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
SW5zcGVjdG9yVmFsdWU6OmFzRG91YmxlKGZsb2F0JikgY29uc3QKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdlcihpbnQmKSBjb25zdAotewot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKHVu
c2lnbmVkJikgY29uc3QKK1JlZjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yVmFsdWU6Om51bGwo
KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0
b3JWYWx1ZSk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdlcihsb25nJikgY29u
c3QKK1JlZjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZShib29sIHZhbHVl
KQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0
b3JWYWx1ZSh2YWx1ZSkpOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIobG9u
ZyBsb25nJikgY29uc3QKK1JlZjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0
ZShpbnQgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluc3BlY3RvclZhbHVlKHZhbHVlKSk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFz
SW50ZWdlcih1bnNpZ25lZCBsb25nJikgY29uc3QKK1JlZjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVj
dG9yVmFsdWU6OmNyZWF0ZShkb3VibGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvclZhbHVlKHZhbHVlKSk7CiB9CiAKLWJvb2wg
SW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdlcih1bnNpZ25lZCBsb25nIGxvbmcmKSBjb25zdAorUmVm
PEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3Bl
Y3RvclZhbHVlKHZhbHVlKSk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzU3RyaW5nKFN0
cmluZyYpIGNvbnN0CitSZWY8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvclZhbHVlOjpjcmVhdGUo
Y29uc3QgY2hhciogdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEluc3BlY3RvclZhbHVlKHZhbHVlKSk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yVmFs
dWU6OmFzVmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiYgb3V0cHV0KQorYm9vbCBJbnNwZWN0
b3JWYWx1ZTo6YXNWYWx1ZShSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gJiB2YWx1
ZSkKIHsKLSAgICBvdXRwdXQgPSB0aGlzOworICAgIHZhbHVlID0gdGhpczsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNTg3LDE0ICs1NjcsNyBAQCBTdHJpbmcgSW5zcGVjdG9yVmFsdWU6OnRv
SlNPTlN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCi12
b2lkIEluc3BlY3RvclZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25z
dAotewotICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6TnVsbCk7Ci0KLSAgICBvdXRwdXQuYXBw
ZW5kTGl0ZXJhbCgibnVsbCIpOwotfQotCi1ib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzQm9v
bGVhbihib29sJiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc0Jvb2xlYW4o
Ym9vbCYgb3V0cHV0KSBjb25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6Qm9vbGVhbikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjAzLDcgKzU3Niw3IEBAIGJvb2wgSW5zcGVjdG9y
QmFzaWNWYWx1ZTo6YXNCb29sZWFuKGJvb2wmIG91dHB1dCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0RvdWJsZShkb3VibGUmIG91dHB1
dCkgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzRG91YmxlKGRvdWJsZSYgb3V0cHV0KSBj
b25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6RG91YmxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC02MTIsNyArNTg1LDcgQEAgYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0Rv
dWJsZShkb3VibGUmIG91dHB1dCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJ
bnNwZWN0b3JCYXNpY1ZhbHVlOjphc0RvdWJsZShmbG9hdCYgb3V0cHV0KSBjb25zdAorYm9vbCBJ
bnNwZWN0b3JWYWx1ZTo6YXNEb3VibGUoZmxvYXQmIG91dHB1dCkgY29uc3QKIHsKICAgICBpZiAo
dHlwZSgpICE9IFR5cGU6OkRvdWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjIxLDcg
KzU5NCw3IEBAIGJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNEb3VibGUoZmxvYXQmIG91dHB1
dCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVl
Ojphc0ludGVnZXIoaW50JiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc0lu
dGVnZXIoaW50JiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpJbnRl
Z2VyICYmIHR5cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTYzMCw3ICs2MDMsNyBAQCBib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzSW50ZWdlcihpbnQm
IG91dHB1dCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNp
Y1ZhbHVlOjphc0ludGVnZXIodW5zaWduZWQmIG91dHB1dCkgY29uc3QKK2Jvb2wgSW5zcGVjdG9y
VmFsdWU6OmFzSW50ZWdlcih1bnNpZ25lZCYgb3V0cHV0KSBjb25zdAogewogICAgIGlmICh0eXBl
KCkgIT0gVHlwZTo6SW50ZWdlciAmJiB0eXBlKCkgIT0gVHlwZTo6RG91YmxlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02MzksNyArNjEyLDcgQEAgYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVl
Ojphc0ludGVnZXIodW5zaWduZWQmIG91dHB1dCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVnZXIobG9uZyYgb3V0cHV0KSBjb25z
dAorYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2VyKGxvbmcmIG91dHB1dCkgY29uc3QKIHsK
ICAgICBpZiAodHlwZSgpICE9IFR5cGU6OkludGVnZXIgJiYgdHlwZSgpICE9IFR5cGU6OkRvdWJs
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQ4LDcgKzYyMSw3IEBAIGJvb2wgSW5zcGVj
dG9yQmFzaWNWYWx1ZTo6YXNJbnRlZ2VyKGxvbmcmIG91dHB1dCkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVnZXIobG9uZyBsb25n
JiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIobG9uZyBsb25n
JiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyICYmIHR5
cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Nyw3ICs2
MzAsNyBAQCBib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFzSW50ZWdlcihsb25nIGxvbmcmIG91
dHB1dCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1Zh
bHVlOjphc0ludGVnZXIodW5zaWduZWQgbG9uZyYgb3V0cHV0KSBjb25zdAorYm9vbCBJbnNwZWN0
b3JWYWx1ZTo6YXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcmIG91dHB1dCkgY29uc3QKIHsKICAgICBp
ZiAodHlwZSgpICE9IFR5cGU6OkludGVnZXIgJiYgdHlwZSgpICE9IFR5cGU6OkRvdWJsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjY2LDcgKzYzOSw3IEBAIGJvb2wgSW5zcGVjdG9yQmFz
aWNWYWx1ZTo6YXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcmIG91dHB1dCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVnZXIodW5zaWdu
ZWQgbG9uZyBsb25nJiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc0ludGVn
ZXIodW5zaWduZWQgbG9uZyBsb25nJiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAh
PSBUeXBlOjpJbnRlZ2VyICYmIHR5cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTY3NSwxNiArNjQ4LDMyIEBAIGJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6
YXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcgbG9uZyYgb3V0cHV0KSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEluc3BlY3RvckJhc2ljVmFsdWU6OndyaXRlSlNPTihTdHJpbmdCdWls
ZGVyJiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc1N0cmluZyhTdHJpbmcm
IG91dHB1dCkgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSgpID09IFR5cGU6OkJvb2xlYW4gfHwg
dHlwZSgpID09IFR5cGU6OkRvdWJsZSB8fCB0eXBlKCkgPT0gVHlwZTo6SW50ZWdlcik7CisgICAg
aWYgKHR5cGUoKSAhPSBUeXBlOjpTdHJpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IG91dHB1dCA9IG1fc3RyaW5nVmFsdWU7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBpZiAo
dHlwZSgpID09IFR5cGU6OkJvb2xlYW4pIHsKK3ZvaWQgSW5zcGVjdG9yVmFsdWU6OndyaXRlSlNP
TihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsK
KyAgICBjYXNlIFR5cGU6Ok51bGw6CisgICAgICAgIG91dHB1dC5hcHBlbmRMaXRlcmFsKCJudWxs
Iik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6Qm9vbGVhbjoKICAgICAgICAgaWYg
KG1fYm9vbGVhblZhbHVlKQogICAgICAgICAgICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoInRydWUi
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoImZhbHNl
Iik7Ci0gICAgfSBlbHNlIGlmICh0eXBlKCkgPT0gVHlwZTo6RG91YmxlIHx8IHR5cGUoKSA9PSBU
eXBlOjpJbnRlZ2VyKSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6U3RyaW5nOgor
ICAgICAgICBkb3VibGVRdW90ZVN0cmluZyhtX3N0cmluZ1ZhbHVlLCBvdXRwdXQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFR5cGU6OkRvdWJsZToKKyAgICBjYXNlIFR5cGU6OkludGVnZXI6
IHsKICAgICAgICAgTnVtYmVyVG9MU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKICAgICAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKG1fZG91YmxlVmFsdWUpKSB7CiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5k
TGl0ZXJhbCgibnVsbCIpOwpAQCAtNzAzLDE5ICs2OTIsMTEgQEAgdm9pZCBJbnNwZWN0b3JCYXNp
Y1ZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25zdAogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIGxlbmd0aCA9IGRlY2ltYWwudG9TdHJpbmdEZWNpbWFsKGJ1ZmZl
ciwgV1RGOjpOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aCk7CiAgICAgICAgIG91dHB1dC5hcHBl
bmQoYnVmZmVyLCBsZW5ndGgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotfQotCi1ib29sIEluc3BlY3Rv
clN0cmluZzo6YXNTdHJpbmcoU3RyaW5nJiBvdXRwdXQpIGNvbnN0Ci17Ci0gICAgb3V0cHV0ID0g
bV9zdHJpbmdWYWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBJbnNwZWN0b3JTdHJp
bmc6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KHR5cGUoKSA9PSBUeXBlOjpTdHJpbmcpOwotICAgIGRvdWJsZVF1b3RlU3RyaW5nKG1fc3RyaW5n
VmFsdWUsIG91dHB1dCk7CiB9CiAKIEluc3BlY3Rvck9iamVjdEJhc2U6On5JbnNwZWN0b3JPYmpl
Y3RCYXNlKCkKQEAgLTgwNSw3ICs3ODYsNyBAQCB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6Ondy
aXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0CiB9CiAKIEluc3BlY3Rvck9iamVj
dEJhc2U6Okluc3BlY3Rvck9iamVjdEJhc2UoKQotICAgIDogSW5zcGVjdG9yVmFsdWUoVHlwZTo6
T2JqZWN0KQorICAgIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZShUeXBlOjpPYmplY3QpCiAg
ICAgLCBtX2RhdGEoKQogICAgICwgbV9vcmRlcigpCiB7CkBAIC04NTUsMzQgKzgzNiw0IEBAIFJl
ZjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW5zcGVjdG9yQXJyYXkpOwogfQogCi1SZWY8SW5zcGVjdG9yVmFsdWU+IElu
c3BlY3RvclZhbHVlOjpudWxsKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0
b3JWYWx1ZSk7Ci19Ci0KLVJlZjxJbnNwZWN0b3JTdHJpbmc+IEluc3BlY3RvclN0cmluZzo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5z
cGVjdG9yU3RyaW5nKHZhbHVlKSk7Ci19Ci0KLVJlZjxJbnNwZWN0b3JTdHJpbmc+IEluc3BlY3Rv
clN0cmluZzo6Y3JlYXRlKGNvbnN0IGNoYXIqIHZhbHVlKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEluc3BlY3RvclN0cmluZyh2YWx1ZSkpOwotfQotCi1SZWY8SW5zcGVjdG9yQmFzaWNW
YWx1ZT4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGJvb2wgdmFsdWUpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yQmFzaWNWYWx1ZSh2YWx1ZSkpOwotfQotCi1SZWY8
SW5zcGVjdG9yQmFzaWNWYWx1ZT4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGludCB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JCYXNpY1ZhbHVlKHZhbHVl
KSk7Ci19Ci0KLVJlZjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpj
cmVhdGUoZG91YmxlIHZhbHVlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3Rv
ckJhc2ljVmFsdWUodmFsdWUpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRl
eCBjMTRlZmE1YjEwMjIwODYyODRmOWVlZTczM2E0NjM2MTA4Y2NhYWY3Li4yZGFkNTA0NjNhYzcx
Mzk1ZWI0MGY1NGVkZjI2ZGZlYTE1YzBkNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTUxLDExICs1MSwxNCBAQCBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPElu
c3BlY3RvclZhbHVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhEZXB0aCA9
IDEwMDA7CiAKLSAgICBJbnNwZWN0b3JWYWx1ZSgpCi0gICAgICAgIDogbV90eXBlKFR5cGU6Ok51
bGwpIHsgfQogICAgIHZpcnR1YWwgfkluc3BlY3RvclZhbHVlKCkgeyB9CiAKICAgICBzdGF0aWMg
UmVmPEluc3BlY3RvclZhbHVlPiBudWxsKCk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JWYWx1
ZT4gY3JlYXRlKGJvb2wpOworICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yVmFsdWU+IGNyZWF0ZShp
bnQpOworICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yVmFsdWU+IGNyZWF0ZShkb3VibGUpOworICAg
IHN0YXRpYyBSZWY8SW5zcGVjdG9yVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICBz
dGF0aWMgUmVmPEluc3BlY3RvclZhbHVlPiBjcmVhdGUoY29uc3QgY2hhciopOwogCiAgICAgZW51
bSBjbGFzcyBUeXBlIHsKICAgICAgICAgTnVsbCA9IDAsCkBAIC02NCwyNCArNjcsMjQgQEAgcHVi
bGljOgogICAgICAgICBJbnRlZ2VyLAogICAgICAgICBTdHJpbmcsCiAgICAgICAgIE9iamVjdCwK
LSAgICAgICAgQXJyYXkKKyAgICAgICAgQXJyYXksCiAgICAgfTsKIAogICAgIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6TnVsbDsgfQogCi0gICAgdmlydHVhbCBib29sIGFzQm9vbGVh
bihib29sJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzSW50ZWdlcihpbnQmKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVkJikgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIGFzSW50ZWdlcihsb25nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzSW50ZWdl
cihsb25nIGxvbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVk
IGxvbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcg
bG9uZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc0RvdWJsZShkb3VibGUmKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgYXNEb3VibGUoZmxvYXQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgYXNTdHJpbmcoU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzVmFsdWUoUmVm
UHRyPEluc3BlY3RvclZhbHVlPiYpOworICAgIGJvb2wgYXNCb29sZWFuKGJvb2wmKSBjb25zdDsK
KyAgICBib29sIGFzSW50ZWdlcihpbnQmKSBjb25zdDsKKyAgICBib29sIGFzSW50ZWdlcih1bnNp
Z25lZCYpIGNvbnN0OworICAgIGJvb2wgYXNJbnRlZ2VyKGxvbmcmKSBjb25zdDsKKyAgICBib29s
IGFzSW50ZWdlcihsb25nIGxvbmcmKSBjb25zdDsKKyAgICBib29sIGFzSW50ZWdlcih1bnNpZ25l
ZCBsb25nJikgY29uc3Q7CisgICAgYm9vbCBhc0ludGVnZXIodW5zaWduZWQgbG9uZyBsb25nJikg
Y29uc3Q7CisgICAgYm9vbCBhc0RvdWJsZShkb3VibGUmKSBjb25zdDsKKyAgICBib29sIGFzRG91
YmxlKGZsb2F0JikgY29uc3Q7CisgICAgYm9vbCBhc1N0cmluZyhTdHJpbmcmKSBjb25zdDsKKyAg
ICBib29sIGFzVmFsdWUoUmVmUHRyPEluc3BlY3RvclZhbHVlPiYpOworCiAgICAgdmlydHVhbCBi
b29sIGFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdmlydHVhbCBib29s
IGFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOwogCkBAIC05MSw3MSArOTQsMzkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0cHV0
KSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEluc3BlY3RvclZhbHVlKFR5cGUg
dHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlwZSBtX3R5cGU7Ci19
OwotCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JCYXNpY1ZhbHVlIDogcHVibGlj
IEluc3BlY3RvclZhbHVlIHsKLXB1YmxpYzoKLQotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQmFz
aWNWYWx1ZT4gY3JlYXRlKGJvb2wpOwotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQmFzaWNWYWx1
ZT4gY3JlYXRlKGludCk7Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBjcmVh
dGUoZG91YmxlKTsKLQotICAgIGJvb2wgYXNCb29sZWFuKGJvb2wmKSBjb25zdCBvdmVycmlkZTsK
LSAgICAvLyBOdW1iZXJzIGZyb20gdGhlIGZyb250ZW5kIGFyZSBhbHdheXMgcGFyc2VkIGFzIGRv
dWJsZXMsIHNvIHdlIGFsbG93Ci0gICAgLy8gY2xpZW50cyB0byBjb252ZXJ0IHRvIGludGVncmFs
IHZhbHVlcyB3aXRoIHRoaXMgZnVuY3Rpb24uCi0gICAgYm9vbCBhc0ludGVnZXIoaW50JikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhc0ludGVnZXIodW5zaWduZWQmKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIGFzSW50ZWdlcihsb25nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBh
c0ludGVnZXIobG9uZyBsb25nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhc0ludGVnZXIo
dW5zaWduZWQgbG9uZyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgYXNJbnRlZ2VyKHVuc2ln
bmVkIGxvbmcgbG9uZyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgYXNEb3VibGUoZG91Ymxl
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhc0RvdWJsZShmbG9hdCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIEluc3BlY3RvclZhbHVlKCkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6TnVsbCkg
eyB9CiAKLSAgICB2b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0IG92
ZXJyaWRlOworICAgIGV4cGxpY2l0IEluc3BlY3RvclZhbHVlKFR5cGUgdHlwZSkKKyAgICAgICAg
OiBtX3R5cGUodHlwZSkgeyB9CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9yQmFz
aWNWYWx1ZShib29sIHZhbHVlKQotICAgICAgICA6IEluc3BlY3RvclZhbHVlKFR5cGU6OkJvb2xl
YW4pCisgICAgZXhwbGljaXQgSW5zcGVjdG9yVmFsdWUoYm9vbCB2YWx1ZSkKKyAgICAgICAgOiBt
X3R5cGUoVHlwZTo6Qm9vbGVhbikKICAgICAgICAgLCBtX2Jvb2xlYW5WYWx1ZSh2YWx1ZSkgeyB9
CiAKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNpY1ZhbHVlKGludCB2YWx1ZSkKLSAgICAgICAg
OiBJbnNwZWN0b3JWYWx1ZShUeXBlOjpJbnRlZ2VyKQorICAgIGV4cGxpY2l0IEluc3BlY3RvclZh
bHVlKGludCB2YWx1ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6SW50ZWdlcikKICAgICAgICAg
LCBtX2RvdWJsZVZhbHVlKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpKSB7IH0KIAotICAgIGV4
cGxpY2l0IEluc3BlY3RvckJhc2ljVmFsdWUoZG91YmxlIHZhbHVlKQotICAgICAgICA6IEluc3Bl
Y3RvclZhbHVlKFR5cGU6OkRvdWJsZSkKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JWYWx1ZShkb3Vi
bGUgdmFsdWUpCisgICAgICAgIDogbV90eXBlKFR5cGU6OkRvdWJsZSkKICAgICAgICAgLCBtX2Rv
dWJsZVZhbHVlKHZhbHVlKSB7IH0KIAotICAgIHVuaW9uIHsKLSAgICAgICAgYm9vbCBtX2Jvb2xl
YW5WYWx1ZTsKLSAgICAgICAgZG91YmxlIG1fZG91YmxlVmFsdWU7Ci0gICAgfTsKLX07Ci0KLWNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvclN0cmluZyA6IHB1YmxpYyBJbnNwZWN0b3JW
YWx1ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShj
b25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNv
bnN0IGNoYXIqKTsKLQotICAgIGJvb2wgYXNTdHJpbmcoU3RyaW5nJiBvdXRwdXQpIGNvbnN0IG92
ZXJyaWRlOwotCi0gICAgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25z
dCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKLSAgICAgICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlOjpTdHJpbmcp
CisgICAgZXhwbGljaXQgSW5zcGVjdG9yVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAg
ICAgOiBtX3R5cGUoVHlwZTo6U3RyaW5nKQogICAgICAgICAsIG1fc3RyaW5nVmFsdWUodmFsdWUp
IHsgfQogCi0gICAgZXhwbGljaXQgSW5zcGVjdG9yU3RyaW5nKGNvbnN0IGNoYXIqIHZhbHVlKQot
ICAgICAgICA6IEluc3BlY3RvclZhbHVlKFR5cGU6OlN0cmluZykKKyAgICBleHBsaWNpdCBJbnNw
ZWN0b3JWYWx1ZShjb25zdCBjaGFyKiB2YWx1ZSkKKyAgICAgICAgOiBtX3R5cGUoVHlwZTo6U3Ry
aW5nKQogICAgICAgICAsIG1fc3RyaW5nVmFsdWUodmFsdWUpIHsgfQogCi0gICAgU3RyaW5nIG1f
c3RyaW5nVmFsdWU7Citwcml2YXRlOgorICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6TnVsbCB9Owor
ICAgIHVuaW9uIHsKKyAgICAgICAgYm9vbCBtX2Jvb2xlYW5WYWx1ZTsKKyAgICAgICAgZG91Ymxl
IG1fZG91YmxlVmFsdWU7CisgICAgICAgIFN0cmluZyBtX3N0cmluZ1ZhbHVlOworICAgIH07CiB9
OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JPYmplY3RCYXNlIDogcHVibGlj
IEluc3BlY3RvclZhbHVlIHsKQEAgLTMyOSwyMiArMzAwLDIyIEBAIGlubGluZSBJbnNwZWN0b3JP
YmplY3RCYXNlOjpjb25zdF9pdGVyYXRvciBJbnNwZWN0b3JPYmplY3RCYXNlOjpmaW5kKGNvbnN0
IFN0cmluCiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xlYW4oY29u
c3QgU3RyaW5nJiBuYW1lLCBib29sIHZhbHVlKQogewotICAgIHNldFZhbHVlKG5hbWUsIEluc3Bl
Y3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOworICAgIHNldFZhbHVlKG5hbWUsIEluc3Bl
Y3RvclZhbHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6c2V0SW50ZWdlcihjb25zdCBTdHJpbmcmIG5hbWUsIGludCB2YWx1ZSkKIHsKLSAg
ICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKKyAg
ICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlu
bGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldERvdWJsZShjb25zdCBTdHJpbmcmIG5h
bWUsIGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JCYXNpY1Zh
bHVlOjpjcmVhdGUodmFsdWUpKTsKKyAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0b3JWYWx1ZTo6
Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNl
dFN0cmluZyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAg
c2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUpKTsKKyAgICBzZXRW
YWx1ZShuYW1lLCBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiYmIHZhbHVlKQpAQCAtMzcwLDIyICszNDEsMjIgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0QXJyYXkoY29uc3QgU3RyaW5nJiBuYW1lLCBS
ZWZQdHI8SW5zcGVjdG9yQXIKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNo
Qm9vbGVhbihib29sIHZhbHVlKQogewotICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgbV9kYXRhLmFwcGVuZChJbnNwZWN0b3JWYWx1ZTo6
Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVz
aEludGVnZXIoaW50IHZhbHVlKQogewotICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgbV9kYXRhLmFwcGVuZChJbnNwZWN0b3JWYWx1ZTo6
Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVz
aERvdWJsZShkb3VibGUgdmFsdWUpCiB7Ci0gICAgbV9kYXRhLmFwcGVuZChJbnNwZWN0b3JCYXNp
Y1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKKyAgICBtX2RhdGEuYXBwZW5kKEluc3BlY3RvclZhbHVl
OjpjcmVhdGUodmFsdWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9yQXJyYXlCYXNlOjpw
dXNoU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgbV9kYXRhLmFwcGVuZChJbnNw
ZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZSkpOworICAgIG1fZGF0YS5hcHBlbmQoSW5zcGVjdG9y
VmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJh
c2U6OnB1c2hWYWx1ZShSZWZQdHI8SW5zcGVjdG9yVmFsdWU+JiYgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAKaW5kZXggODA3OTgyMDlkY2Q2
MDMxOTMwN2QzODI3MzM5ZTc3NmU3YWFlMmZkNC4uNzkyNDUyODk3MjRkOWVmMjVjY2FjZDBmMmRi
OTdmZGJjY2IxZTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9F
bmNvZGVkVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2Rl
ZFZhbHVlLmNwcApAQCAtNjcsMzcgKzY3LDM3IEBAIGJvb2wgRW5jb2RpbmdUcmFpdHM8VmVjdG9y
PGNoYXI+Pjo6ZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkQnVmZmVyLCBWZWN0CiAK
IHRlbXBsYXRlPD4gRW5jb2RlZFZhbHVlIFNjYWxhckVuY29kaW5nVHJhaXRzPGJvb2w+OjplbmNv
ZGVWYWx1ZShjb25zdCBib29sJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gRW5jb2RlZFZhbHVlKElu
c3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOworICAgIHJldHVybiBFbmNvZGVkVmFs
dWUoSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IEVuY29k
ZWRWYWx1ZSBTY2FsYXJFbmNvZGluZ1RyYWl0czxkb3VibGU+OjplbmNvZGVWYWx1ZShjb25zdCBk
b3VibGUmIHZhbHVlKQogewotICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JW
YWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gRW5jb2RlZFZhbHVlIFNjYWxh
ckVuY29kaW5nVHJhaXRzPGZsb2F0Pjo6ZW5jb2RlVmFsdWUoY29uc3QgZmxvYXQmIHZhbHVlKQog
ewotICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKChk
b3VibGUpdmFsdWUpKTsKKyAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3RvclZhbHVlOjpj
cmVhdGUoKGRvdWJsZSl2YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IEVuY29kZWRWYWx1ZSBTY2Fs
YXJFbmNvZGluZ1RyYWl0czxpbnQzMl90Pjo6ZW5jb2RlVmFsdWUoY29uc3QgaW50MzJfdCYgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVh
dGUoKGRvdWJsZSl2YWx1ZSkpOworICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yVmFs
dWU6OmNyZWF0ZSgoZG91YmxlKXZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gRW5jb2RlZFZhbHVl
IFNjYWxhckVuY29kaW5nVHJhaXRzPGludDY0X3Q+OjplbmNvZGVWYWx1ZShjb25zdCBpbnQ2NF90
JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3RvckJhc2ljVmFsdWU6
OmNyZWF0ZSgoZG91YmxlKXZhbHVlKSk7CisgICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0
b3JWYWx1ZTo6Y3JlYXRlKChkb3VibGUpdmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBFbmNvZGVk
VmFsdWUgU2NhbGFyRW5jb2RpbmdUcmFpdHM8dWludDMyX3Q+OjplbmNvZGVWYWx1ZShjb25zdCB1
aW50MzJfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JCYXNp
Y1ZhbHVlOjpjcmVhdGUoKGRvdWJsZSl2YWx1ZSkpOworICAgIHJldHVybiBFbmNvZGVkVmFsdWUo
SW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSgoZG91YmxlKXZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4g
RW5jb2RlZFZhbHVlIFNjYWxhckVuY29kaW5nVHJhaXRzPHVpbnQ2NF90Pjo6ZW5jb2RlVmFsdWUo
Y29uc3QgdWludDY0X3QmIHZhbHVlKQogewotICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVj
dG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKChkb3VibGUpdmFsdWUpKTsKKyAgICByZXR1cm4gRW5jb2Rl
ZFZhbHVlKEluc3BlY3RvclZhbHVlOjpjcmVhdGUoKGRvdWJsZSl2YWx1ZSkpOwogfQogCiB0ZW1w
bGF0ZTw+IGJvb2wgRW5jb2RlZFZhbHVlOjpjb252ZXJ0VG88Ym9vbD4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmgKaW5kZXggMGQxNWJhYmM3NjJlZWZjMjU0
OWI5ZWQwNGM2NDc3NTQ0MTQ4MjVlZS4uNDkwOTk5ZTI1MDI4MmI2MDk3Zjk3ZjVkYWZkNzRkODM0
NzhjYzI3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVk
VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5o
CkBAIC01OSwxMiArNTksMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEVuY29kZWRWYWx1ZSBj
cmVhdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBF
bmNvZGVkVmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZSkpOwor
ICAgICAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OmNy
ZWF0ZSh2YWx1ZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBFbmNvZGVkVmFsdWUgY3JlYXRlU3Ry
aW5nKGNvbnN0IGNoYXIqIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEVuY29kZWRWYWx1
ZShJbnNwZWN0b3I6Okluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlKSk7CisgICAgICAgIHJl
dHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHZhbHVl
KSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiYzhmYWUw
OTQ2MjJlMjFkNWY3Yjc5ZmQ3MGEwMWMxODk0MTcwMjgzLi5iZDkwYjMyMjVhZDc3MGJmYThhNWRi
YzdlNTNjYTQxOGNlNjUxYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHB1YmxpYzoKICAg
ICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHJvd0xpc3QtPnZhbHVlcygpKSB7CiAgICAgICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGluc3BlY3RvclZhbHVlOwogICAgICAgICAgICAgc3dp
dGNoICh2YWx1ZS50eXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6OlN0cmluZ1Zh
bHVlOiBpbnNwZWN0b3JWYWx1ZSA9IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlLnN0cmlu
ZygpKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdW1iZXJWYWx1ZTogaW5z
cGVjdG9yVmFsdWUgPSBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUubnVtYmVyKCkp
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6OlN0cmluZ1ZhbHVlOiBpbnNwZWN0
b3JWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUodmFsdWUuc3RyaW5nKCkpOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bWJlclZhbHVlOiBpbnNwZWN0b3JWYWx1ZSA9
IEluc3BlY3RvclZhbHVlOjpjcmVhdGUodmFsdWUubnVtYmVyKCkpOyBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgU1FMVmFsdWU6Ok51bGxWYWx1ZTogaW5zcGVjdG9yVmFsdWUgPSBJbnNwZWN0b3JW
YWx1ZTo6bnVsbCgpOyBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276172</attachid>
            <date>2016-04-11 13:49:51 -0700</date>
            <delta_ts>2016-04-11 14:00:31 -0700</delta_ts>
            <desc>Proposed Fix (v2)</desc>
            <filename>bug-156407-20160411134959.patch</filename>
            <type>text/plain</type>
            <size>33667</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NmUxMmEyMTRhOTg5ODBlZTU3MDhiNjhlNjAxY2EzNWVjZTQ4NTM1Li42ZjgzMTZhNTU5MDYyM2Yw
NDk5ODBjMTM3NDc1OGM2NmMwM2NmODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxNi0wNC0xMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIEluc3BlY3RvckJhc2ljVmFsdWUgYW5k
IEluc3BlY3RvclN0cmluZyBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NjI3
NjU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZXJlJ3Mgbm8gcG9pbnQgaGF2aW5nIHRoZXNlIHN1YmNsYXNzZXMgYXMgdGhleSBkb24ndCBzYXZl
IGFueSBzcGFjZS4KKyAgICAgICAgQWRkIGEgU3RyaW5nSW1wbCB0byB0aGUgdW5pb24gYW5kIG1l
cmdlIHNvbWUgaW1wbGVtZW50YXRpb25zIG9mIHdyaXRlSlNPTi4KKworICAgICAgICBSZW5hbWUg
bV9kYXRhIHRvIG1fbWFwIGFuZCBleHBsaWNpdGx5IG5hbWUgdGhlIHVuaW9uIGFzIEluc3BlY3Rv
clZhbHVlOjptX3ZhbHVlLgorICAgICAgICBJZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgYW5kIHRo
ZSBzdHJpbmcgaXMgbm90IGVtcHR5IG9yIG51bGwgKGkuZS4sIGl0IGhhcyBhCisgICAgICAgIFN0
cmluZ0ltcGwpLCB0aGVuIHdlIG5lZWQgdG8gcmVmKCkgYW5kIGRlcmVmKCkgdGhlIHN0cmluZyBh
cyB0aGUgSW5zcGVjdG9yVmFsdWUKKyAgICAgICAgaXMgY3JlYXRlZCBvciBkZXN0cm95ZWQuCisK
KyAgICAgICAgTW92ZSB1c2VzIG9mIHRoZSBzdWJjbGFzcyB0byBJbnNwZWN0b3JWYWx1ZSBhbmQg
ZGVsZXRlIHJlZHVuZGFudCBtZXRob2RzLgorICAgICAgICBOb3csIG1vc3QgSW5zcGVjdG9yVmFs
dWUgbWV0aG9kcyBhcmUgbm9uLXZpcnR1YWwgc28gdGhleSBjYW4gYmUgdGVtcGxhdGVkLgorCisg
ICAgICAgICogYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoRGVwcmVjYXRlZDo6
anNUb0luc3BlY3RvclZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRC
YXNlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQ2Fs
bCk6CisgICAgICAgIERvbid0IHVzZWQgZGVsZXRlZCBzdWJjbGFzc2VzLgorCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlOjpudWxsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjphc1ZhbHVlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OmFzQm9vbGVhbik6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjphc0RvdWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlOjphc0ludGVnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZTo6YXNTdHJpbmcpOgorICAgICAgICBUaGVzZSBvbmx5IG5lZWQgb25lIGltcGxlbWVu
dGF0aW9uIG5vdy4KKworICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6d3JpdGVK
U09OKToKKyAgICAgICAgU3RpbGwgYSB2aXJ0dWFsIG1ldGhvZCBzaW5jZSBPYmplY3QgYW5kIEFy
cmF5IG5lZWQgdGhlaXIgbWVtYmVycy4KKworICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3RCYXNlOjpJbnNwZWN0b3JPYmplY3RCYXNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFzaWNWYWx1ZTo6YXNCb29sZWFuKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNEb3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0ludGVnZXIpOiBEZWxldGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYXNpY1ZhbHVlOjp3cml0ZUpTT04pOiBEZWxldGVkLgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTdHJpbmc6OmFzU3RyaW5nKTogRGVsZXRlZC4K
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yU3RyaW5nOjp3cml0ZUpTT04pOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSk6IERlbGV0
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OmZpbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRCb29sZWFuKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0SW50ZWdlcik6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdEJhc2U6OnNldERvdWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdEJhc2U6OnNldFN0cmluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdEJhc2U6OnNldFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6c2V0T2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
QmFzZTo6c2V0QXJyYXkpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheUJhc2U6
OnB1c2hCb29sZWFuKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpw
dXNoSW50ZWdlcik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVz
aERvdWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaFN0
cmluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaFZhbHVl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoT2JqZWN0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQXJyYXkpOgorICAg
ICAgICBVc2UgbmV3IGZhY3RvcnkgbWV0aG9kcy4KKworICAgICAgICAqIHJlcGxheS9FbmNvZGVk
VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpTY2FsYXJFbmNvZGluZ1RyYWl0czxib29sPjo6ZW5j
b2RlVmFsdWUpOgorICAgICAgICAoSlNDOjpTY2FsYXJFbmNvZGluZ1RyYWl0czxkb3VibGU+Ojpl
bmNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6OlNjYWxhckVuY29kaW5nVHJhaXRzPGZsb2F0Pjo6
ZW5jb2RlVmFsdWUpOgorICAgICAgICAoSlNDOjpTY2FsYXJFbmNvZGluZ1RyYWl0czxpbnQzMl90
Pjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAoSlNDOjpTY2FsYXJFbmNvZGluZ1RyYWl0czxpbnQ2
NF90Pjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAoSlNDOjpTY2FsYXJFbmNvZGluZ1RyYWl0czx1
aW50MzJfdD46OmVuY29kZVZhbHVlKToKKyAgICAgICAgKEpTQzo6U2NhbGFyRW5jb2RpbmdUcmFp
dHM8dWludDY0X3Q+OjplbmNvZGVWYWx1ZSk6CisgICAgICAgICogcmVwbGF5L0VuY29kZWRWYWx1
ZS5oOgorICAgICAgICBVc2UgbmV3IGZhY3RvcnkgbWV0aG9kcy4KKwogMjAxNi0wNC0xMCAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIGhvdyB3ZSBy
ZWFzb24gYWJvdXQgdGhlIHN0YXRlcyBvZiBBY2Nlc3NDYXNlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJhZmY1
ZjQ0ODQxN2E3NWY0ZDU0OGYxODIxYWExNmRhZTg1NTRjNzQuLjhlZjg5YTA0MWIwM2MxMWUxZWY4
Y2RjM2Q0MjU2OTMzZDhiMjJkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0w
NC0xMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBnZXQgcmlkIG9mIEluc3BlY3RvckJhc2ljVmFsdWUgYW5kIEluc3BlY3RvclN0cmluZyBz
dWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY0MDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NjI3NjU5PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwOiBEb24ndCB1c2UgZGVsZXRlZCBzdWJjbGFzc2VzLgorCiAyMDE2
LTA0LTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NVG9r
ZW5MaXN0LmNvbnRhaW5zKCkgc2hvdWxkIG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggN2FjNzU2MTgzMGM1NzE3OWRjMTBi
ZDc1NTBjZjBkZjNlODVmYmE1Mi4uM2VmMGJjOWE3Mjg3OTE0NGNlNTYyYzc3ZDE1MmY4YWVjM2I1
NDY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUu
Y3BwCkBAIC0xMTIsMTMgKzExMiwxMyBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBq
c1RvSW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgSlNWYWx1ZQogICAgIGlm
ICh2YWx1ZS5pc051bGwoKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4g
SW5zcGVjdG9yVmFsdWU6Om51bGwoKTsKICAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCi0gICAg
ICAgIHJldHVybiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUuYXNCb29sZWFuKCkp
OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZS5hc0Jvb2xlYW4o
KSk7CiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkgJiYgdmFsdWUuaXNEb3VibGUoKSkKLSAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZS5hc051bWJlcigpKTsK
KyAgICAgICAgcmV0dXJuIEluc3BlY3RvclZhbHVlOjpjcmVhdGUodmFsdWUuYXNOdW1iZXIoKSk7
CiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkgJiYgdmFsdWUuaXNNYWNoaW5lSW50KCkpCi0gICAg
ICAgIHJldHVybiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZS5hc01hY2hpbmVJbnQoKSkpOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlLmFzTWFjaGluZUludCgpKSk7CiAgICAgaWYgKHZh
bHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2
YWx1ZS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvclZh
bHVlOjpjcmVhdGUodmFsdWUuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlKSk7CiAKICAgICBpZiAodmFs
dWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAoaXNKU0FycmF5KHZhbHVlKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2Uu
Y3BwCmluZGV4IDI3ZWM4YTE2NTMyYTIzYWQxODU3YmYyZTlkZDNjNTg5ZjViMzMxODguLmQ5YmJh
ODdmOGM5NTM4MDBmNTFjZTY2YTU4N2U4OWMwZmIzNjk0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTk5
LDkgKzk5LDkgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VDYWxsKERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlAKICAgICBpZiAoIWhhZEV4Y2VwdGlv
bikgewogICAgICAgICAqcmVzdWx0ID0gcmVzdWx0VmFsdWUudG9JbnNwZWN0b3JWYWx1ZShtX2lu
amVjdGVkU2NyaXB0T2JqZWN0LnNjcmlwdFN0YXRlKCkpOwogICAgICAgICBpZiAoISpyZXN1bHQp
Ci0gICAgICAgICAgICAqcmVzdWx0ID0gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUoU3RyaW5nOjpm
b3JtYXQoIk9iamVjdCBoYXMgdG9vIGxvbmcgcmVmZXJlbmNlIGNoYWluIChtdXN0IG5vdCBiZSBs
b25nZXIgdGhhbiAlZCkiLCBJbnNwZWN0b3JWYWx1ZTo6bWF4RGVwdGgpKTsKKyAgICAgICAgICAg
ICpyZXN1bHQgPSBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJPYmplY3Qg
aGFzIHRvbyBsb25nIHJlZmVyZW5jZSBjaGFpbiAobXVzdCBub3QgYmUgbG9uZ2VyIHRoYW4gJWQp
IiwgSW5zcGVjdG9yVmFsdWU6Om1heERlcHRoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgICpyZXN1
bHQgPSBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSgiRXhjZXB0aW9uIHdoaWxlIG1ha2luZyBhIGNh
bGwuIik7CisgICAgICAgICpyZXN1bHQgPSBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKCJFeGNlcHRp
b24gd2hpbGUgbWFraW5nIGEgY2FsbC4iKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6
Om1ha2VFdmFsQ2FsbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCYgZnVuY3Rpb24sIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0Piogb2JqZWN0UmVzdWx0LCBQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJv
d24sIFByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAppbmRl
eCA1NDdiMTgxMzM2ZjRlZDBkMjQ5MTIxM2I5YTlhNzQxNmNlMTMzMjQ4Li5jNWMxMTYzNGJmNjI4
MTUyNDUzNzNmMzBjNjE0NWYyZmEzOTFjMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC0zNjMsMTcgKzM2MywxNyBA
QCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGJ1aWxkVmFsdWUoY29uc3QgVUNoYXIqIHN0YXJ0LCBj
b25zdCBVQ2hhciogZW5kLCBjb25zdCBVQwogICAgICAgICByZXN1bHQgPSBJbnNwZWN0b3JWYWx1
ZTo6bnVsbCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJPT0xfVFJVRToKLSAgICAgICAg
cmVzdWx0ID0gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHRydWUpOworICAgICAgICByZXN1
bHQgPSBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHRydWUpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEJPT0xfRkFMU0U6Ci0gICAgICAgIHJlc3VsdCA9IEluc3BlY3RvckJhc2ljVmFsdWU6OmNy
ZWF0ZShmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoZmFs
c2UpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBib29sIG9r
OwogICAgICAgICBkb3VibGUgdmFsdWUgPSBjaGFyYWN0ZXJzVG9Eb3VibGUodG9rZW5TdGFydCwg
dG9rZW5FbmQgLSB0b2tlblN0YXJ0LCAmb2spOwogICAgICAgICBpZiAoIW9rKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJlc3VsdCA9IEluc3BlY3RvckJhc2ljVmFsdWU6
OmNyZWF0ZSh2YWx1ZSk7CisgICAgICAgIHJlc3VsdCA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUo
dmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKQEAgLTM4
MSw3ICszODEsNyBAQCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGJ1aWxkVmFsdWUoY29uc3QgVUNo
YXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBjb25zdCBVQwogICAgICAgICBib29sIG9rID0g
ZGVjb2RlU3RyaW5nKHRva2VuU3RhcnQgKyAxLCB0b2tlbkVuZCAtIDEsIHZhbHVlKTsKICAgICAg
ICAgaWYgKCFvaykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXN1bHQg
PSBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZSk7CisgICAgICAgIHJlc3VsdCA9IEluc3Bl
Y3RvclZhbHVlOjpjcmVhdGUodmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBBUlJBWV9CRUdJTjogewpAQCAtNDk4LDU5ICs0OTgsMzkgQEAgaW5saW5lIHZvaWQgZG91Ymxl
UXVvdGVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIsIFN0cmluZ0J1aWxkZXImIGRzdCkKIAogfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzQm9vbGVhbihi
b29sJikgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yVmFs
dWU6OmFzRG91YmxlKGRvdWJsZSYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIEluc3BlY3RvclZhbHVlOjphc0RvdWJsZShmbG9hdCYpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIoaW50JikgY29uc3QK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdl
cih1bnNpZ25lZCYpIGNvbnN0CitSZWY8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvclZhbHVlOjpu
dWxsKCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5z
cGVjdG9yVmFsdWUpOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIobG9uZyYp
IGNvbnN0CitSZWY8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoYm9vbCB2
YWx1ZSkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5z
cGVjdG9yVmFsdWUodmFsdWUpKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNJbnRlZ2Vy
KGxvbmcgbG9uZyYpIGNvbnN0CitSZWY8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvclZhbHVlOjpj
cmVhdGUoaW50IHZhbHVlKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbnNwZWN0b3JWYWx1ZSh2YWx1ZSkpOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVl
Ojphc0ludGVnZXIodW5zaWduZWQgbG9uZyYpIGNvbnN0CitSZWY8SW5zcGVjdG9yVmFsdWU+IElu
c3BlY3RvclZhbHVlOjpjcmVhdGUoZG91YmxlIHZhbHVlKQogewotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JWYWx1ZSh2YWx1ZSkpOwogfQogCi1i
b29sIEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIodW5zaWduZWQgbG9uZyBsb25nJikgY29uc3QK
K1JlZjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IHZhbHVlKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bnNwZWN0b3JWYWx1ZSh2YWx1ZSkpOwogfQogCi1ib29sIEluc3BlY3RvclZhbHVlOjphc1N0cmlu
ZyhTdHJpbmcmKSBjb25zdAorUmVmPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JWYWx1ZTo6Y3Jl
YXRlKGNvbnN0IGNoYXIqIHZhbHVlKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JWYWx1ZSh2YWx1ZSkpOwogfQogCi1ib29sIEluc3BlY3Rv
clZhbHVlOjphc1ZhbHVlKFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mIG91dHB1dCkKK2Jvb2wgSW5z
cGVjdG9yVmFsdWU6OmFzVmFsdWUoUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+ICYg
dmFsdWUpCiB7Ci0gICAgb3V0cHV0ID0gdGhpczsKKyAgICB2YWx1ZSA9IHRoaXM7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTU4NywxMTAgKzU2NywxMTkgQEAgU3RyaW5nIEluc3BlY3RvclZh
bHVlOjp0b0pTT05TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1
dCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV90eXBlID09IFR5cGU6Ok51bGwpOwotCi0gICAgb3V0
cHV0LmFwcGVuZExpdGVyYWwoIm51bGwiKTsKLX0KLQotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVl
Ojphc0Jvb2xlYW4oYm9vbCYgb3V0cHV0KSBjb25zdAorYm9vbCBJbnNwZWN0b3JWYWx1ZTo6YXNC
b29sZWFuKGJvb2wmIG91dHB1dCkgY29uc3QKIHsKICAgICBpZiAodHlwZSgpICE9IFR5cGU6OkJv
b2xlYW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG91dHB1dCA9IG1fYm9vbGVhblZh
bHVlOworICAgIG91dHB1dCA9IG1fdmFsdWUuYm9vbGVhbjsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjphc0RvdWJsZShkb3VibGUmIG91dHB1dCkgY29u
c3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzRG91YmxlKGRvdWJsZSYgb3V0cHV0KSBjb25zdAog
ewogICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6RG91YmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBvdXRwdXQgPSBtX2RvdWJsZVZhbHVlOworICAgIG91dHB1dCA9IG1fdmFsdWUubnVt
YmVyOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEluc3BlY3RvckJhc2ljVmFsdWU6OmFz
RG91YmxlKGZsb2F0JiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc0RvdWJs
ZShmbG9hdCYgb3V0cHV0KSBjb25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6RG91Ymxl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBvdXRwdXQgPSBzdGF0aWNfY2FzdDxmbG9h
dD4obV9kb3VibGVWYWx1ZSk7CisgICAgb3V0cHV0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdmFs
dWUubnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1Zh
bHVlOjphc0ludGVnZXIoaW50JiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjph
c0ludGVnZXIoaW50JiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpJ
bnRlZ2VyICYmIHR5cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PGludD4obV9kb3VibGVWYWx1ZSk7CisgICAgb3V0
cHV0ID0gc3RhdGljX2Nhc3Q8aW50PihtX3ZhbHVlLm51bWJlcik7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNJbnRlZ2VyKHVuc2lnbmVkJiBvdXRw
dXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjphc0ludGVnZXIodW5zaWduZWQmIG91dHB1
dCkgY29uc3QKIHsKICAgICBpZiAodHlwZSgpICE9IFR5cGU6OkludGVnZXIgJiYgdHlwZSgpICE9
IFR5cGU6OkRvdWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgb3V0cHV0ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fZG91YmxlVmFsdWUpOworICAgIG91dHB1dCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX3ZhbHVlLm51bWJlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNJbnRlZ2VyKGxvbmcmIG91dHB1dCkgY29uc3QKK2Jv
b2wgSW5zcGVjdG9yVmFsdWU6OmFzSW50ZWdlcihsb25nJiBvdXRwdXQpIGNvbnN0CiB7CiAgICAg
aWYgKHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyICYmIHR5cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PGxvbmc+KG1f
ZG91YmxlVmFsdWUpOworICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PGxvbmc+KG1fdmFsdWUubnVt
YmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjph
c0ludGVnZXIobG9uZyBsb25nJiBvdXRwdXQpIGNvbnN0Citib29sIEluc3BlY3RvclZhbHVlOjph
c0ludGVnZXIobG9uZyBsb25nJiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBU
eXBlOjpJbnRlZ2VyICYmIHR5cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9kb3VibGVWYWx1
ZSk7CisgICAgb3V0cHV0ID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX3ZhbHVlLm51bWJlcik7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6YXNJbnRl
Z2VyKHVuc2lnbmVkIGxvbmcmIG91dHB1dCkgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFz
SW50ZWdlcih1bnNpZ25lZCBsb25nJiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAh
PSBUeXBlOjpJbnRlZ2VyICYmIHR5cGUoKSAhPSBUeXBlOjpEb3VibGUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fZG91
YmxlVmFsdWUpOworICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fdmFs
dWUubnVtYmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYXNpY1Zh
bHVlOjphc0ludGVnZXIodW5zaWduZWQgbG9uZyBsb25nJiBvdXRwdXQpIGNvbnN0Citib29sIElu
c3BlY3RvclZhbHVlOjphc0ludGVnZXIodW5zaWduZWQgbG9uZyBsb25nJiBvdXRwdXQpIGNvbnN0
CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyICYmIHR5cGUoKSAhPSBUeXBlOjpE
b3VibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG91dHB1dCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9kb3VibGVWYWx1ZSk7CisgICAgb3V0cHV0ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihtX3ZhbHVlLm51bWJlcik7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxk
ZXImIG91dHB1dCkgY29uc3QKK2Jvb2wgSW5zcGVjdG9yVmFsdWU6OmFzU3RyaW5nKFN0cmluZyYg
b3V0cHV0KSBjb25zdAogewotICAgIEFTU0VSVCh0eXBlKCkgPT0gVHlwZTo6Qm9vbGVhbiB8fCB0
eXBlKCkgPT0gVHlwZTo6RG91YmxlIHx8IHR5cGUoKSA9PSBUeXBlOjpJbnRlZ2VyKTsKKyAgICBp
ZiAodHlwZSgpICE9IFR5cGU6OlN0cmluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKHR5cGUoKSA9PSBUeXBlOjpCb29sZWFuKSB7Ci0gICAgICAgIGlmIChtX2Jvb2xlYW5WYWx1
ZSkKKyAgICBvdXRwdXQgPSBtX3ZhbHVlLnN0cmluZzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBJbnNwZWN0b3JWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29u
c3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6TnVsbDoKKyAgICAg
ICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoIm51bGwiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUeXBlOjpCb29sZWFuOgorICAgICAgICBpZiAobV92YWx1ZS5ib29sZWFuKQogICAgICAgICAg
ICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoInRydWUiKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoImZhbHNlIik7Ci0gICAgfSBlbHNlIGlmICh0eXBlKCkg
PT0gVHlwZTo6RG91YmxlIHx8IHR5cGUoKSA9PSBUeXBlOjpJbnRlZ2VyKSB7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVHlwZTo6U3RyaW5nOgorICAgICAgICBkb3VibGVRdW90ZVN0cmluZyht
X3ZhbHVlLnN0cmluZywgb3V0cHV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpE
b3VibGU6CisgICAgY2FzZSBUeXBlOjpJbnRlZ2VyOiB7CiAgICAgICAgIE51bWJlclRvTFN0cmlu
Z0J1ZmZlciBidWZmZXI7Ci0gICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShtX2RvdWJsZVZhbHVl
KSkgeworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobV92YWx1ZS5udW1iZXIpKSB7CiAgICAg
ICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIERlY2ltYWxOdW1iZXIgZGVjaW1hbCA9IG1fZG91YmxlVmFs
dWU7CisgICAgICAgIERlY2ltYWxOdW1iZXIgZGVjaW1hbCA9IG1fdmFsdWUubnVtYmVyOwogICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwogICAgICAgICBpZiAoZGVjaW1hbC5idWZmZXJMZW5n
dGhGb3JTdHJpbmdEZWNpbWFsKCkgPiBXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKSB7
CiAgICAgICAgICAgICAvLyBOb3QgZW5vdWdoIHJvb20gZm9yIGRlY2ltYWwuIFVzZSBleHBvbmVu
dGlhbCBmb3JtYXQuCkBAIC03MDMsMTkgKzY5MiwxMSBAQCB2b2lkIEluc3BlY3RvckJhc2ljVmFs
dWU6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgbGVuZ3RoID0gZGVjaW1hbC50b1N0cmluZ0RlY2ltYWwoYnVmZmVyLCBX
VEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKTsKICAgICAgICAgb3V0cHV0LmFwcGVuZChi
dWZmZXIsIGxlbmd0aCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci19Ci0KLWJvb2wgSW5zcGVjdG9yU3Ry
aW5nOjphc1N0cmluZyhTdHJpbmcmIG91dHB1dCkgY29uc3QKLXsKLSAgICBvdXRwdXQgPSBtX3N0
cmluZ1ZhbHVlOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEluc3BlY3RvclN0cmluZzo6
d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3QKLXsKLSAgICBBU1NFUlQodHlw
ZSgpID09IFR5cGU6OlN0cmluZyk7Ci0gICAgZG91YmxlUXVvdGVTdHJpbmcobV9zdHJpbmdWYWx1
ZSwgb3V0cHV0KTsKIH0KIAogSW5zcGVjdG9yT2JqZWN0QmFzZTo6fkluc3BlY3Rvck9iamVjdEJh
c2UoKQpAQCAtNzc1LDggKzc1Niw4IEBAIGJvb2wgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0QXJy
YXkoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBvCiAKIGJvb2wg
SW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+JiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAgRGljdGlvbmFyeTo6Y29uc3Rf
aXRlcmF0b3IgZmluZFJlc3VsdCA9IG1fZGF0YS5maW5kKG5hbWUpOwotICAgIGlmIChmaW5kUmVz
dWx0ID09IG1fZGF0YS5lbmQoKSkKKyAgICBEaWN0aW9uYXJ5Ojpjb25zdF9pdGVyYXRvciBmaW5k
UmVzdWx0ID0gbV9tYXAuZmluZChuYW1lKTsKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBtX21hcC5l
bmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgb3V0cHV0ID0gZmluZFJlc3VsdC0+
dmFsdWU7CkBAIC03ODUsNyArNzY2LDcgQEAgYm9vbCBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXRW
YWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mIG8KIAogdm9p
ZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAg
IG1fZGF0YS5yZW1vdmUobmFtZSk7CisgICAgbV9tYXAucmVtb3ZlKG5hbWUpOwogICAgIG1fb3Jk
ZXIucmVtb3ZlRmlyc3QobmFtZSk7CiB9CiAKQEAgLTc5Myw4ICs3NzQsOCBAQCB2b2lkIEluc3Bl
Y3Rvck9iamVjdEJhc2U6OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0CiB7
CiAgICAgb3V0cHV0LmFwcGVuZCgneycpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9v
cmRlci5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX2RhdGEuZmlu
ZChtX29yZGVyW2ldKTsKLSAgICAgICAgQVNTRVJUKGZpbmRSZXN1bHQgIT0gbV9kYXRhLmVuZCgp
KTsKKyAgICAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChtX29yZGVyW2ldKTsKKyAg
ICAgICAgQVNTRVJUKGZpbmRSZXN1bHQgIT0gbV9tYXAuZW5kKCkpOwogICAgICAgICBpZiAoaSkK
ICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoJywnKTsKICAgICAgICAgZG91YmxlUXVvdGVTdHJp
bmcoZmluZFJlc3VsdC0+a2V5LCBvdXRwdXQpOwpAQCAtODA1LDggKzc4Niw4IEBAIHZvaWQgSW5z
cGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3QK
IH0KIAogSW5zcGVjdG9yT2JqZWN0QmFzZTo6SW5zcGVjdG9yT2JqZWN0QmFzZSgpCi0gICAgOiBJ
bnNwZWN0b3JWYWx1ZShUeXBlOjpPYmplY3QpCi0gICAgLCBtX2RhdGEoKQorICAgIDogSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZShUeXBlOjpPYmplY3QpCisgICAgLCBtX21hcCgpCiAgICAgLCBt
X29yZGVyKCkKIHsKIH0KQEAgLTgyNSw4ICs4MDYsOCBAQCBib29sIEluc3BlY3RvckFycmF5QmFz
ZTo6YXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBvdXRwdXQpCiB2b2lkIEluc3BlY3Rv
ckFycmF5QmFzZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3QKIHsKICAg
ICBvdXRwdXQuYXBwZW5kKCdbJyk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZh
bHVlPj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhLmJlZ2luKCk7IGl0ICE9IG1fZGF0YS5l
bmQoKTsgKytpdCkgewotICAgICAgICBpZiAoaXQgIT0gbV9kYXRhLmJlZ2luKCkpCisgICAgZm9y
IChWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9t
YXAuYmVnaW4oKTsgaXQgIT0gbV9tYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0ICE9
IG1fbWFwLmJlZ2luKCkpCiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcsJyk7CiAgICAgICAg
ICgqaXQpLT53cml0ZUpTT04ob3V0cHV0KTsKICAgICB9CkBAIC04MzUsMTQgKzgxNiwxNCBAQCB2
b2lkIEluc3BlY3RvckFycmF5QmFzZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkg
Y29uc3QKIAogSW5zcGVjdG9yQXJyYXlCYXNlOjpJbnNwZWN0b3JBcnJheUJhc2UoKQogICAgIDog
SW5zcGVjdG9yVmFsdWUoVHlwZTo6QXJyYXkpCi0gICAgLCBtX2RhdGEoKQorICAgICwgbV9tYXAo
KQogewogfQogCiBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckFycmF5QmFzZTo6Z2V0
KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihpbmRleCA8IG1fZGF0YS5zaXplKCkpOwotICAgIHJldHVybiBtX2RhdGFbaW5kZXhdOwor
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgbV9tYXAuc2l6ZSgp
KTsKKyAgICByZXR1cm4gbV9tYXBbaW5kZXhdOwogfQogCiBSZWY8SW5zcGVjdG9yT2JqZWN0PiBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpCkBAIC04NTUsMzQgKzgzNiw0IEBAIFJlZjxJbnNwZWN0
b3JBcnJheT4gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5zcGVjdG9yQXJyYXkpOwogfQogCi1SZWY8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvclZh
bHVlOjpudWxsKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JWYWx1ZSk7
Ci19Ci0KLVJlZjxJbnNwZWN0b3JTdHJpbmc+IEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yU3Ry
aW5nKHZhbHVlKSk7Ci19Ci0KLVJlZjxJbnNwZWN0b3JTdHJpbmc+IEluc3BlY3RvclN0cmluZzo6
Y3JlYXRlKGNvbnN0IGNoYXIqIHZhbHVlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c3BlY3RvclN0cmluZyh2YWx1ZSkpOwotfQotCi1SZWY8SW5zcGVjdG9yQmFzaWNWYWx1ZT4gSW5z
cGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGJvb2wgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW5zcGVjdG9yQmFzaWNWYWx1ZSh2YWx1ZSkpOwotfQotCi1SZWY8SW5zcGVjdG9y
QmFzaWNWYWx1ZT4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKGludCB2YWx1ZSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JCYXNpY1ZhbHVlKHZhbHVlKSk7Ci19Ci0K
LVJlZjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUoZG91
YmxlIHZhbHVlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckJhc2ljVmFs
dWUodmFsdWUpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBjMTRlZmE1
YjEwMjIwODYyODRmOWVlZTczM2E0NjM2MTA4Y2NhYWY3Li5kOTZkMTM5OGQzYWFkYjgxMTNjMzVm
ZGUyMjA0MWJkNTJjZTU1NjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTUxLDExICs1MSwzMCBAQCBjbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBJbnNwZWN0b3JWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclZh
bHVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhEZXB0aCA9IDEwMDA7CiAK
LSAgICBJbnNwZWN0b3JWYWx1ZSgpCi0gICAgICAgIDogbV90eXBlKFR5cGU6Ok51bGwpIHsgfQot
ICAgIHZpcnR1YWwgfkluc3BlY3RvclZhbHVlKCkgeyB9CisgICAgdmlydHVhbCB+SW5zcGVjdG9y
VmFsdWUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAgY2FzZSBU
eXBlOjpOdWxsOgorICAgICAgICBjYXNlIFR5cGU6OkJvb2xlYW46CisgICAgICAgIGNhc2UgVHlw
ZTo6RG91YmxlOgorICAgICAgICBjYXNlIFR5cGU6OkludGVnZXI6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUeXBlOjpTdHJpbmc6CisgICAgICAgICAgICBpZiAobV92YWx1ZS5z
dHJpbmcpCisgICAgICAgICAgICAgICAgbV92YWx1ZS5zdHJpbmctPmRlcmVmKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlOjpPYmplY3Q6CisgICAgICAgIGNhc2UgVHlw
ZTo6QXJyYXk6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHN0
YXRpYyBSZWY8SW5zcGVjdG9yVmFsdWU+IG51bGwoKTsKKyAgICBzdGF0aWMgUmVmPEluc3BlY3Rv
clZhbHVlPiBjcmVhdGUoYm9vbCk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JWYWx1ZT4gY3Jl
YXRlKGludCk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JWYWx1ZT4gY3JlYXRlKGRvdWJsZSk7
CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yVmFsdWU+IGNyZWF0ZShjb25zdCBjaGFyKik7CiAKICAg
ICBlbnVtIGNsYXNzIFR5cGUgewogICAgICAgICBOdWxsID0gMCwKQEAgLTY0LDI0ICs4MywyNCBA
QCBwdWJsaWM6CiAgICAgICAgIEludGVnZXIsCiAgICAgICAgIFN0cmluZywKICAgICAgICAgT2Jq
ZWN0LAotICAgICAgICBBcnJheQorICAgICAgICBBcnJheSwKICAgICB9OwogCiAgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KICAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpOdWxsOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXNC
b29sZWFuKGJvb2wmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKGludCYpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc0ludGVnZXIodW5zaWduZWQmKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKGxvbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNJ
bnRlZ2VyKGxvbmcgbG9uZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc0ludGVnZXIodW5z
aWduZWQgbG9uZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc0ludGVnZXIodW5zaWduZWQg
bG9uZyBsb25nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFzRG91YmxlKGRvdWJsZSYpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc0RvdWJsZShmbG9hdCYpIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXNWYWx1
ZShSZWZQdHI8SW5zcGVjdG9yVmFsdWU+Jik7CisgICAgYm9vbCBhc0Jvb2xlYW4oYm9vbCYpIGNv
bnN0OworICAgIGJvb2wgYXNJbnRlZ2VyKGludCYpIGNvbnN0OworICAgIGJvb2wgYXNJbnRlZ2Vy
KHVuc2lnbmVkJikgY29uc3Q7CisgICAgYm9vbCBhc0ludGVnZXIobG9uZyYpIGNvbnN0OworICAg
IGJvb2wgYXNJbnRlZ2VyKGxvbmcgbG9uZyYpIGNvbnN0OworICAgIGJvb2wgYXNJbnRlZ2VyKHVu
c2lnbmVkIGxvbmcmKSBjb25zdDsKKyAgICBib29sIGFzSW50ZWdlcih1bnNpZ25lZCBsb25nIGxv
bmcmKSBjb25zdDsKKyAgICBib29sIGFzRG91YmxlKGRvdWJsZSYpIGNvbnN0OworICAgIGJvb2wg
YXNEb3VibGUoZmxvYXQmKSBjb25zdDsKKyAgICBib29sIGFzU3RyaW5nKFN0cmluZyYpIGNvbnN0
OworICAgIGJvb2wgYXNWYWx1ZShSZWZQdHI8SW5zcGVjdG9yVmFsdWU+Jik7CisKICAgICB2aXJ0
dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mKTsKICAgICB2aXJ0dWFs
IGJvb2wgYXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7CiAKQEAgLTkxLDcxICsxMTAs
NTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYg
b3V0cHV0KSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEluc3BlY3RvclZhbHVl
KFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9Ci0KLXByaXZhdGU6Ci0gICAgVHlwZSBtX3R5
cGU7Ci19OwotCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JCYXNpY1ZhbHVlIDog
cHVibGljIEluc3BlY3RvclZhbHVlIHsKLXB1YmxpYzoKLQotICAgIHN0YXRpYyBSZWY8SW5zcGVj
dG9yQmFzaWNWYWx1ZT4gY3JlYXRlKGJvb2wpOwotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQmFz
aWNWYWx1ZT4gY3JlYXRlKGludCk7Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JCYXNpY1ZhbHVl
PiBjcmVhdGUoZG91YmxlKTsKLQotICAgIGJvb2wgYXNCb29sZWFuKGJvb2wmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICAvLyBOdW1iZXJzIGZyb20gdGhlIGZyb250ZW5kIGFyZSBhbHdheXMgcGFyc2Vk
IGFzIGRvdWJsZXMsIHNvIHdlIGFsbG93Ci0gICAgLy8gY2xpZW50cyB0byBjb252ZXJ0IHRvIGlu
dGVncmFsIHZhbHVlcyB3aXRoIHRoaXMgZnVuY3Rpb24uCi0gICAgYm9vbCBhc0ludGVnZXIoaW50
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhc0ludGVnZXIodW5zaWduZWQmKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGFzSW50ZWdlcihsb25nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBhc0ludGVnZXIobG9uZyBsb25nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhc0lu
dGVnZXIodW5zaWduZWQgbG9uZyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgYXNJbnRlZ2Vy
KHVuc2lnbmVkIGxvbmcgbG9uZyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgYXNEb3VibGUo
ZG91YmxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhc0RvdWJsZShmbG9hdCYpIGNvbnN0
IG92ZXJyaWRlOwotCi0gICAgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBj
b25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNpY1Zh
bHVlKGJvb2wgdmFsdWUpCi0gICAgICAgIDogSW5zcGVjdG9yVmFsdWUoVHlwZTo6Qm9vbGVhbikK
LSAgICAgICAgLCBtX2Jvb2xlYW5WYWx1ZSh2YWx1ZSkgeyB9CisgICAgSW5zcGVjdG9yVmFsdWUo
KQorICAgICAgICA6IG1fdHlwZShUeXBlOjpOdWxsKSB7IH0KIAotICAgIGV4cGxpY2l0IEluc3Bl
Y3RvckJhc2ljVmFsdWUoaW50IHZhbHVlKQotICAgICAgICA6IEluc3BlY3RvclZhbHVlKFR5cGU6
OkludGVnZXIpCi0gICAgICAgICwgbV9kb3VibGVWYWx1ZShzdGF0aWNfY2FzdDxkb3VibGU+KHZh
bHVlKSkgeyB9CisgICAgZXhwbGljaXQgSW5zcGVjdG9yVmFsdWUoVHlwZSB0eXBlKQorICAgICAg
ICA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIGV4cGxpY2l0IEluc3BlY3RvckJhc2ljVmFsdWUo
ZG91YmxlIHZhbHVlKQotICAgICAgICA6IEluc3BlY3RvclZhbHVlKFR5cGU6OkRvdWJsZSkKLSAg
ICAgICAgLCBtX2RvdWJsZVZhbHVlKHZhbHVlKSB7IH0KKyAgICBleHBsaWNpdCBJbnNwZWN0b3JW
YWx1ZShib29sIHZhbHVlKQorICAgICAgICA6IG1fdHlwZShUeXBlOjpCb29sZWFuKQorICAgIHsK
KyAgICAgICAgbV92YWx1ZS5ib29sZWFuID0gdmFsdWU7CisgICAgfQogCi0gICAgdW5pb24gewot
ICAgICAgICBib29sIG1fYm9vbGVhblZhbHVlOwotICAgICAgICBkb3VibGUgbV9kb3VibGVWYWx1
ZTsKLSAgICB9OwotfTsKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JWYWx1ZShpbnQgdmFsdWUpCisg
ICAgICAgIDogbV90eXBlKFR5cGU6OkludGVnZXIpCisgICAgeworICAgICAgICBtX3ZhbHVlLm51
bWJlciA9IHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpOworICAgIH0KIAotY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgSW5zcGVjdG9yU3RyaW5nIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yU3RyaW5nPiBjcmVhdGUoY29uc3QgY2hhciop
OworICAgIGV4cGxpY2l0IEluc3BlY3RvclZhbHVlKGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBt
X3R5cGUoVHlwZTo6RG91YmxlKQorICAgIHsKKyAgICAgICAgbV92YWx1ZS5udW1iZXIgPSB2YWx1
ZTsKKyAgICB9CiAKLSAgICBib29sIGFzU3RyaW5nKFN0cmluZyYgb3V0cHV0KSBjb25zdCBvdmVy
cmlkZTsKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQor
ICAgICAgICA6IG1fdHlwZShUeXBlOjpTdHJpbmcpCisgICAgeworICAgICAgICBtX3ZhbHVlLnN0
cmluZyA9IHZhbHVlLmltcGwoKTsKKyAgICAgICAgaWYgKG1fdmFsdWUuc3RyaW5nKQorICAgICAg
ICAgICAgbV92YWx1ZS5zdHJpbmctPnJlZigpOworICAgIH0KIAotICAgIHZvaWQgd3JpdGVKU09O
KFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZXhwbGljaXQgSW5z
cGVjdG9yVmFsdWUoY29uc3QgY2hhciogdmFsdWUpCisgICAgICAgIDogbV90eXBlKFR5cGU6OlN0
cmluZykKKyAgICB7CisgICAgICAgIFN0cmluZyB3cmFwcGVyKHZhbHVlKTsKKyAgICAgICAgbV92
YWx1ZS5zdHJpbmcgPSB3cmFwcGVyLmltcGwoKTsKKyAgICAgICAgaWYgKG1fdmFsdWUuc3RyaW5n
KQorICAgICAgICAgICAgbV92YWx1ZS5zdHJpbmctPnJlZigpOworICAgIH0KIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBJbnNwZWN0b3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICAg
ICAgOiBJbnNwZWN0b3JWYWx1ZShUeXBlOjpTdHJpbmcpCi0gICAgICAgICwgbV9zdHJpbmdWYWx1
ZSh2YWx1ZSkgeyB9Ci0KLSAgICBleHBsaWNpdCBJbnNwZWN0b3JTdHJpbmcoY29uc3QgY2hhciog
dmFsdWUpCi0gICAgICAgIDogSW5zcGVjdG9yVmFsdWUoVHlwZTo6U3RyaW5nKQotICAgICAgICAs
IG1fc3RyaW5nVmFsdWUodmFsdWUpIHsgfQotCi0gICAgU3RyaW5nIG1fc3RyaW5nVmFsdWU7Cisg
ICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOdWxsIH07CisgICAgdW5pb24geworICAgICAgICBib29s
IGJvb2xlYW47CisgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAgICAgIFN0cmluZ0ltcGwqIHN0
cmluZzsKKyAgICB9IG1fdmFsdWU7CiB9OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNw
ZWN0b3JPYmplY3RCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKQEAgLTIxMywxOCArMjE1
LDE4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91
dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1f
ZGF0YS5iZWdpbigpOyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9kYXRhLmVuZCgp
OyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVn
aW4oKTsgfQotICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5l
bmQoKTsgfQorICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQor
ICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CisgICAgY29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CisgICAgY29uc3Rf
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KIAotICAgIGludCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNpemUoKTsgfQorICAgIGludCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBJbnNwZWN0b3JP
YmplY3RCYXNlKCk7CiAKIHByaXZhdGU6Ci0gICAgRGljdGlvbmFyeSBtX2RhdGE7CisgICAgRGlj
dGlvbmFyeSBtX21hcDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX29yZGVyOwogfTsKIApAQCAtMjY1
LDcgKzI2Nyw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+Pjo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPElu
c3BlY3RvclZhbHVlPj46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogCi0gICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0
YS5zaXplKCkpOyB9CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fbWFwLnNpemUoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkluc3BlY3RvckFycmF5QmFzZSgpOwpAQCAtMjg0LDE2ICsyODYsMTYgQEAgcHJvdGVjdGVk
OgogCiAgICAgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0K
LSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2RhdGEuZW5kKCk7IH0KLSAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9Ci0gICAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CisgICAgaXRl
cmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CisgICAgaXRlcmF0b3IgZW5k
KCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zcGVjdG9y
QXJyYXlCYXNlKCk7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4+IG1fZGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVlPj4gbV9tYXA7CiB9
OwogCiBjbGFzcyBJbnNwZWN0b3JBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3JBcnJheUJhc2UgewpA
QCAtMzE5LDkxICszMjEsOTEgQEAgcHVibGljOgogCiBpbmxpbmUgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6aXRlcmF0b3IgSW5zcGVjdG9yT2JqZWN0QmFzZTo6ZmluZChjb25zdCBTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5maW5kKG5hbWUpOworICAgIHJldHVybiBtX21hcC5maW5k
KG5hbWUpOwogfQogCiBpbmxpbmUgSW5zcGVjdG9yT2JqZWN0QmFzZTo6Y29uc3RfaXRlcmF0b3Ig
SW5zcGVjdG9yT2JqZWN0QmFzZTo6ZmluZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fZGF0YS5maW5kKG5hbWUpOworICAgIHJldHVybiBtX21hcC5maW5kKG5hbWUp
OwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRCb29sZWFuKGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0
b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKKyAgICBzZXRWYWx1ZShuYW1lLCBJbnNwZWN0
b3JWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVj
dEJhc2U6OnNldEludGVnZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQgdmFsdWUpCiB7Ci0gICAg
c2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAg
c2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXREb3VibGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBkb3VibGUgdmFsdWUpCiB7Ci0gICAgc2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1
ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgc2V0VmFsdWUobmFtZSwgSW5zcGVjdG9yVmFsdWU6OmNy
ZWF0ZSh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRT
dHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHNl
dFZhbHVlKG5hbWUsIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlKSk7CisgICAgc2V0VmFs
dWUobmFtZSwgSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4mJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlm
IChtX2RhdGEuc2V0KG5hbWUsIFdURk1vdmUodmFsdWUpKS5pc05ld0VudHJ5KQorICAgIGlmICht
X21hcC5zZXQobmFtZSwgV1RGTW92ZSh2YWx1ZSkpLmlzTmV3RW50cnkpCiAgICAgICAgIG1fb3Jk
ZXIuYXBwZW5kKG5hbWUpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpz
ZXRPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0QmFzZT4m
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEuc2V0KG5hbWUs
IFdURk1vdmUodmFsdWUpKS5pc05ld0VudHJ5KQorICAgIGlmIChtX21hcC5zZXQobmFtZSwgV1RG
TW92ZSh2YWx1ZSkpLmlzTmV3RW50cnkpCiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwog
fQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheShjb25zdCBTdHJp
bmcmIG5hbWUsIFJlZlB0cjxJbnNwZWN0b3JBcnJheUJhc2U+JiYgdmFsdWUpCiB7CiAgICAgQVNT
RVJUKHZhbHVlKTsKLSAgICBpZiAobV9kYXRhLnNldChuYW1lLCBXVEZNb3ZlKHZhbHVlKSkuaXNO
ZXdFbnRyeSkKKyAgICBpZiAobV9tYXAuc2V0KG5hbWUsIFdURk1vdmUodmFsdWUpKS5pc05ld0Vu
dHJ5KQogICAgICAgICBtX29yZGVyLmFwcGVuZChuYW1lKTsKIH0KIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9yQXJyYXlCYXNlOjpwdXNoQm9vbGVhbihib29sIHZhbHVlKQogewotICAgIG1fZGF0YS5h
cHBlbmQoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgbV9tYXAuYXBw
ZW5kKEluc3BlY3RvclZhbHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9yQXJyYXlCYXNlOjpwdXNoSW50ZWdlcihpbnQgdmFsdWUpCiB7Ci0gICAgbV9kYXRhLmFw
cGVuZChJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUodmFsdWUpKTsKKyAgICBtX21hcC5hcHBl
bmQoSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JBcnJheUJhc2U6OnB1c2hEb3VibGUoZG91YmxlIHZhbHVlKQogewotICAgIG1fZGF0YS5h
cHBlbmQoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgbV9tYXAuYXBw
ZW5kKEluc3BlY3RvclZhbHVlOjpjcmVhdGUodmFsdWUpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9yQXJyYXlCYXNlOjpwdXNoU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAg
bV9kYXRhLmFwcGVuZChJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZSkpOworICAgIG1fbWFw
LmFwcGVuZChJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lk
IEluc3BlY3RvckFycmF5QmFzZTo6cHVzaFZhbHVlKFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mJiB2
YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIG1fZGF0YS5hcHBlbmQoV1RGTW92ZSh2
YWx1ZSkpOworICAgIG1fbWFwLmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaE9iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
QmFzZT4mJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIG1fZGF0YS5hcHBlbmQo
V1RGTW92ZSh2YWx1ZSkpOworICAgIG1fbWFwLmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7CiB9CiAK
IGlubGluZSB2b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaEFycmF5KFJlZlB0cjxJbnNwZWN0
b3JBcnJheUJhc2U+JiYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBtX2RhdGEu
YXBwZW5kKFdURk1vdmUodmFsdWUpKTsKKyAgICBtX21hcC5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmNwcAppbmRleCA4MDc5ODIwOWRjZDYwMzE5MzA3ZDM4Mjcz
MzllNzc2ZTdhYWUyZmQ0Li43OTI0NTI4OTcyNGQ5ZWYyNWNjYWNkMGYyZGI5N2ZkYmNjYjFlMTAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuY3BwCkBA
IC02NywzNyArNjcsMzcgQEAgYm9vbCBFbmNvZGluZ1RyYWl0czxWZWN0b3I8Y2hhcj4+OjpkZWNv
ZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRCdWZmZXIsIFZlY3QKIAogdGVtcGxhdGU8PiBF
bmNvZGVkVmFsdWUgU2NhbGFyRW5jb2RpbmdUcmFpdHM8Ym9vbD46OmVuY29kZVZhbHVlKGNvbnN0
IGJvb2wmIHZhbHVlKQogewotICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yQmFzaWNW
YWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CisgICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JW
YWx1ZTo6Y3JlYXRlKHZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gRW5jb2RlZFZhbHVlIFNjYWxh
ckVuY29kaW5nVHJhaXRzPGRvdWJsZT46OmVuY29kZVZhbHVlKGNvbnN0IGRvdWJsZSYgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUo
dmFsdWUpKTsKKyAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3RvclZhbHVlOjpjcmVhdGUo
dmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBFbmNvZGVkVmFsdWUgU2NhbGFyRW5jb2RpbmdUcmFp
dHM8ZmxvYXQ+OjplbmNvZGVWYWx1ZShjb25zdCBmbG9hdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IEVuY29kZWRWYWx1ZShJbnNwZWN0b3JCYXNpY1ZhbHVlOjpjcmVhdGUoKGRvdWJsZSl2YWx1ZSkp
OworICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSgoZG91Ymxl
KXZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gRW5jb2RlZFZhbHVlIFNjYWxhckVuY29kaW5nVHJh
aXRzPGludDMyX3Q+OjplbmNvZGVWYWx1ZShjb25zdCBpbnQzMl90JiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSgoZG91YmxlKXZh
bHVlKSk7CisgICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKChk
b3VibGUpdmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBFbmNvZGVkVmFsdWUgU2NhbGFyRW5jb2Rp
bmdUcmFpdHM8aW50NjRfdD46OmVuY29kZVZhbHVlKGNvbnN0IGludDY0X3QmIHZhbHVlKQogewot
ICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKChkb3Vi
bGUpdmFsdWUpKTsKKyAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3RvclZhbHVlOjpjcmVh
dGUoKGRvdWJsZSl2YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IEVuY29kZWRWYWx1ZSBTY2FsYXJF
bmNvZGluZ1RyYWl0czx1aW50MzJfdD46OmVuY29kZVZhbHVlKGNvbnN0IHVpbnQzMl90JiB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0
ZSgoZG91YmxlKXZhbHVlKSk7CisgICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JWYWx1
ZTo6Y3JlYXRlKChkb3VibGUpdmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBFbmNvZGVkVmFsdWUg
U2NhbGFyRW5jb2RpbmdUcmFpdHM8dWludDY0X3Q+OjplbmNvZGVWYWx1ZShjb25zdCB1aW50NjRf
dCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJbnNwZWN0b3JCYXNpY1ZhbHVl
OjpjcmVhdGUoKGRvdWJsZSl2YWx1ZSkpOworICAgIHJldHVybiBFbmNvZGVkVmFsdWUoSW5zcGVj
dG9yVmFsdWU6OmNyZWF0ZSgoZG91YmxlKXZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gYm9vbCBF
bmNvZGVkVmFsdWU6OmNvbnZlcnRUbzxib29sPigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9FbmNvZGVkVmFsdWUuaAppbmRleCAwZDE1YmFiYzc2MmVlZmMyNTQ5YjllZDA0YzY0Nzc1
NDQxNDgyNWVlLi40OTA5OTllMjUwMjgyYjYwOTdmOTdmNWRhZmQ3NGQ4MzQ3OGNjMjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmgKQEAgLTU5LDEyICs1
OSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRW5jb2RlZFZhbHVlIGNyZWF0ZVN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEVuY29kZWRWYWx1ZShJ
bnNwZWN0b3I6Okluc3BlY3RvclN0cmluZzo6Y3JlYXRlKHZhbHVlKSk7CisgICAgICAgIHJldHVy
biBFbmNvZGVkVmFsdWUoSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHZhbHVlKSk7
CiAgICAgfQogCiAgICAgc3RhdGljIEVuY29kZWRWYWx1ZSBjcmVhdGVTdHJpbmcoY29uc3QgY2hh
ciogdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gRW5jb2RlZFZhbHVlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEVuY29kZWRW
YWx1ZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjpjcmVhdGUodmFsdWUpKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGJjOGZhZTA5NDYyMmUyMWQ1Zjdi
NzlmZDcwYTAxYzE4OTQxNzAyODMuLmJkOTBiMzIyNWFkNzcwYmZhOGE1ZGJjN2U1M2NhNDE4Y2U2
NTFhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAKQEAgLTg3LDggKzg3LDggQEAgcHVibGljOgogICAgICAgICBmb3IgKGF1
dG8mIHZhbHVlIDogcm93TGlzdC0+dmFsdWVzKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gaW5zcGVjdG9yVmFsdWU7CiAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLnR5
cGUoKSkgewotICAgICAgICAgICAgY2FzZSBTUUxWYWx1ZTo6U3RyaW5nVmFsdWU6IGluc3BlY3Rv
clZhbHVlID0gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUuc3RyaW5nKCkpOyBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bWJlclZhbHVlOiBpbnNwZWN0b3JWYWx1ZSA9
IEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZS5udW1iZXIoKSk7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBTUUxWYWx1ZTo6U3RyaW5nVmFsdWU6IGluc3BlY3RvclZhbHVlID0gSW5z
cGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZS5zdHJpbmcoKSk7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBTUUxWYWx1ZTo6TnVtYmVyVmFsdWU6IGluc3BlY3RvclZhbHVlID0gSW5zcGVjdG9yVmFs
dWU6OmNyZWF0ZSh2YWx1ZS5udW1iZXIoKSk7IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTUUxW
YWx1ZTo6TnVsbFZhbHVlOiBpbnNwZWN0b3JWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpudWxsKCk7
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCg==
</data>
<flag name="review"
          id="300469"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="300470"
          type_id="3"
          status="-"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>