<?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>136218</bug_id>
          
          <creation_ts>2014-08-25 03:29:18 -0700</creation_ts>
          <short_desc>[CSS Grid Layout] Replace the usage of size_t by unsigned</short_desc>
          <delta_ts>2014-11-20 01:49:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>136217</dependson>
          <blocked>60731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kling</cc>
    
    <cc>rego</cc>
    
    <cc>rniwa</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031091</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-08-25 03:29:18 -0700</bug_when>
    <thetext>size_t is generally used for sizes of memory objects. We&apos;re using it for indexes and spans in the grid. The fact that we&apos;re using Vectors to represent the grid should not force us to use size_t, unsigned seems to fit better in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031092</commentid>
    <comment_count>1</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-08-25 03:30:21 -0700</bug_when>
    <thetext>See for example: https://bugs.webkit.org/show_bug.cgi?id=135701#c2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048190</commentid>
    <comment_count>2</comment_count>
      <attachid>241434</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-11-12 10:37:45 -0800</bug_when>
    <thetext>Created attachment 241434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048399</commentid>
    <comment_count>3</comment_count>
      <attachid>241483</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-11-13 07:22:11 -0800</bug_when>
    <thetext>Created attachment 241483
Patch

Added a missing conversion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049415</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-11-18 00:48:40 -0800</bug_when>
    <thetext>Would it be possible to get this reviewed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049419</commentid>
    <comment_count>5</comment_count>
      <attachid>241483</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-11-18 01:12:49 -0800</bug_when>
    <thetext>Comment on attachment 241483
Patch

Looks reasonable.
If someones creates a grid overflowing unsigned, she/he is crazy :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049422</commentid>
    <comment_count>6</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-11-18 01:33:55 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 241483 [details]
&gt; Patch
&gt; 
&gt; Looks reasonable.
&gt; If someones creates a grid overflowing unsigned, she/he is crazy :)

Yeah :)

In any case, I have uploaded this only after landing bug 136217 that ensures that we won&apos;t overflow unsigned as it sets a hard limit to the number of tracks (1 million as recommended by specs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050094</commentid>
    <comment_count>7</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-11-20 01:49:12 -0800</bug_when>
    <thetext>Committed r176390: &lt;http://trac.webkit.org/changeset/176390&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241434</attachid>
            <date>2014-11-12 10:37:45 -0800</date>
            <delta_ts>2014-11-13 07:22:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136218-20141112193747.patch</filename>
            <type>text/plain</type>
            <size>41586</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRmZTAxMDAyOTFjM2Fi
YjUzZGY4ZWNmMWE0NDdmZjA1Y2U5NDNlMy4uYzY2MmU5YWVhZmU0YTkwMjE3MzZjN2NhODRlMDZk
NGZmYzM4NDVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTExLTEyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIFJlcGxhY2UgdGhlIHVzYWdlIG9mIHNpemVfdCBieSB1bnNpZ25lZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjE4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gZ2VuZXJhbCwgc2l6
ZV90IHNob3VsZCBiZSB1c2VkIGZvciBzaXplcyBvZiBvYmplY3RzIGluCisgICAgICAgIG1lbW9y
eS4gV2UncmUgdXNpbmcgaXQgdG8gcmVwcmVzZW50IGluZGV4ZXMgYW5kIHNwYW5zIGluIHRoZQor
ICAgICAgICBncmlkLiBOb3cgdGhhdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJhY2tzIGlzIDEg
bWlsbGlvbiwgaXQKKyAgICAgICAgc2hvdWxkIGJlIHNhZmUgdG8gcmVwbGFjZSB0aGVtIGJ5IHVu
c2lnbmVkIGludGVnZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGVyZSBpcyBubyBj
aGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9u
KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6R3JpZEl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6bmV4
dEdyaWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6
aXNFbXB0eUFyZWFFbm91Z2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZEl0
ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpHcmlkU2l6aW5nRGF0YTo6R3JpZFNpemluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OmdyaWRUcmFja1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OmVuc3VyZUdyaWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlv
bnNPdXRzaWRlR3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUF1dG9N
YWpvckF4aXNJdGVtT25HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBvcHVs
YXRlR3JpZFBvc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRTcGFuOjppbnRlZ2VyU3Bhbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dy
aWRSZXNvbHZlZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZlZFBv
c2l0aW9uOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlk
UmVzb2x2ZWRQb3NpdGlvbjo6ZXhwbGljaXRHcmlkUm93Q291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFJlc29s
dmVkUG9zaXRpb246OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlkUG9zaXRpb25G
cm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29s
dmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpmaXJzdE5hbWVkR3JpZExpbmVCZWZvcmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZVJvd1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRM
aW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZl
ZFBvc2l0aW9uOjphZGp1c3RHcmlkUG9zaXRpb25Gb3JSb3dFbmRDb2x1bW5FbmRTaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZlZFBvc2l0aW9uOjphZGp1c3RHcmlkUG9zaXRpb25G
b3JTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZlZFBvc2l0aW9uOjpHcmlkUmVz
b2x2ZWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6
dG9JbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6CisKIDIw
MTQtMDktMDEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXSzJdIFVzZXJNZWRpYUNsaWVudCBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDZhMTA3YjA1YmY1YmRlYmNlMjE5YmE0ZWUyODdlZWRkZmM0YjFjMzMuLjc4MGY1ZDEw
MGNhN2QwMDFhNmI1ZTBkNDU4Y2MzMjVlYjllYTY4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCkBAIC01MjY5LDcgKzUyNjksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tS
ZXBlYXRGdW5jdGlvbihDU1NWYWx1ZUxpc3QmIGxpc3QpCiAgICAgQVNTRVJUKGFyZ3VtZW50cy0+
dmFsdWVBdCgwKS0+ZlZhbHVlID4gMCk7CiAgICAgLy8gSWYgYXJndW1lbnRzLT52YWx1ZUF0KDAp
LT5mVmFsdWUgPiBTSVpFX01BWCB0aGVuIHJlcGV0aXRpb25zIGJlY29tZXMgMCBkdXJpbmcgdGhl
IHR5cGUgY2FzdGluZywgdGhhdCdzIHdoeSB3ZQogICAgIC8vIGNsYW1wIGl0IGRvd24gdG8ga0dy
aWRNYXhUcmFja3MgYmVmb3JlIHRoZSB0eXBlIGNhc3RpbmcuCi0gICAgc2l6ZV90IHJlcGV0aXRp
b25zID0gY2xhbXBUbzxzaXplX3Q+KGFyZ3VtZW50cy0+dmFsdWVBdCgwKS0+ZlZhbHVlLCAwLCBr
R3JpZE1heFRyYWNrcyk7CisgICAgdW5zaWduZWQgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHVuc2ln
bmVkPihhcmd1bWVudHMtPnZhbHVlQXQoMCktPmZWYWx1ZSwgMCwga0dyaWRNYXhUcmFja3MpOwog
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcmVwZWF0ZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgYXJndW1lbnRzLT5uZXh0KCk7IC8vIFNraXAg
dGhlIHJlcGV0aXRpb24gY291bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggMTc3ODc3MWNjOTQ1YWY1ZmU1NWEyNjk2MDViMDBjMzIwYjZiNDc5My4uMjZkMjFiZTllYzli
NjdjMmVkZDk4OGYyMmQzZDhmM2I3ZDc2NDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMTg5NSwxMiArMTg5NSwxMiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVJbXBsaWNp
dE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbQog
ICAgIGZvciAoYXV0byYgYXJlYSA6IG5hbWVkR3JpZEFyZWFzKSB7CiAgICAgICAgIEdyaWRTcGFu
IGFyZWFTcGFuID0gZGlyZWN0aW9uID09IEZvclJvd3MgPyBhcmVhLnZhbHVlLnJvd3MgOiBhcmVh
LnZhbHVlLmNvbHVtbnM7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8mIHN0YXJ0VmVjdG9y
ID0gbmFtZWRHcmlkTGluZXMuYWRkKGFyZWEua2V5ICsgIi1zdGFydCIsIFZlY3RvcjxzaXplX3Q+
KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIGF1dG8mIHN0YXJ0VmVjdG9yID0gbmFt
ZWRHcmlkTGluZXMuYWRkKGFyZWEua2V5ICsgIi1zdGFydCIsIFZlY3Rvcjx1bnNpZ25lZD4oKSku
aXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgc3RhcnRWZWN0b3IuYXBwZW5kKGFyZWFTcGFu
LnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLnRvSW50KCkpOwogICAgICAgICAgICAgc3RkOjpzb3J0
KHN0YXJ0VmVjdG9yLmJlZ2luKCksIHN0YXJ0VmVjdG9yLmVuZCgpKTsKICAgICAgICAgfQogICAg
ICAgICB7Ci0gICAgICAgICAgICBhdXRvJiBlbmRWZWN0b3IgPSBuYW1lZEdyaWRMaW5lcy5hZGQo
YXJlYS5rZXkgKyAiLWVuZCIsIFZlY3RvcjxzaXplX3Q+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICAgICAgICAgIGF1dG8mIGVuZFZlY3RvciA9IG5hbWVkR3JpZExpbmVzLmFkZChhcmVhLmtleSAr
ICItZW5kIiwgVmVjdG9yPHVuc2lnbmVkPigpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAg
ICBlbmRWZWN0b3IuYXBwZW5kKGFyZWFTcGFuLnJlc29sdmVkRmluYWxQb3NpdGlvbi5uZXh0KCku
dG9JbnQoKSk7CiAgICAgICAgICAgICBzdGQ6OnNvcnQoZW5kVmVjdG9yLmJlZ2luKCksIGVuZFZl
Y3Rvci5lbmQoKSk7CiAgICAgICAgIH0KQEAgLTE5NzAsMTIgKzE5NzAsMTIgQEAgc3RhdGljIGJv
b2wgY3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxHcmlkVHJhY2tT
aXplPiYgdHJhY2tTaXoKICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4oKnZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2l6ZV90IGN1cnJlbnROYW1lZEdyaWRMaW5lID0gMDsK
KyAgICB1bnNpZ25lZCBjdXJyZW50TmFtZWRHcmlkTGluZSA9IDA7CiAgICAgZm9yIChhdXRvJiBj
dXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkpIHsKICAgICAgICAg
aWYgKGlzPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSkgewogICAg
ICAgICAgICAgZm9yIChhdXRvJiBjdXJyZW50R3JpZExpbmVOYW1lIDogZG93bmNhc3Q8Q1NTR3Jp
ZExpbmVOYW1lc1ZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIG5hbWVkR3JpZExpbmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dEdyaWRMaW5lTmFtZS5nZXQoKSkuZ2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgICAgICBO
YW1lZEdyaWRMaW5lc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChu
YW1lZEdyaWRMaW5lLCBWZWN0b3I8c2l6ZV90PigpKTsKKyAgICAgICAgICAgICAgICBOYW1lZEdy
aWRMaW5lc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChuYW1lZEdy
aWRMaW5lLCBWZWN0b3I8dW5zaWduZWQ+KCkpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuYXBwZW5kKGN1cnJlbnROYW1lZEdyaWRMaW5lKTsKICAgICAgICAgICAgICAg
ICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXA6OkFkZFJlc3VsdCBvcmRlcmVkUmVzdWx0ID0gb3Jk
ZXJlZE5hbWVkR3JpZExpbmVzLmFkZChjdXJyZW50TmFtZWRHcmlkTGluZSwgVmVjdG9yPFN0cmlu
Zz4oKSk7CiAgICAgICAgICAgICAgICAgb3JkZXJlZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBw
ZW5kKG5hbWVkR3JpZExpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
CmluZGV4IGVlNTRiYzc0ZjgyNjFmN2U3ZmRlZTYyNWUzMmFiN2JhMzVkNjMyODMuLmQ2YzhkYzJj
MzYyYzc4MDU4MmIwNGYyZmM3Yjk4ZTFiNGQ1M2QyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgUmVuZGVyR3JpZDo6R3Jp
ZEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICAvLyB8ZGlyZWN0aW9ufCBpcyB0aGUgZGlyZWN0aW9u
IHRoYXQgaXMgZml4ZWQgdG8gfGZpeGVkVHJhY2tJbmRleHwgc28gZS5nCiAgICAgLy8gR3JpZEl0
ZXJhdG9yKG1fZ3JpZCwgRm9yQ29sdW1ucywgMSkgd2lsbCB3YWxrIG92ZXIgdGhlIHJvd3Mgb2Yg
dGhlIDJuZCBjb2x1bW4uCi0gICAgR3JpZEl0ZXJhdG9yKGNvbnN0IFZlY3RvcjxWZWN0b3I8VmVj
dG9yPFJlbmRlckJveCosIDE+Pj4mIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIHNpemVfdCBmaXhlZFRyYWNrSW5kZXgsIHNpemVfdCB2YXJ5aW5nVHJhY2tJbmRleCA9
IDApCisgICAgR3JpZEl0ZXJhdG9yKGNvbnN0IFZlY3RvcjxWZWN0b3I8VmVjdG9yPFJlbmRlckJv
eCosIDE+Pj4mIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2ln
bmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWduZWQgdmFyeWluZ1RyYWNrSW5kZXggPSAwKQogICAg
ICAgICA6IG1fZ3JpZChncmlkKQogICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKICAg
ICAgICAgLCBtX3Jvd0luZGV4KChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyB2YXJ5aW5nVHJh
Y2tJbmRleCA6IGZpeGVkVHJhY2tJbmRleCkKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghbV9ncmlkLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAg
ICAgIHNpemVfdCYgdmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBtX3Jvd0luZGV4IDogbV9jb2x1bW5JbmRleDsKLSAgICAgICAgY29uc3Qgc2l6ZV90IGVu
ZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dy
aWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKKyAgICAgICAgdW5zaWduZWQmIHZhcnlpbmdU
cmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9yb3dJbmRleCA6IG1f
Y29sdW1uSW5kZXg7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5k
ZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlk
WzBdLnNpemUoKTsKICAgICAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5
aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFJlbmRlckJveCo+JiBjaGlsZHJlbiA9IG1fZ3JpZFttX3Jvd0luZGV4XVttX2NvbHVt
bkluZGV4XTsKICAgICAgICAgICAgIGlmIChtX2NoaWxkSW5kZXggPCBjaGlsZHJlbi5zaXplKCkp
CkBAIC0xMTcsMTUgKzExNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIGJvb2wgaXNFbXB0eUFyZWFFbm91Z2goc2l6ZV90IHJvd1NwYW4sIHNpemVfdCBjb2x1
bW5TcGFuKSBjb25zdAorICAgIGJvb2wgaXNFbXB0eUFyZWFFbm91Z2godW5zaWduZWQgcm93U3Bh
biwgdW5zaWduZWQgY29sdW1uU3BhbikgY29uc3QKICAgICB7CiAgICAgICAgIC8vIElnbm9yZSBj
ZWxscyBvdXRzaWRlIGN1cnJlbnQgZ3JpZCBhcyB3ZSB3aWxsIGdyb3cgaXQgbGF0ZXIgaWYgbmVl
ZGVkLgotICAgICAgICBzaXplX3QgbWF4Um93cyA9IHN0ZDo6bWluKG1fcm93SW5kZXggKyByb3dT
cGFuLCBtX2dyaWQuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IG1heENvbHVtbnMgPSBzdGQ6Om1p
bihtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbiwgbV9ncmlkWzBdLnNpemUoKSk7CisgICAgICAg
IHVuc2lnbmVkIG1heFJvd3MgPSBzdGQ6Om1pbjx1bnNpZ25lZD4obV9yb3dJbmRleCArIHJvd1Nw
YW4sIG1fZ3JpZC5zaXplKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhDb2x1bW5zID0gc3RkOjpt
aW48dW5zaWduZWQ+KG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuLCBtX2dyaWRbMF0uc2l6ZSgp
KTsKIAogICAgICAgICAvLyBUaGlzIGFkZHMgYSBPKE5eMikgYmVoYXZpb3IgdGhhdCBzaG91bGRu
J3QgYmUgYSBiaWcgZGVhbCBhcyB3ZSBleHBlY3Qgc3Bhbm5pbmcgYXJlYXMgdG8gYmUgc21hbGwu
Ci0gICAgICAgIGZvciAoc2l6ZV90IHJvdyA9IG1fcm93SW5kZXg7IHJvdyA8IG1heFJvd3M7ICsr
cm93KSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSBtX2NvbHVtbkluZGV4OyBj
b2x1bW4gPCBtYXhDb2x1bW5zOyArK2NvbHVtbikgeworICAgICAgICBmb3IgKHVuc2lnbmVkIHJv
dyA9IG1fcm93SW5kZXg7IHJvdyA8IG1heFJvd3M7ICsrcm93KSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGNvbHVtbiA9IG1fY29sdW1uSW5kZXg7IGNvbHVtbiA8IG1heENvbHVtbnM7ICsr
Y29sdW1uKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBjaGls
ZHJlbiA9IG1fZ3JpZFtyb3ddW2NvbHVtbl07CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJl
bi5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNSwx
OCArMTM1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEdyaWRDb29yZGluYXRlPiBuZXh0RW1wdHlHcmlkQXJlYShzaXplX3Qg
Zml4ZWRUcmFja1NwYW4sIHNpemVfdCB2YXJ5aW5nVHJhY2tTcGFuKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQ29vcmRpbmF0ZT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFj
a1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pCiAgICAgewogICAgICAgICBBU1NFUlQo
Zml4ZWRUcmFja1NwYW4gPj0gMSAmJiB2YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgICAg
IGlmIChtX2dyaWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICAgICAgc2l6ZV90IHJvd1NwYW4gPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyB2YXJ5
aW5nVHJhY2tTcGFuIDogZml4ZWRUcmFja1NwYW47Ci0gICAgICAgIHNpemVfdCBjb2x1bW5TcGFu
ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja1NwYW4gOiB2YXJ5aW5n
VHJhY2tTcGFuOworICAgICAgICB1bnNpZ25lZCByb3dTcGFuID0gKG1fZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMpID8gdmFyeWluZ1RyYWNrU3BhbiA6IGZpeGVkVHJhY2tTcGFuOworICAgICAgICB1
bnNpZ25lZCBjb2x1bW5TcGFuID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRU
cmFja1NwYW4gOiB2YXJ5aW5nVHJhY2tTcGFuOwogCi0gICAgICAgIHNpemVfdCYgdmFyeWluZ1Ry
YWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX3Jvd0luZGV4IDogbV9j
b2x1bW5JbmRleDsKLSAgICAgICAgY29uc3Qgc2l6ZV90IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXgg
PSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBd
LnNpemUoKTsKKyAgICAgICAgdW5zaWduZWQmIHZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gbV9yb3dJbmRleCA6IG1fY29sdW1uSW5kZXg7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKICAgICAgICAg
Zm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5
aW5nVHJhY2tJbmRleCkgewogICAgICAgICAgICAgaWYgKGlzRW1wdHlBcmVhRW5vdWdoKHJvd1Nw
YW4sIGNvbHVtblNwYW4pKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRD
b29yZGluYXRlPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRDb29yZGluYXRlPihHcmlk
U3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiAtIDEpLCBHcmlkU3BhbihtX2Nv
bHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbiAtIDEpKTsKQEAgLTE2MSwxNSAr
MTYxLDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY29uc3QgVmVjdG9yPFZlY3RvcjxWZWN0
b3I8UmVuZGVyQm94KiwgMT4+PiYgbV9ncmlkOwogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBtX2RpcmVjdGlvbjsKLSAgICBzaXplX3QgbV9yb3dJbmRleDsKLSAgICBzaXplX3QgbV9jb2x1
bW5JbmRleDsKLSAgICBzaXplX3QgbV9jaGlsZEluZGV4OworICAgIHVuc2lnbmVkIG1fcm93SW5k
ZXg7CisgICAgdW5zaWduZWQgbV9jb2x1bW5JbmRleDsKKyAgICB1bnNpZ25lZCBtX2NoaWxkSW5k
ZXg7CiB9OwogCiBjbGFzcyBSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YSB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoR3JpZFNpemluZ0RhdGEpOwogcHVibGljOgotICAgIEdyaWRTaXppbmdE
YXRhKHNpemVfdCBncmlkQ29sdW1uQ291bnQsIHNpemVfdCBncmlkUm93Q291bnQpCisgICAgR3Jp
ZFNpemluZ0RhdGEodW5zaWduZWQgZ3JpZENvbHVtbkNvdW50LCB1bnNpZ25lZCBncmlkUm93Q291
bnQpCiAgICAgICAgIDogY29sdW1uVHJhY2tzKGdyaWRDb2x1bW5Db3VudCkKICAgICAgICAgLCBy
b3dUcmFja3MoZ3JpZFJvd0NvdW50KQogICAgIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6
CiAKICAgICBWZWN0b3I8R3JpZFRyYWNrPiBjb2x1bW5UcmFja3M7CiAgICAgVmVjdG9yPEdyaWRU
cmFjaz4gcm93VHJhY2tzOwotICAgIFZlY3RvcjxzaXplX3Q+IGNvbnRlbnRTaXplZFRyYWNrc0lu
ZGV4OworICAgIFZlY3Rvcjx1bnNpZ25lZD4gY29udGVudFNpemVkVHJhY2tzSW5kZXg7CiAKICAg
ICAvLyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb246IGhvbGQgb250byB0aGVzZSBWZWN0b3JzIHVu
dGlsIHRoZSBlbmQgb2YgTGF5b3V0IHRvIGF2b2lkIHJlcGVhdGVkIG1hbGxvYyAvIGZyZWUuCiAg
ICAgVmVjdG9yPExheW91dFVuaXQ+IGRpc3RyaWJ1dGVUcmFja1ZlY3RvcjsKQEAgLTI5OCwxMSAr
Mjk4LDExIEBAIGJvb2wgUmVuZGVyR3JpZDo6Z3JpZEVsZW1lbnRJc1Nocmlua1RvRml0KCkKIHZv
aWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhLCBMYXlv
dXRVbml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpCiB7CiAgICAgVmVjdG9yPEdyaWRUcmFjaz4m
IHRyYWNrcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzaXppbmdEYXRhLmNvbHVtblRy
YWNrcyA6IHNpemluZ0RhdGEucm93VHJhY2tzOwotICAgIFZlY3RvcjxzaXplX3Q+IGZsZXhpYmxl
U2l6ZWRUcmFja3NJbmRleDsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IGZsZXhpYmxlU2l6ZWRUcmFj
a3NJbmRleDsKICAgICBzaXppbmdEYXRhLmNvbnRlbnRTaXplZFRyYWNrc0luZGV4LnNocmluaygw
KTsKIAogICAgIC8vIDEuIEluaXRpYWxpemUgcGVyIEdyaWQgdHJhY2sgdmFyaWFibGVzLgotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBHcmlkVHJh
Y2smIHRyYWNrID0gdHJhY2tzW2ldOwogICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFj
a1NpemUgPSBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgaSk7CiAgICAgICAgIGNvbnN0IEdyaWRM
ZW5ndGgmIG1pblRyYWNrQnJlYWR0aCA9IHRyYWNrU2l6ZS5taW5UcmFja0JyZWFkdGgoKTsKQEAg
LTMzNyw5ICszMzcsOSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3Jp
ZFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aQogICAgIC8vIDMuIEdyb3cg
YWxsIEdyaWQgdHJhY2tzIGluIEdyaWRUcmFja3MgZnJvbSB0aGVpciBVc2VkQnJlYWR0aCB1cCB0
byB0aGVpciBNYXhCcmVhZHRoIHZhbHVlIHVudGlsCiAgICAgLy8gYXZhaWxhYmxlTG9naWNhbFNw
YWNlIChSZW1haW5pbmdTcGFjZSBpbiB0aGUgc3BlY3MpIGlzIGV4aGF1c3RlZC4KICAgICBpZiAo
IWhhc1VuZGVmaW5lZFJlbWFpbmluZ1NwYWNlKSB7Ci0gICAgICAgIGNvbnN0IHNpemVfdCB0cmFj
a3NTaXplID0gdHJhY2tzLnNpemUoKTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgdHJhY2tzU2l6
ZSA9IHRyYWNrcy5zaXplKCk7CiAgICAgICAgIFZlY3RvcjxHcmlkVHJhY2sqPiB0cmFja3NGb3JE
aXN0cmlidXRpb24odHJhY2tzU2l6ZSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dHJhY2tzU2l6ZTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tz
U2l6ZTsgKytpKQogICAgICAgICAgICAgdHJhY2tzRm9yRGlzdHJpYnV0aW9uW2ldID0gdHJhY2tz
LmRhdGEoKSArIGk7CiAKICAgICAgICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3ModHJhY2tzRm9y
RGlzdHJpYnV0aW9uLCAwLCAmR3JpZFRyYWNrOjp1c2VkQnJlYWR0aCwgJkdyaWRUcmFjazo6Z3Jv
d1VzZWRCcmVhZHRoLCBzaXppbmdEYXRhLCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwpAQCAtMzYx
LDcgKzM2MSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJh
Y2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpCiAgICAgICAgICAgICBub3JtYWxp
emVkRnJhY3Rpb25CcmVhZHRoID0gc3RkOjptYXgobm9ybWFsaXplZEZyYWN0aW9uQnJlYWR0aCwg
dHJhY2tzW3RyYWNrSW5kZXhdLm1fdXNlZEJyZWFkdGggLyB0cmFja1NpemUubWF4VHJhY2tCcmVh
ZHRoKCkuZmxleCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZmxleGlibGVTaXplZFRyYWNrc0luZGV4LnNpemUoKTsgKytpKSB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXguc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihtX2dyaWQsIGRpcmVjdGlvbiwg
ZmxleGlibGVTaXplZFRyYWNrc0luZGV4W2ldKTsKICAgICAgICAgICAgIHdoaWxlIChSZW5kZXJC
b3gqIGdyaWRJdGVtID0gaXRlcmF0b3IubmV4dEdyaWRJdGVtKCkpIHsKICAgICAgICAgICAgICAg
ICBjb25zdCBHcmlkQ29vcmRpbmF0ZSBjb29yZGluYXRlID0gY2FjaGVkR3JpZENvb3JkaW5hdGUo
KmdyaWRJdGVtKTsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBkb3VibGUgUmVuZGVyR3JpZDo6Y29tcHV0
ZU5vcm1hbGl6ZWRGcmFjdGlvbkJyZWFkdGgoVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcywgYwog
ICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2FsU3BhY2VJZ25vcmluZ0ZyYWN0aW9uVHJhY2tzIC8g
YWNjdW11bGF0ZWRGcmFjdGlvbnM7CiB9CiAKLUdyaWRUcmFja1NpemUgUmVuZGVyR3JpZDo6Z3Jp
ZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzaXplX3QgaSkg
Y29uc3QKK0dyaWRUcmFja1NpemUgUmVuZGVyR3JpZDo6Z3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCBpKSBjb25zdAogewogICAgIGJvb2wg
aXNGb3JDb2x1bW5zID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKTsKICAgICBhdXRvJiB0cmFj
a1N0eWxlcyA9ICBpc0ZvckNvbHVtbnMgPyBzdHlsZSgpLmdyaWRDb2x1bW5zKCkgOiBzdHlsZSgp
LmdyaWRSb3dzKCk7CkBAIC01NTMsNyArNTUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJlbmRlckJveD4gbV9ncmlkSXRlbTsKICAgICBHcmlkQ29v
cmRpbmF0ZSBtX2Nvb3JkaW5hdGU7Ci0gICAgc2l6ZV90IG1fc3BhbjsKKyAgICB1bnNpZ25lZCBt
X3NwYW47CiB9OwogCiB2b2lkIFJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1Np
emluZ0Z1bmN0aW9ucyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkU2l6
aW5nRGF0YSYgc2l6aW5nRGF0YSkKQEAgLTYzNywxMCArNjM3LDEwIEBAIHZvaWQgUmVuZGVyR3Jp
ZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVmVjdG9yPEdyaWRUcmFjayo+JiB0cmFja3MsIFZl
Y3RvcjxzaXplCiAgICAgQVNTRVJUKGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSA+IDApOwogICAgIHN0
ZDo6c29ydCh0cmFja3MuYmVnaW4oKSwgdHJhY2tzLmVuZCgpLCBzb3J0QnlHcmlkVHJhY2tHcm93
dGhQb3RlbnRpYWwpOwogCi0gICAgc2l6ZV90IHRyYWNrc1NpemUgPSB0cmFja3Muc2l6ZSgpOwor
ICAgIHVuc2lnbmVkIHRyYWNrc1NpemUgPSB0cmFja3Muc2l6ZSgpOwogICAgIHNpemluZ0RhdGEu
ZGlzdHJpYnV0ZVRyYWNrVmVjdG9yLnJlc2l6ZSh0cmFja3NTaXplKTsKIAotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdHJhY2tzU2l6ZTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRyYWNrc1NpemU7ICsraSkgewogICAgICAgICBHcmlkVHJhY2smIHRyYWNrID0gKnRy
YWNrc1tpXTsKICAgICAgICAgTGF5b3V0VW5pdCB0cmFja0JyZWFkdGggPSAodHJhY2tzW2ldLT4q
dHJhY2tHZXR0ZXIpKCk7CiAgICAgICAgIGJvb2wgaW5maW5pdGVHcm93dGhQb3RlbnRpYWwgPSB0
cmFjay5tX21heEJyZWFkdGggPT0gaW5maW5pdHk7CkBAIC02NTcsOCArNjU3LDggQEAgdm9pZCBS
ZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRy
YWNrcywgVmVjdG9yPHNpemUKICAgICB9CiAKICAgICBpZiAoYXZhaWxhYmxlTG9naWNhbFNwYWNl
ID4gMCAmJiBncm93QWJvdmVNYXhCcmVhZHRoVHJhY2tJbmRleGVzKSB7Ci0gICAgICAgIHNpemVf
dCBpbmRleGVzU2l6ZSA9IGdyb3dBYm92ZU1heEJyZWFkdGhUcmFja0luZGV4ZXMtPnNpemUoKTsK
LSAgICAgICAgc2l6ZV90IHRyYWNrc0dyb3dpbmdBYm92ZU1heEJyZWFkdGhTaXplID0gaW5kZXhl
c1NpemUgPyBpbmRleGVzU2l6ZSA6IHRyYWNrc1NpemU7CisgICAgICAgIHVuc2lnbmVkIGluZGV4
ZXNTaXplID0gZ3Jvd0Fib3ZlTWF4QnJlYWR0aFRyYWNrSW5kZXhlcy0+c2l6ZSgpOworICAgICAg
ICB1bnNpZ25lZCB0cmFja3NHcm93aW5nQWJvdmVNYXhCcmVhZHRoU2l6ZSA9IGluZGV4ZXNTaXpl
ID8gaW5kZXhlc1NpemUgOiB0cmFja3NTaXplOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgbm9u
LW51bGwgZW1wdHkgdmVjdG9yIG9mIHRyYWNrIGluZGV4ZXMgdG8gZ3JvdyBhYm92ZSBtYXggYnJl
YWR0aCBtZWFucyB0aGF0IHdlIHNob3VsZCBncm93IGFsbAogICAgICAgICAvLyBhZmZlY3RlZCB0
cmFja3MuCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzR3Jvd2luZ0Fib3Zl
TWF4QnJlYWR0aFNpemU7ICsraSkgewpAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQgUmVuZGVyR3Jp
ZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVmVjdG9yPEdyaWRUcmFjayo+JiB0cmFja3MsIFZl
Y3RvcjxzaXplCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHRyYWNrc1NpemU7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3NT
aXplOyArK2kpIHsKICAgICAgICAgTGF5b3V0VW5pdCBncm93dGggPSBzaXppbmdEYXRhLmRpc3Ry
aWJ1dGVUcmFja1ZlY3RvcltpXSAtICh0cmFja3NbaV0tPip0cmFja0dldHRlcikoKTsKICAgICAg
ICAgaWYgKGdyb3d0aCA+PSAwKQogICAgICAgICAgICAgKHRyYWNrc1tpXS0+KnRyYWNrR3Jvd3Ro
RnVuY3Rpb24pKGdyb3d0aCk7CkBAIC02NzksNyArNjc5LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpk
aXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRyYWNrcywgVmVjdG9y
PHNpemUKICNpZm5kZWYgTkRFQlVHCiBib29sIFJlbmRlckdyaWQ6OnRyYWNrc0FyZVdpZGVyVGhh
bk1pblRyYWNrQnJlYWR0aChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25z
dCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRy
YWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1Np
emUgPSBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgaSk7CiAgICAgICAgIGNvbnN0IEdyaWRMZW5n
dGgmIG1pblRyYWNrQnJlYWR0aCA9IHRyYWNrU2l6ZS5taW5UcmFja0JyZWFkdGgoKTsKICAgICAg
ICAgaWYgKGNvbXB1dGVVc2VkQnJlYWR0aE9mTWluTGVuZ3RoKGRpcmVjdGlvbiwgbWluVHJhY2tC
cmVhZHRoKSA+IHRyYWNrc1tpXS5tX3VzZWRCcmVhZHRoKQpAQCAtNjg5LDE3ICs2ODksMTcgQEAg
Ym9vbCBSZW5kZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmUKIH0KICNlbmRpZgogCi12b2lkIFJlbmRlckdyaWQ6OmVu
c3VyZUdyaWRTaXplKHNpemVfdCBtYXhpbXVtUm93SW5kZXgsIHNpemVfdCBtYXhpbXVtQ29sdW1u
SW5kZXgpCit2b2lkIFJlbmRlckdyaWQ6OmVuc3VyZUdyaWRTaXplKHVuc2lnbmVkIG1heGltdW1S
b3dJbmRleCwgdW5zaWduZWQgbWF4aW11bUNvbHVtbkluZGV4KQogewotICAgIGNvbnN0IHNpemVf
dCBvbGRSb3dDb3VudCA9IGdyaWRSb3dDb3VudCgpOworICAgIGNvbnN0IHVuc2lnbmVkIG9sZFJv
d0NvdW50ID0gZ3JpZFJvd0NvdW50KCk7CiAgICAgaWYgKG1heGltdW1Sb3dJbmRleCA+PSBvbGRS
b3dDb3VudCkgewogICAgICAgICBtX2dyaWQuZ3JvdyhtYXhpbXVtUm93SW5kZXggKyAxKTsKLSAg
ICAgICAgZm9yIChzaXplX3Qgcm93ID0gb2xkUm93Q291bnQ7IHJvdyA8IGdyaWRSb3dDb3VudCgp
OyArK3JvdykKKyAgICAgICAgZm9yICh1bnNpZ25lZCByb3cgPSBvbGRSb3dDb3VudDsgcm93IDwg
Z3JpZFJvd0NvdW50KCk7ICsrcm93KQogICAgICAgICAgICAgbV9ncmlkW3Jvd10uZ3Jvdyhncmlk
Q29sdW1uQ291bnQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1heGltdW1Db2x1bW5JbmRleCA+PSBn
cmlkQ29sdW1uQ291bnQoKSkgewotICAgICAgICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCBn
cmlkUm93Q291bnQoKTsgKytyb3cpCisgICAgICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsgcm93
IDwgZ3JpZFJvd0NvdW50KCk7ICsrcm93KQogICAgICAgICAgICAgbV9ncmlkW3Jvd10uZ3Jvdyht
YXhpbXVtQ29sdW1uSW5kZXggKyAxKTsKICAgICB9CiB9CkBAIC03NTgsOCArNzU4LDggQEAgdm9p
ZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKCkKIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxh
dGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCkKIHsKICAgICBPcmRlckl0ZXJhdG9yUG9w
dWxhdG9yIHBvcHVsYXRvcihtX29yZGVySXRlcmF0b3IpOwotICAgIHNpemVfdCBtYXhpbXVtUm93
SW5kZXggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpleHBsaWNp
dEdyaWRSb3dDb3VudChzdHlsZSgpKSk7Ci0gICAgc2l6ZV90IG1heGltdW1Db2x1bW5JbmRleCA9
IHN0ZDo6bWF4PHNpemVfdD4oMSwgR3JpZFJlc29sdmVkUG9zaXRpb246OmV4cGxpY2l0R3JpZENv
bHVtbkNvdW50KHN0eWxlKCkpKTsKKyAgICB1bnNpZ25lZCBtYXhpbXVtUm93SW5kZXggPSBzdGQ6
Om1heDx1bnNpZ25lZD4oMSwgR3JpZFJlc29sdmVkUG9zaXRpb246OmV4cGxpY2l0R3JpZFJvd0Nv
dW50KHN0eWxlKCkpKTsKKyAgICB1bnNpZ25lZCBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1h
eDx1bnNpZ25lZD4oMSwgR3JpZFJlc29sdmVkUG9zaXRpb246OmV4cGxpY2l0R3JpZENvbHVtbkNv
dW50KHN0eWxlKCkpKTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRC
b3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAg
cG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQpOwpAQCAtNzc0LDcgKzc3NCw3IEBAIHZvaWQg
UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCkKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3aXRoIGEg
ZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgogICAgICAg
ICAgICAgR3JpZFNwYW4gcG9zaXRpb25zID0gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlvbihzdHlsZSgpLCAqY2hpbGQsIEZv
clJvd3MsIEdyaWRSZXNvbHZlZFBvc2l0aW9uKDApKTsKLSAgICAgICAgICAgIG1heGltdW1Sb3dJ
bmRleCA9IHN0ZDo6bWF4PHNpemVfdD4obWF4aW11bVJvd0luZGV4LCBwb3NpdGlvbnMucmVzb2x2
ZWRGaW5hbFBvc2l0aW9uLm5leHQoKS50b0ludCgpKTsKKyAgICAgICAgICAgIG1heGltdW1Sb3dJ
bmRleCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwgcG9zaXRpb25zLnJlc29sdmVkRmluYWxQ
b3NpdGlvbi5uZXh0KCkudG9JbnQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29sdW1u
UG9zaXRpb25zKQpAQCAtNzgyLDcgKzc4Miw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVF
eHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCkKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgY29sdW1uIHNwYW4s
IGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgogICAgICAgICAgICAgR3JpZFNwYW4gcG9z
aXRpb25zID0gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbUF1
dG9QbGFjZW1lbnRQb3NpdGlvbihzdHlsZSgpLCAqY2hpbGQsIEZvckNvbHVtbnMsIEdyaWRSZXNv
bHZlZFBvc2l0aW9uKDApKTsKLSAgICAgICAgICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6
bWF4PHNpemVfdD4obWF4aW11bUNvbHVtbkluZGV4LCBwb3NpdGlvbnMucmVzb2x2ZWRGaW5hbFBv
c2l0aW9uLm5leHQoKS50b0ludCgpKTsKKyAgICAgICAgICAgIG1heGltdW1Db2x1bW5JbmRleCA9
IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgcG9zaXRpb25zLnJlc29sdmVkRmluYWxQb3Np
dGlvbi5uZXh0KCkudG9JbnQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc5NCw3ICs3OTQs
NyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRv
cigpCiBzdGQ6OnVuaXF1ZV9wdHI8R3JpZENvb3JkaW5hdGU+IFJlbmRlckdyaWQ6OmNyZWF0ZUVt
cHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKGNvbnN0IFJlbmRlckJv
eCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24s
IGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNvbnN0CiB7CiAgICAgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGNyb3NzRGlyZWN0aW9uID0gc3BlY2lmaWVkRGlyZWN0aW9uID09
IEZvckNvbHVtbnMgPyBGb3JSb3dzIDogRm9yQ29sdW1uczsKLSAgICBjb25zdCBzaXplX3QgZW5k
T2ZDcm9zc0RpcmVjdGlvbiA9IGNyb3NzRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBncmlkQ29s
dW1uQ291bnQoKSA6IGdyaWRSb3dDb3VudCgpOworICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jv
c3NEaXJlY3Rpb24gPSBjcm9zc0RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gZ3JpZENvbHVtbkNv
dW50KCkgOiBncmlkUm93Q291bnQoKTsKICAgICBHcmlkU3BhbiBjcm9zc0RpcmVjdGlvblBvc2l0
aW9ucyA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRv
UGxhY2VtZW50UG9zaXRpb24oc3R5bGUoKSwgZ3JpZEl0ZW0sIGNyb3NzRGlyZWN0aW9uLCBHcmlk
UmVzb2x2ZWRQb3NpdGlvbihlbmRPZkNyb3NzRGlyZWN0aW9uKSk7CiAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R3JpZENvb3JkaW5hdGU+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNp
ZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NE
aXJlY3Rpb25Qb3NpdGlvbnMpOwogfQpAQCAtODM0LDkgKzgzNCw5IEBAIHZvaWQgUmVuZGVyR3Jp
ZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChSZW5kZXJCb3gmIGdyaWRJdGVtLCBBdXRv
UGxhY2VtZW50CiAgICAgQVNTRVJUKCFHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZUdyaWRQ
b3NpdGlvbnNGcm9tU3R5bGUoc3R5bGUoKSwgZ3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4
aXNEaXJlY3Rpb24oKSkpOwogICAgIEdyaWRTcGFuIG1ham9yQXhpc1Bvc2l0aW9ucyA9IEdyaWRS
ZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9z
aXRpb24oc3R5bGUoKSwgZ3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24o
KSwgR3JpZFJlc29sdmVkUG9zaXRpb24oMCkpOwogCi0gICAgY29uc3Qgc2l6ZV90IGVuZE9mTWFq
b3JBeGlzID0gKGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5z
KSA/IGdyaWRDb2x1bW5Db3VudCgpIDogZ3JpZFJvd0NvdW50KCk7Ci0gICAgc2l6ZV90IG1ham9y
QXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9u
KCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vjb25kIDogYXV0b1BsYWNl
bWVudEN1cnNvci5maXJzdDsKLSAgICBzaXplX3QgbWlub3JBeGlzQXV0b1BsYWNlbWVudEN1cnNv
ciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gYXV0
b1BsYWNlbWVudEN1cnNvci5maXJzdCA6IGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vjb25kOworICAg
IGNvbnN0IHVuc2lnbmVkIGVuZE9mTWFqb3JBeGlzID0gKGF1dG9QbGFjZW1lbnRNYWpvckF4aXNE
aXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zKSA/IGdyaWRDb2x1bW5Db3VudCgpIDogZ3JpZFJvd0Nv
dW50KCk7CisgICAgdW5zaWduZWQgbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvciA9IGF1dG9Q
bGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gYXV0b1BsYWNlbWVu
dEN1cnNvci5zZWNvbmQgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0OworICAgIHVuc2lnbmVk
IG1pbm9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGly
ZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3IuZmlyc3QgOiBhdXRv
UGxhY2VtZW50Q3Vyc29yLnNlY29uZDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRp
bmF0ZT4gZW1wdHlHcmlkQXJlYTsKICAgICBpZiAobWlub3JBeGlzUG9zaXRpb25zKSB7CkBAIC04
NTQsMTQgKzg1NCwxNCBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1P
bkdyaWQoUmVuZGVyQm94JiBncmlkSXRlbSwgQXV0b1BsYWNlbWVudAogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEdyaWRTcGFuIG1pbm9yQXhpc1Bvc2l0aW9ucyA9IEdyaWRSZXNvbHZlZFBvc2l0aW9u
OjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24oc3R5bGUoKSwg
Z3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNaW5vckF4aXNEaXJlY3Rpb24oKSwgR3JpZFJlc29sdmVk
UG9zaXRpb24oMCkpOwogCi0gICAgICAgIGZvciAoc2l6ZV90IG1ham9yQXhpc0luZGV4ID0gbWFq
b3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvcjsgbWFqb3JBeGlzSW5kZXggPCBlbmRPZk1ham9yQXhp
czsgKyttYWpvckF4aXNJbmRleCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIG1ham9yQXhpc0lu
ZGV4ID0gbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvcjsgbWFqb3JBeGlzSW5kZXggPCBlbmRP
Zk1ham9yQXhpczsgKyttYWpvckF4aXNJbmRleCkgewogICAgICAgICAgICAgR3JpZEl0ZXJhdG9y
IGl0ZXJhdG9yKG1fZ3JpZCwgYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpLCBtYWpv
ckF4aXNJbmRleCwgbWlub3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvcik7CiAgICAgICAgICAgICBl
bXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRp
b25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1Bvc2l0aW9ucy5pbnRlZ2VyU3BhbigpKTsKIAog
ICAgICAgICAgICAgaWYgKGVtcHR5R3JpZEFyZWEpIHsKICAgICAgICAgICAgICAgICAvLyBDaGVj
ayB0aGF0IGl0IGZpdHMgaW4gdGhlIG1pbm9yIGF4aXMgZGlyZWN0aW9uLCBhcyB3ZSBzaG91bGRu
J3QgZ3JvdyBpbiB0aGF0IGRpcmVjdGlvbiBoZXJlIChpdCB3YXMgYWxyZWFkeSBtYW5hZ2VkIGlu
IHBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpKS4KICAgICAgICAgICAgICAg
ICBHcmlkUmVzb2x2ZWRQb3NpdGlvbiBtaW5vckF4aXNGaW5hbFBvc2l0aW9uSW5kZXggPSBhdXRv
UGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGVtcHR5R3JpZEFy
ZWEtPmNvbHVtbnMucmVzb2x2ZWRGaW5hbFBvc2l0aW9uIDogZW1wdHlHcmlkQXJlYS0+cm93cy5y
ZXNvbHZlZEZpbmFsUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGVuZE9m
TWlub3JBeGlzID0gYXV0b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVt
bnMgPyBncmlkQ29sdW1uQ291bnQoKSA6IGdyaWRSb3dDb3VudCgpOworICAgICAgICAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGVuZE9mTWlub3JBeGlzID0gYXV0b1BsYWNlbWVudE1pbm9yQXhpc0Rp
cmVjdGlvbigpID09IEZvckNvbHVtbnMgPyBncmlkQ29sdW1uQ291bnQoKSA6IGdyaWRSb3dDb3Vu
dCgpOwogICAgICAgICAgICAgICAgIGlmIChtaW5vckF4aXNGaW5hbFBvc2l0aW9uSW5kZXgudG9J
bnQoKSA8IGVuZE9mTWlub3JBeGlzKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAt
OTY5LDEyICs5NjksMTIgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUdyaWRQb3NpdGlvbnMo
Y29uc3QgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpCiB7CiAgICAgbV9jb2x1bW5Qb3NpdGlv
bnMucmVzaXplVG9GaXQoc2l6aW5nRGF0YS5jb2x1bW5UcmFja3Muc2l6ZSgpICsgMSk7CiAgICAg
bV9jb2x1bW5Qb3NpdGlvbnNbMF0gPSBib3JkZXJBbmRQYWRkaW5nU3RhcnQoKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY29sdW1uUG9zaXRpb25zLnNpemUoKSAtIDE7ICsraSkKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jb2x1bW5Qb3NpdGlvbnMuc2l6ZSgpIC0gMTsg
KytpKQogICAgICAgICBtX2NvbHVtblBvc2l0aW9uc1tpICsgMV0gPSBtX2NvbHVtblBvc2l0aW9u
c1tpXSArIHNpemluZ0RhdGEuY29sdW1uVHJhY2tzW2ldLm1fdXNlZEJyZWFkdGg7CiAKICAgICBt
X3Jvd1Bvc2l0aW9ucy5yZXNpemVUb0ZpdChzaXppbmdEYXRhLnJvd1RyYWNrcy5zaXplKCkgKyAx
KTsKICAgICBtX3Jvd1Bvc2l0aW9uc1swXSA9IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcm93UG9zaXRpb25zLnNpemUoKSAtIDE7ICsraSkK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9yb3dQb3NpdGlvbnMuc2l6ZSgpIC0gMTsg
KytpKQogICAgICAgICBtX3Jvd1Bvc2l0aW9uc1tpICsgMV0gPSBtX3Jvd1Bvc2l0aW9uc1tpXSAr
IHNpemluZ0RhdGEucm93VHJhY2tzW2ldLm1fdXNlZEJyZWFkdGg7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IGJiMzQ5NGFhNDk3OGNhZWU0ZTQxOGFjNjAxNDgx
NWM1NTgxODQzNDMuLjcwN2ZhZTJmNTQzNTZkNDU4M2Y0Mjk1ZTljNzA1MDY2NTk2M2IyNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtNzEsMTQgKzcxLDE0IEBAIHBy
aXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlVXNlZEJyZWFkdGhPZlNwZWNpZmllZExlbmd0
aChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAgIHZv
aWQgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmKTsKIAotICAgIHZvaWQgZW5zdXJlR3JpZFNpemUo
c2l6ZV90IG1heGltdW1Sb3dJbmRleCwgc2l6ZV90IG1heGltdW1Db2x1bW5JbmRleCk7CisgICAg
dm9pZCBlbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93SW5kZXgsIHVuc2lnbmVkIG1h
eGltdW1Db2x1bW5JbmRleCk7CiAgICAgdm9pZCBpbnNlcnRJdGVtSW50b0dyaWQoUmVuZGVyQm94
JiwgY29uc3QgR3JpZENvb3JkaW5hdGUmKTsKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoKTsK
ICAgICB2b2lkIHBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRpbmF0ZT4gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lm
aWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VTcGVjaWZp
ZWRNYWpvckF4aXNJdGVtc09uR3JpZChjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mKTsKICAgICB2
b2lkIHBsYWNlQXV0b01ham9yQXhpc0l0ZW1zT25HcmlkKGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gq
PiYpOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90PiBBdXRvUGxhY2VtZW50
Q3Vyc29yOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gQXV0b1Bs
YWNlbWVudEN1cnNvcjsKICAgICB2b2lkIHBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVu
ZGVyQm94JiwgQXV0b1BsYWNlbWVudEN1cnNvciYpOwogICAgIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGF1dG9QbGFjZW1lbnRNaW5vckF4aXNEaXJlY3Rpb24oKSBjb25z
dDsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBjb21wdXRlTm9ybWFs
aXplZEZyYWN0aW9uQnJlYWR0aChWZWN0b3I8R3JpZFRyYWNrPiYsIGNvbnN0IEdyaWRTcGFuJiB0
cmFja3NTcGFuLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIExheW91dFVuaXQgYXZhaWxhYmxl
TG9naWNhbFNwYWNlKSBjb25zdDsKIAotICAgIEdyaWRUcmFja1NpemUgZ3JpZFRyYWNrU2l6ZShH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHNpemVfdCkgY29uc3Q7CisgICAgR3JpZFRyYWNrU2l6
ZSBncmlkVHJhY2tTaXplKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5zaWduZWQpIGNvbnN0
OwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQ29udGVudEhlaWdodEZvckNoaWxkKFJlbmRlckJv
eCYsIFZlY3RvcjxHcmlkVHJhY2s+Jik7CiAgICAgTGF5b3V0VW5pdCBtaW5Db250ZW50Rm9yQ2hp
bGQoUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNr
PiYgY29sdW1uVHJhY2tzKTsKQEAgLTExNCwxMiArMTE0LDEyIEBAIHByaXZhdGU6CiAKICAgICBi
b29sIGdyaWRXYXNQb3B1bGF0ZWQoKSBjb25zdCB7IHJldHVybiAhbV9ncmlkLmlzRW1wdHkoKSAm
JiAhbV9ncmlkWzBdLmlzRW1wdHkoKTsgfQogCi0gICAgc2l6ZV90IGdyaWRDb2x1bW5Db3VudCgp
IGNvbnN0CisgICAgdW5zaWduZWQgZ3JpZENvbHVtbkNvdW50KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIEFTU0VSVChncmlkV2FzUG9wdWxhdGVkKCkpOwogICAgICAgICByZXR1cm4gbV9ncmlkWzBd
LnNpemUoKTsKICAgICB9Ci0gICAgc2l6ZV90IGdyaWRSb3dDb3VudCgpIGNvbnN0CisgICAgdW5z
aWduZWQgZ3JpZFJvd0NvdW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChncmlkV2Fz
UG9wdWxhdGVkKCkpOwogICAgICAgICByZXR1cm4gbV9ncmlkLnNpemUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQ29vcmRpbmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRDb29yZGluYXRlLmgKaW5kZXggOTJmOTZlNjQ1
ZmFlYWZjY2Y1MTg2MjhjY2M3ZmNhYWM1NjFjZmNkNi4uMzNmY2ViNTFlNDIyN2VjODZjZDg1Mjdj
M2JhNjZhNDkwMzIzZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRDb29yZGluYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0dyaWRDb29yZGluYXRlLmgKQEAgLTQxLDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogLy8gUmVjb21tZW5kZWQgbWF4aW11bSBzaXplIGZvciBib3RoIGV4cGxpY2l0IGFuZCBpbXBs
aWNpdCBncmlkcy4KLWNvbnN0IHNpemVfdCBrR3JpZE1heFRyYWNrcyA9IDEwMDAwMDA7Citjb25z
dCB1bnNpZ25lZCBrR3JpZE1heFRyYWNrcyA9IDEwMDAwMDA7CiAKIC8vIEEgc3BhbiBpbiBhIHNp
bmdsZSBkaXJlY3Rpb24gKGVpdGhlciByb3dzIG9yIGNvbHVtbnMpLiBOb3RlIHRoYXQgfHJlc29s
dmVkSW5pdGlhbFBvc2l0aW9ufAogLy8gYW5kIHxyZXNvbHZlZEZpbmFsUG9zaXRpb258IGFyZSBn
cmlkIGFyZWFzJyBpbmRleGVzLCBOT1QgZ3JpZCBsaW5lcycuIEl0ZXJhdGluZyBvdmVyIHRoZQpA
QCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXNvbHZlZEluaXRpYWxQ
b3NpdGlvbiA9PSBvLnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uICYmIHJlc29sdmVkRmluYWxQb3Np
dGlvbiA9PSBvLnJlc29sdmVkRmluYWxQb3NpdGlvbjsKICAgICB9CiAKLSAgICBzaXplX3QgaW50
ZWdlclNwYW4oKSBjb25zdAorICAgIHVuc2lnbmVkIGludGVnZXJTcGFuKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiByZXNvbHZlZEZpbmFsUG9zaXRpb24udG9JbnQoKSAtIHJlc29sdmVk
SW5pdGlhbFBvc2l0aW9uLnRvSW50KCkgKyAxOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uY3BwCmluZGV4IDBm
MzYyYWVmYTFiYWY2MTExNGVmNGI0NDgxNzY3MDdiMmJlMjUzMGMuLmNjZGMyYTNkYzZkYTJkNjUz
NGE3ZWI2MzUwOWU2YjQzYmFhMWZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZlZFBvc2l0aW9uLmNwcApAQCAtNDgsMTcgKzQ4LDE3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1N0YXJ0U2lkZShHcmlkUG9zaXRpb25TaWRlIHNpZGUp
CiAgICAgcmV0dXJuIHNpZGUgPT0gQ29sdW1uU3RhcnRTaWRlIHx8IHNpZGUgPT0gUm93U3RhcnRT
aWRlOwogfQogCi1zaXplX3QgR3JpZFJlc29sdmVkUG9zaXRpb246OmV4cGxpY2l0R3JpZENvbHVt
bkNvdW50KGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUpCit1bnNpZ25lZCBH
cmlkUmVzb2x2ZWRQb3NpdGlvbjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVy
U3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptaW4oZ3JpZENv
bnRhaW5lclN0eWxlLmdyaWRDb2x1bW5zKCkuc2l6ZSgpLCBrR3JpZE1heFRyYWNrcyk7CisgICAg
cmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihncmlkQ29udGFpbmVyU3R5bGUuZ3JpZENvbHVtbnMo
KS5zaXplKCksIGtHcmlkTWF4VHJhY2tzKTsKIH0KIAotc2l6ZV90IEdyaWRSZXNvbHZlZFBvc2l0
aW9uOjpleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5l
clN0eWxlKQordW5zaWduZWQgR3JpZFJlc29sdmVkUG9zaXRpb246OmV4cGxpY2l0R3JpZFJvd0Nv
dW50KGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWluKGdyaWRDb250YWluZXJTdHlsZS5ncmlkUm93cygpLnNpemUoKSwga0dyaWRNYXhU
cmFja3MpOworICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JpZENvbnRhaW5lclN0eWxl
LmdyaWRSb3dzKCkuc2l6ZSgpLCBrR3JpZE1heFRyYWNrcyk7CiB9CiAKLXN0YXRpYyBzaXplX3Qg
ZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJT
dHlsZSwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQorc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3Jp
ZFNpemVGb3JTaWRlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIEdyaWRQ
b3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICByZXR1cm4gaXNDb2x1bW5TaWRlKHNpZGUpID8gR3Jp
ZFJlc29sdmVkUG9zaXRpb246OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGdyaWRDb250YWluZXJT
dHlsZSkgOiBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6ZXhwbGljaXRHcmlkUm93Q291bnQoZ3JpZENv
bnRhaW5lclN0eWxlKTsKIH0KQEAgLTE3NSwxNSArMTc1LDE1IEBAIEdyaWRSZXNvbHZlZFBvc2l0
aW9uIEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJv
bVN0eWxlCiAgICAgaWYgKGl0ID09IGdyaWRMaW5lc05hbWVzLmVuZCgpKSB7CiAgICAgICAgIGlm
IChwb3NpdGlvbi5pc1Bvc2l0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
Y29uc3Qgc2l6ZV90IGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRh
aW5lclN0eWxlLCBzaWRlKTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgbGFzdExpbmUgPSBleHBs
aWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUpOwogICAgICAgICBy
ZXR1cm4gR3JpZFJlc29sdmVkUG9zaXRpb246OmFkanVzdEdyaWRQb3NpdGlvbkZvclNpZGUobGFz
dExpbmUsIHNpZGUpOwogICAgIH0KIAotICAgIHNpemVfdCBuYW1lZEdyaWRMaW5lSW5kZXg7Cisg
ICAgdW5zaWduZWQgbmFtZWRHcmlkTGluZUluZGV4OwogICAgIGlmIChwb3NpdGlvbi5pc1Bvc2l0
aXZlKCkpCi0gICAgICAgIG5hbWVkR3JpZExpbmVJbmRleCA9IHN0ZDo6bWluPHNpemVfdD4ocG9z
aXRpb24uaW50ZWdlclBvc2l0aW9uKCksIGl0LT52YWx1ZS5zaXplKCkpIC0gMTsKKyAgICAgICAg
bmFtZWRHcmlkTGluZUluZGV4ID0gc3RkOjptaW48dW5zaWduZWQ+KHBvc2l0aW9uLmludGVnZXJQ
b3NpdGlvbigpLCBpdC0+dmFsdWUuc2l6ZSgpKSAtIDE7CiAgICAgZWxzZQotICAgICAgICBuYW1l
ZEdyaWRMaW5lSW5kZXggPSBzdGQ6Om1heDxpbnQ+KGl0LT52YWx1ZS5zaXplKCkgLSBhYnMocG9z
aXRpb24uaW50ZWdlclBvc2l0aW9uKCkpLCAwKTsKKyAgICAgICAgbmFtZWRHcmlkTGluZUluZGV4
ID0gc3RkOjptYXg8aW50PigwLCBpdC0+dmFsdWUuc2l6ZSgpIC0gYWJzKHBvc2l0aW9uLmludGVn
ZXJQb3NpdGlvbigpKSk7CiAgICAgcmV0dXJuIEdyaWRSZXNvbHZlZFBvc2l0aW9uOjphZGp1c3RH
cmlkUG9zaXRpb25Gb3JTaWRlKGl0LT52YWx1ZVtuYW1lZEdyaWRMaW5lSW5kZXhdLCBzaWRlKTsK
IH0KIApAQCAtMjAwLDggKzIwMCw4IEBAIEdyaWRSZXNvbHZlZFBvc2l0aW9uIEdyaWRSZXNvbHZl
ZFBvc2l0aW9uOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlCiAgICAgICAg
IGlmIChwb3NpdGlvbi5pc1Bvc2l0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm4gR3JpZFJlc29s
dmVkUG9zaXRpb246OmFkanVzdEdyaWRQb3NpdGlvbkZvclNpZGUocG9zaXRpb24uaW50ZWdlclBv
c2l0aW9uKCkgLSAxLCBzaWRlKTsKIAotICAgICAgICBzaXplX3QgcmVzb2x2ZWRQb3NpdGlvbiA9
IGFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSkgLSAxOwotICAgICAgICBjb25zdCBzaXpl
X3QgZW5kT2ZUcmFjayA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHls
ZSwgc2lkZSk7CisgICAgICAgIHVuc2lnbmVkIHJlc29sdmVkUG9zaXRpb24gPSBhYnMocG9zaXRp
b24uaW50ZWdlclBvc2l0aW9uKCkpIC0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZU
cmFjayA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lkZSk7
CiAKICAgICAgICAgLy8gUGVyIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3
dy1zdHlsZS8yMDEzTWFyLzA1ODkuaHRtbCwgd2UgY2xhbXAgbmVnYXRpdmUgdmFsdWUgdG8gdGhl
IGZpcnN0IGxpbmUuCiAgICAgICAgIGlmIChlbmRPZlRyYWNrIDwgcmVzb2x2ZWRQb3NpdGlvbikK
QEAgLTI1OSw5ICsyNTksOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IEdyaWRSZXNvbHZl
ZFBvc2l0aW9uOjpyZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaQogCiAgICAgLy8gJ3Nw
YW4gMScgaXMgY29udGFpbmVkIGluc2lkZSBhIHNpbmdsZSBncmlkIHRyYWNrIHJlZ2FyZGxlc3Mg
b2YgdGhlIGRpcmVjdGlvbi4KICAgICAvLyBUaGF0J3Mgd2h5IHRoZSBDU1Mgc3BhbiB2YWx1ZSBp
cyBvbmUgbW9yZSB0aGFuIHRoZSBvZmZzZXQgd2UgYXBwbHkuCi0gICAgc2l6ZV90IHBvc2l0aW9u
T2Zmc2V0ID0gcG9zaXRpb24uc3BhblBvc2l0aW9uKCkgLSAxOworICAgIHVuc2lnbmVkIHBvc2l0
aW9uT2Zmc2V0ID0gcG9zaXRpb24uc3BhblBvc2l0aW9uKCkgLSAxOwogICAgIGlmIChpc1N0YXJ0
U2lkZShzaWRlKSkgewotICAgICAgICBzaXplX3QgaW5pdGlhbFJlc29sdmVkUG9zaXRpb24gPSBz
dGQ6Om1heDxpbnQ+KDAsIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbi50b0ludCgpIC0gcG9zaXRp
b25PZmZzZXQpOworICAgICAgICB1bnNpZ25lZCBpbml0aWFsUmVzb2x2ZWRQb3NpdGlvbiA9IHN0
ZDo6bWF4PGludD4oMCwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLnRvSW50KCkgLSBwb3NpdGlv
bk9mZnNldCk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRTcGFuPihpbml0
aWFsUmVzb2x2ZWRQb3NpdGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKICAgICB9CiAK
QEAgLTI4OSwxMyArMjg5LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gR3JpZFJlc29s
dmVkUG9zaXRpb246OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpCiAgICAgcmV0dXJu
IHJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIHBvc2l0aW9uLCBpdC0+dmFsdWUp
OwogfQogCi1zdGF0aWMgaW5saW5lIHNpemVfdCBmaXJzdE5hbWVkR3JpZExpbmVCZWZvcmVQb3Np
dGlvbihzaXplX3QgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBncmlkTGluZXMpCitz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGZpcnN0TmFtZWRHcmlkTGluZUJlZm9yZVBvc2l0aW9uKHVu
c2lnbmVkIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBncmlkTGluZXMpCiB7CiAg
ICAgLy8gVGhlIGdyaWQgbGluZSBpbmVxdWFsaXR5IG5lZWRzIHRvIGJlIHN0cmljdCAod2hpY2gg
ZG9lc24ndCBtYXRjaCB0aGUgYWZ0ZXIgLyBlbmQgY2FzZSkgYmVjYXVzZSB8cG9zaXRpb258IGlz
CiAgICAgLy8gYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYW4gaW5kZXggaW4gb3VyIGdyaWQgcmVwcmVz
ZW50YXRpb24gKGllIG9uZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBncmlkIGxpbmUgdG8gYWNjb3Vu
dCBmb3IKICAgICAvLyB0aGUgc2lkZSkuCi0gICAgc2l6ZV90IGZpcnN0TGluZUJlZm9yZVBvc2l0
aW9uSW5kZXggPSAwOwotICAgIGNvbnN0IHNpemVfdCogZmlyc3RMaW5lQmVmb3JlUG9zaXRpb24g
PSBzdGQ6Omxvd2VyX2JvdW5kKGdyaWRMaW5lcy5iZWdpbigpLCBncmlkTGluZXMuZW5kKCksIHBv
c2l0aW9uKTsKKyAgICB1bnNpZ25lZCBmaXJzdExpbmVCZWZvcmVQb3NpdGlvbkluZGV4ID0gMDsK
KyAgICBjb25zdCB1bnNpZ25lZCogZmlyc3RMaW5lQmVmb3JlUG9zaXRpb24gPSBzdGQ6Omxvd2Vy
X2JvdW5kKGdyaWRMaW5lcy5iZWdpbigpLCBncmlkTGluZXMuZW5kKCksIHBvc2l0aW9uKTsKICAg
ICBpZiAoZmlyc3RMaW5lQmVmb3JlUG9zaXRpb24gIT0gZ3JpZExpbmVzLmVuZCgpKSB7CiAgICAg
ICAgIGlmICgqZmlyc3RMaW5lQmVmb3JlUG9zaXRpb24gPiBwb3NpdGlvbiAmJiBmaXJzdExpbmVC
ZWZvcmVQb3NpdGlvbiAhPSBncmlkTGluZXMuYmVnaW4oKSkKICAgICAgICAgICAgIC0tZmlyc3RM
aW5lQmVmb3JlUG9zaXRpb247CkBAIC0zMDUsMjMgKzMwNSwyNCBAQCBzdGF0aWMgaW5saW5lIHNp
emVfdCBmaXJzdE5hbWVkR3JpZExpbmVCZWZvcmVQb3NpdGlvbihzaXplX3QgcG9zaXRpb24sIGNv
bnN0IFZlYwogICAgIHJldHVybiBmaXJzdExpbmVCZWZvcmVQb3NpdGlvbkluZGV4OwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlUm93
U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKGNvbnN0IEdyaWRSZXNvbHZlZFBvc2l0aW9uJiByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24s
IGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBncmlk
TGluZXMpCitzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpy
ZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBv
c2l0ZVBvc2l0aW9uKGNvbnN0IEdyaWRSZXNvbHZlZFBvc2l0aW9uJiByZXNvbHZlZE9wcG9zaXRl
UG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3Rvcjx1bnNp
Z25lZD4mIGdyaWRMaW5lcykKIHsKLSAgICBzaXplX3QgZ3JpZExpbmVJbmRleCA9IHN0ZDo6bWF4
PGludD4oMCwgZmlyc3ROYW1lZEdyaWRMaW5lQmVmb3JlUG9zaXRpb24ocmVzb2x2ZWRPcHBvc2l0
ZVBvc2l0aW9uLnRvSW50KCksIGdyaWRMaW5lcykgLSBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSAr
IDEpOworICAgIHVuc2lnbmVkIGdyaWRMaW5lSW5kZXggPSBzdGQ6Om1heDxpbnQ+KDAsIGZpcnN0
TmFtZWRHcmlkTGluZUJlZm9yZVBvc2l0aW9uKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbi50b0lu
dCgpLCBncmlkTGluZXMpIC0gcG9zaXRpb24uc3BhblBvc2l0aW9uKCkgKyAxKTsKICAgICBHcmlk
UmVzb2x2ZWRQb3NpdGlvbiByZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24gPSBHcmlkUmVzb2x2ZWRQ
b3NpdGlvbihncmlkTGluZXNbZ3JpZExpbmVJbmRleF0pOwogICAgIGlmIChyZXNvbHZlZEdyaWRM
aW5lUG9zaXRpb24gPiByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pCiAgICAgICAgIHJlc29sdmVk
R3JpZExpbmVQb3NpdGlvbiA9IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbjsKICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxHcmlkU3Bhbj4ocmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uLCByZXNv
bHZlZE9wcG9zaXRlUG9zaXRpb24pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IEdy
aWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFtZWRHcmlkTGluZVBv
c2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgR3JpZFJlc29sdmVkUG9zaXRpb24m
IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwg
Y29uc3QgVmVjdG9yPHNpemVfdD4mIGdyaWRMaW5lcykKK3N0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bh
bj4gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRM
aW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBHcmlkUmVzb2x2ZWRQb3Np
dGlvbiYgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0
aW9uLCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBncmlkTGluZXMpCiB7Ci0gICAgc2l6ZV90IGZp
cnN0TGluZUFmdGVyT3Bwb3NpdGVQb3NpdGlvbkluZGV4ID0gZ3JpZExpbmVzLnNpemUoKSAtIDE7
Ci0gICAgY29uc3Qgc2l6ZV90KiBmaXJzdExpbmVBZnRlck9wcG9zaXRlUG9zaXRpb24gPSBzdGQ6
OnVwcGVyX2JvdW5kKGdyaWRMaW5lcy5iZWdpbigpLCBncmlkTGluZXMuZW5kKCksIHJlc29sdmVk
T3Bwb3NpdGVQb3NpdGlvbik7CisgICAgQVNTRVJUKGdyaWRMaW5lcy5zaXplKCkpOworICAgIHVu
c2lnbmVkIGZpcnN0TGluZUFmdGVyT3Bwb3NpdGVQb3NpdGlvbkluZGV4ID0gZ3JpZExpbmVzLnNp
emUoKSAtIDE7CisgICAgY29uc3QgdW5zaWduZWQqIGZpcnN0TGluZUFmdGVyT3Bwb3NpdGVQb3Np
dGlvbiA9IHN0ZDo6dXBwZXJfYm91bmQoZ3JpZExpbmVzLmJlZ2luKCksIGdyaWRMaW5lcy5lbmQo
KSwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKICAgICBpZiAoZmlyc3RMaW5lQWZ0ZXJPcHBv
c2l0ZVBvc2l0aW9uICE9IGdyaWRMaW5lcy5lbmQoKSkKICAgICAgICAgZmlyc3RMaW5lQWZ0ZXJP
cHBvc2l0ZVBvc2l0aW9uSW5kZXggPSBmaXJzdExpbmVBZnRlck9wcG9zaXRlUG9zaXRpb24gLSBn
cmlkTGluZXMuYmVnaW4oKTsKIAotICAgIHNpemVfdCBncmlkTGluZUluZGV4ID0gc3RkOjptaW4o
Z3JpZExpbmVzLnNpemUoKSAtIDEsIGZpcnN0TGluZUFmdGVyT3Bwb3NpdGVQb3NpdGlvbkluZGV4
ICsgcG9zaXRpb24uc3BhblBvc2l0aW9uKCkgLSAxKTsKKyAgICB1bnNpZ25lZCBncmlkTGluZUlu
ZGV4ID0gc3RkOjptaW48dW5zaWduZWQ+KGdyaWRMaW5lcy5zaXplKCkgLSAxLCBmaXJzdExpbmVB
ZnRlck9wcG9zaXRlUG9zaXRpb25JbmRleCArIHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpIC0gMSk7
CiAgICAgR3JpZFJlc29sdmVkUG9zaXRpb24gcmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uID0gR3Jp
ZFJlc29sdmVkUG9zaXRpb246OmFkanVzdEdyaWRQb3NpdGlvbkZvclJvd0VuZENvbHVtbkVuZFNp
ZGUoZ3JpZExpbmVzW2dyaWRMaW5lSW5kZXhdKTsKICAgICBpZiAocmVzb2x2ZWRHcmlkTGluZVBv
c2l0aW9uIDwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKQogICAgICAgICByZXNvbHZlZEdyaWRM
aW5lUG9zaXRpb24gPSByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5oCmluZGV4IDhm
YjE0M2YyMWY1NmVmNWQzNjY2NmJiYWUxYzIxZWQwNTk4YTk3ODcuLjk1NTU2Y2RlYmViYmJkYzRi
NzFlZDJjNDFkZjU5MmFiMzllM2JmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5oCkBAIC01NCwxNSArNTQsMTUgQEAg
ZW51bSBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gewogfTsKIAogLy8gVGhpcyBjbGFzcyByZXBy
ZXNlbnRzIGFuIGluZGV4IGludG8gb25lIG9mIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBncmlkIGFy
cmF5LgotLy8gV3JhcHMgYSBzaXplX3QgaW50ZWdlciBqdXN0IGZvciB0aGUgcHVycG9zZSBvZiBr
bm93aW5nIHdoYXQgd2UgbWFuaXB1bGF0ZSBpbiB0aGUgZ3JpZCBjb2RlLgorLy8gV3JhcHMgYW4g
dW5zaWduZWQgaW50ZWdlciBqdXN0IGZvciB0aGUgcHVycG9zZSBvZiBrbm93aW5nIHdoYXQgd2Ug
bWFuaXB1bGF0ZSBpbiB0aGUgZ3JpZCBjb2RlLgogY2xhc3MgR3JpZFJlc29sdmVkUG9zaXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBHcmlkUmVzb2x2ZWRQb3NpdGlvbiBhZGp1c3RHcmlkUG9z
aXRpb25Gb3JSb3dFbmRDb2x1bW5FbmRTaWRlKHNpemVfdCByZXNvbHZlZFBvc2l0aW9uKQorICAg
IHN0YXRpYyBHcmlkUmVzb2x2ZWRQb3NpdGlvbiBhZGp1c3RHcmlkUG9zaXRpb25Gb3JSb3dFbmRD
b2x1bW5FbmRTaWRlKHVuc2lnbmVkIHJlc29sdmVkUG9zaXRpb24pCiAgICAgewogICAgICAgICBy
ZXR1cm4gcmVzb2x2ZWRQb3NpdGlvbiA/IEdyaWRSZXNvbHZlZFBvc2l0aW9uKHJlc29sdmVkUG9z
aXRpb24gLSAxKSA6IEdyaWRSZXNvbHZlZFBvc2l0aW9uKDApOwogICAgIH0KIAotICAgIHN0YXRp
YyBHcmlkUmVzb2x2ZWRQb3NpdGlvbiBhZGp1c3RHcmlkUG9zaXRpb25Gb3JTaWRlKHNpemVfdCBy
ZXNvbHZlZFBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCisgICAgc3RhdGljIEdyaWRS
ZXNvbHZlZFBvc2l0aW9uIGFkanVzdEdyaWRQb3NpdGlvbkZvclNpZGUodW5zaWduZWQgcmVzb2x2
ZWRQb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogICAgIHsKICAgICAgICAgLy8gQW4g
aXRlbSBmaW5pc2hpbmcgb24gdGhlIE4tdGggbGluZSBiZWxvbmdzIHRvIHRoZSBOLTEtdGggY2Vs
bC4KICAgICAgICAgaWYgKHNpZGUgPT0gQ29sdW1uRW5kU2lkZSB8fCBzaWRlID09IFJvd0VuZFNp
ZGUpCkBAIC03OSwxMCArNzksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBHcmlkUmVzb2x2ZWRQ
b3NpdGlvbiByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgR3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0aW9uU2lkZSk7CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkU3Bhbj4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBv
c2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgR3JpZFJlc29sdmVkUG9zaXRpb24mLCBj
b25zdCBHcmlkUG9zaXRpb24mLCBHcmlkUG9zaXRpb25TaWRlKTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9w
cG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBHcmlkUmVzb2x2ZWRQb3Np
dGlvbiYsIGNvbnN0IEdyaWRQb3NpdGlvbiYsIEdyaWRQb3NpdGlvblNpZGUpOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFt
ZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgR3JpZFJlc29s
dmVkUG9zaXRpb24mLCBjb25zdCBHcmlkUG9zaXRpb24mLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYp
OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29sdmVSb3dFbmRDb2x1
bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBH
cmlkUmVzb2x2ZWRQb3NpdGlvbiYsIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNvbnN0IFZlY3Rvcjxz
aXplX3Q+Jik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gcmVzb2x2ZVJv
d1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3Np
dGlvbihjb25zdCBHcmlkUmVzb2x2ZWRQb3NpdGlvbiYsIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNv
bnN0IFZlY3Rvcjx1bnNpZ25lZD4mKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdyaWRT
cGFuPiByZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9w
cG9zaXRlUG9zaXRpb24oY29uc3QgR3JpZFJlc29sdmVkUG9zaXRpb24mLCBjb25zdCBHcmlkUG9z
aXRpb24mLCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+Jik7CiAKLSAgICBHcmlkUmVzb2x2ZWRQb3Np
dGlvbihzaXplX3QgcG9zaXRpb24pCisgICAgR3JpZFJlc29sdmVkUG9zaXRpb24odW5zaWduZWQg
cG9zaXRpb24pCiAgICAgICAgIDogbV9pbnRlZ2VyUG9zaXRpb24ocG9zaXRpb24pCiAgICAgewog
ICAgIH0KQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIEdyaWRSZXNvbHZlZFBvc2l0aW9u
KGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSk7Ci0gICAgICAg
IHNpemVfdCBpbnRlZ2VyUG9zaXRpb24gPSBwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSAtIDE7
CisgICAgICAgIHVuc2lnbmVkIGludGVnZXJQb3NpdGlvbiA9IHBvc2l0aW9uLmludGVnZXJQb3Np
dGlvbigpIC0gMTsKIAogICAgICAgICBtX2ludGVnZXJQb3NpdGlvbiA9IGFkanVzdEdyaWRQb3Np
dGlvbkZvclNpZGUoaW50ZWdlclBvc2l0aW9uLCBzaWRlKS5tX2ludGVnZXJQb3NpdGlvbjsKICAg
ICB9CkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbnRlZ2Vy
UG9zaXRpb24gPj0gb3RoZXIubV9pbnRlZ2VyUG9zaXRpb247CiAgICAgfQogCi0gICAgc2l6ZV90
IHRvSW50KCkgY29uc3QKKyAgICB1bnNpZ25lZCB0b0ludCgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9pbnRlZ2VyUG9zaXRpb247CiAgICAgfQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gR3JpZFJlc29sdmVkUG9zaXRpb24obV9pbnRlZ2VyUG9z
aXRpb24gKyAxKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc2l6ZV90IGV4cGxpY2l0R3JpZENvbHVt
bkNvdW50KGNvbnN0IFJlbmRlclN0eWxlJik7Ci0gICAgc3RhdGljIHNpemVfdCBleHBsaWNpdEdy
aWRSb3dDb3VudChjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHN0YXRpYyB1bnNpZ25lZCBleHBs
aWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHN0YXRpYyB1bnNp
Z25lZCBleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJTdHlsZSYpOwogCiBwcml2YXRl
OgogCi0gICAgc2l6ZV90IG1faW50ZWdlclBvc2l0aW9uOworICAgIHVuc2lnbmVkIG1faW50ZWdl
clBvc2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKaW5kZXggODkwODIyYTM2NDZiODk3
NWNiNzMxZGUxYWNlM2ExZGVkMzU2YWZjZC4uYmViNGVmZjg2MTc1ZmJhZGJlMWViM2NjYjIzMTYz
NDAyMWUxN2RmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR3JpZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVH
cmlkRGF0YS5oCkBAIC0zOCw4ICszOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHNpemVfdD4+IE5hbWVkR3JpZExpbmVzTWFwOwot
dHlwZWRlZiBIYXNoTWFwPHNpemVfdCwgVmVjdG9yPFN0cmluZz4sIFdURjo6SW50SGFzaDxzaXpl
X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHNpemVfdD4+IE9yZGVyZWRO
YW1lZEdyaWRMaW5lc01hcDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1bnNpZ25l
ZD4+IE5hbWVkR3JpZExpbmVzTWFwOwordHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBWZWN0b3I8
U3RyaW5nPiwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+IE9yZGVyZWROYW1lZEdyaWRMaW5lc01hcDsKIAogY2xhc3Mg
U3R5bGVHcmlkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlR3JpZERhdGE+IHsKIHB1Ymxp
YzoKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogICAgIE5hbWVkR3JpZEFyZWFNYXAgbV9uYW1l
ZEdyaWRBcmVhOwogICAgIC8vIEJlY2F1c2UgbV9uYW1lZEdyaWRBcmVhIGRvZXNuJ3Qgc3RvcmUg
dGhlIHVubmFtZWQgZ3JpZCBhcmVhcywgd2UgbmVlZCB0byBrZWVwIHRyYWNrCiAgICAgLy8gb2Yg
dGhlIGV4cGxpY2l0IGdyaWQgc2l6ZSBkZWZpbmVkIGJ5IGJvdGggbmFtZWQgYW5kIHVubmFtZWQg
Z3JpZCBhcmVhcy4KLSAgICBzaXplX3QgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7Ci0gICAgc2l6
ZV90IG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50OworICAgIHVuc2lnbmVkIG1fbmFtZWRHcmlk
QXJlYVJvd0NvdW50OworICAgIHVuc2lnbmVkIG1fbmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50Owog
CiBwcml2YXRlOgogICAgIFN0eWxlR3JpZERhdGEoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241483</attachid>
            <date>2014-11-13 07:22:11 -0800</date>
            <delta_ts>2014-11-18 01:12:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136218-20141113162216.patch</filename>
            <type>text/plain</type>
            <size>43658</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRmZTAxMDAyOTFjM2Fi
YjUzZGY4ZWNmMWE0NDdmZjA1Y2U5NDNlMy4uYzY2MmU5YWVhZmU0YTkwMjE3MzZjN2NhODRlMDZk
NGZmYzM4NDVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTExLTEyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIFJlcGxhY2UgdGhlIHVzYWdlIG9mIHNpemVfdCBieSB1bnNpZ25lZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MjE4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gZ2VuZXJhbCwgc2l6
ZV90IHNob3VsZCBiZSB1c2VkIGZvciBzaXplcyBvZiBvYmplY3RzIGluCisgICAgICAgIG1lbW9y
eS4gV2UncmUgdXNpbmcgaXQgdG8gcmVwcmVzZW50IGluZGV4ZXMgYW5kIHNwYW5zIGluIHRoZQor
ICAgICAgICBncmlkLiBOb3cgdGhhdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJhY2tzIGlzIDEg
bWlsbGlvbiwgaXQKKyAgICAgICAgc2hvdWxkIGJlIHNhZmUgdG8gcmVwbGFjZSB0aGVtIGJ5IHVu
c2lnbmVkIGludGVnZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGVyZSBpcyBubyBj
aGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9u
KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6R3JpZEl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6bmV4
dEdyaWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6
aXNFbXB0eUFyZWFFbm91Z2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZEl0
ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpHcmlkU2l6aW5nRGF0YTo6R3JpZFNpemluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OmdyaWRUcmFja1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OmVuc3VyZUdyaWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlv
bnNPdXRzaWRlR3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUF1dG9N
YWpvckF4aXNJdGVtT25HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBvcHVs
YXRlR3JpZFBvc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRTcGFuOjppbnRlZ2VyU3Bhbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dy
aWRSZXNvbHZlZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZlZFBv
c2l0aW9uOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlk
UmVzb2x2ZWRQb3NpdGlvbjo6ZXhwbGljaXRHcmlkUm93Q291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFJlc29s
dmVkUG9zaXRpb246OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlkUG9zaXRpb25G
cm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29s
dmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpmaXJzdE5hbWVkR3JpZExpbmVCZWZvcmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZVJvd1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRM
aW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZl
ZFBvc2l0aW9uOjphZGp1c3RHcmlkUG9zaXRpb25Gb3JSb3dFbmRDb2x1bW5FbmRTaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZlZFBvc2l0aW9uOjphZGp1c3RHcmlkUG9zaXRpb25G
b3JTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZlZFBvc2l0aW9uOjpHcmlkUmVz
b2x2ZWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6
dG9JbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmg6CisKIDIw
MTQtMDktMDEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXSzJdIFVzZXJNZWRpYUNsaWVudCBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDZhMTA3YjA1YmY1YmRlYmNlMjE5YmE0ZWUyODdlZWRkZmM0YjFjMzMuLjc4MGY1ZDEw
MGNhN2QwMDFhNmI1ZTBkNDU4Y2MzMjVlYjllYTY4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCkBAIC01MjY5LDcgKzUyNjksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tS
ZXBlYXRGdW5jdGlvbihDU1NWYWx1ZUxpc3QmIGxpc3QpCiAgICAgQVNTRVJUKGFyZ3VtZW50cy0+
dmFsdWVBdCgwKS0+ZlZhbHVlID4gMCk7CiAgICAgLy8gSWYgYXJndW1lbnRzLT52YWx1ZUF0KDAp
LT5mVmFsdWUgPiBTSVpFX01BWCB0aGVuIHJlcGV0aXRpb25zIGJlY29tZXMgMCBkdXJpbmcgdGhl
IHR5cGUgY2FzdGluZywgdGhhdCdzIHdoeSB3ZQogICAgIC8vIGNsYW1wIGl0IGRvd24gdG8ga0dy
aWRNYXhUcmFja3MgYmVmb3JlIHRoZSB0eXBlIGNhc3RpbmcuCi0gICAgc2l6ZV90IHJlcGV0aXRp
b25zID0gY2xhbXBUbzxzaXplX3Q+KGFyZ3VtZW50cy0+dmFsdWVBdCgwKS0+ZlZhbHVlLCAwLCBr
R3JpZE1heFRyYWNrcyk7CisgICAgdW5zaWduZWQgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHVuc2ln
bmVkPihhcmd1bWVudHMtPnZhbHVlQXQoMCktPmZWYWx1ZSwgMCwga0dyaWRNYXhUcmFja3MpOwog
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcmVwZWF0ZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgYXJndW1lbnRzLT5uZXh0KCk7IC8vIFNraXAg
dGhlIHJlcGV0aXRpb24gY291bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggMTc3ODc3MWNjOTQ1YWY1ZmU1NWEyNjk2MDViMDBjMzIwYjZiNDc5My4uMjZkMjFiZTllYzli
NjdjMmVkZDk4OGYyMmQzZDhmM2I3ZDc2NDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMTg5NSwxMiArMTg5NSwxMiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVJbXBsaWNp
dE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbQog
ICAgIGZvciAoYXV0byYgYXJlYSA6IG5hbWVkR3JpZEFyZWFzKSB7CiAgICAgICAgIEdyaWRTcGFu
IGFyZWFTcGFuID0gZGlyZWN0aW9uID09IEZvclJvd3MgPyBhcmVhLnZhbHVlLnJvd3MgOiBhcmVh
LnZhbHVlLmNvbHVtbnM7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8mIHN0YXJ0VmVjdG9y
ID0gbmFtZWRHcmlkTGluZXMuYWRkKGFyZWEua2V5ICsgIi1zdGFydCIsIFZlY3RvcjxzaXplX3Q+
KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIGF1dG8mIHN0YXJ0VmVjdG9yID0gbmFt
ZWRHcmlkTGluZXMuYWRkKGFyZWEua2V5ICsgIi1zdGFydCIsIFZlY3Rvcjx1bnNpZ25lZD4oKSku
aXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgc3RhcnRWZWN0b3IuYXBwZW5kKGFyZWFTcGFu
LnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLnRvSW50KCkpOwogICAgICAgICAgICAgc3RkOjpzb3J0
KHN0YXJ0VmVjdG9yLmJlZ2luKCksIHN0YXJ0VmVjdG9yLmVuZCgpKTsKICAgICAgICAgfQogICAg
ICAgICB7Ci0gICAgICAgICAgICBhdXRvJiBlbmRWZWN0b3IgPSBuYW1lZEdyaWRMaW5lcy5hZGQo
YXJlYS5rZXkgKyAiLWVuZCIsIFZlY3RvcjxzaXplX3Q+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICAgICAgICAgIGF1dG8mIGVuZFZlY3RvciA9IG5hbWVkR3JpZExpbmVzLmFkZChhcmVhLmtleSAr
ICItZW5kIiwgVmVjdG9yPHVuc2lnbmVkPigpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAg
ICBlbmRWZWN0b3IuYXBwZW5kKGFyZWFTcGFuLnJlc29sdmVkRmluYWxQb3NpdGlvbi5uZXh0KCku
dG9JbnQoKSk7CiAgICAgICAgICAgICBzdGQ6OnNvcnQoZW5kVmVjdG9yLmJlZ2luKCksIGVuZFZl
Y3Rvci5lbmQoKSk7CiAgICAgICAgIH0KQEAgLTE5NzAsMTIgKzE5NzAsMTIgQEAgc3RhdGljIGJv
b2wgY3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxHcmlkVHJhY2tT
aXplPiYgdHJhY2tTaXoKICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4oKnZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2l6ZV90IGN1cnJlbnROYW1lZEdyaWRMaW5lID0gMDsK
KyAgICB1bnNpZ25lZCBjdXJyZW50TmFtZWRHcmlkTGluZSA9IDA7CiAgICAgZm9yIChhdXRvJiBj
dXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkpIHsKICAgICAgICAg
aWYgKGlzPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSkgewogICAg
ICAgICAgICAgZm9yIChhdXRvJiBjdXJyZW50R3JpZExpbmVOYW1lIDogZG93bmNhc3Q8Q1NTR3Jp
ZExpbmVOYW1lc1ZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIG5hbWVkR3JpZExpbmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVu
dEdyaWRMaW5lTmFtZS5nZXQoKSkuZ2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgICAgICBO
YW1lZEdyaWRMaW5lc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChu
YW1lZEdyaWRMaW5lLCBWZWN0b3I8c2l6ZV90PigpKTsKKyAgICAgICAgICAgICAgICBOYW1lZEdy
aWRMaW5lc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChuYW1lZEdy
aWRMaW5lLCBWZWN0b3I8dW5zaWduZWQ+KCkpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuYXBwZW5kKGN1cnJlbnROYW1lZEdyaWRMaW5lKTsKICAgICAgICAgICAgICAg
ICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXA6OkFkZFJlc3VsdCBvcmRlcmVkUmVzdWx0ID0gb3Jk
ZXJlZE5hbWVkR3JpZExpbmVzLmFkZChjdXJyZW50TmFtZWRHcmlkTGluZSwgVmVjdG9yPFN0cmlu
Zz4oKSk7CiAgICAgICAgICAgICAgICAgb3JkZXJlZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBw
ZW5kKG5hbWVkR3JpZExpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
CmluZGV4IGVlNTRiYzc0ZjgyNjFmN2U3ZmRlZTYyNWUzMmFiN2JhMzVkNjMyODMuLjAxMmJhYzY1
MjFmOTZlYjQ3ZTA4MjE1NTFjYjY0MDA4NGU4ZTQ0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgUmVuZGVyR3JpZDo6R3Jp
ZEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICAvLyB8ZGlyZWN0aW9ufCBpcyB0aGUgZGlyZWN0aW9u
IHRoYXQgaXMgZml4ZWQgdG8gfGZpeGVkVHJhY2tJbmRleHwgc28gZS5nCiAgICAgLy8gR3JpZEl0
ZXJhdG9yKG1fZ3JpZCwgRm9yQ29sdW1ucywgMSkgd2lsbCB3YWxrIG92ZXIgdGhlIHJvd3Mgb2Yg
dGhlIDJuZCBjb2x1bW4uCi0gICAgR3JpZEl0ZXJhdG9yKGNvbnN0IFZlY3RvcjxWZWN0b3I8VmVj
dG9yPFJlbmRlckJveCosIDE+Pj4mIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIHNpemVfdCBmaXhlZFRyYWNrSW5kZXgsIHNpemVfdCB2YXJ5aW5nVHJhY2tJbmRleCA9
IDApCisgICAgR3JpZEl0ZXJhdG9yKGNvbnN0IFZlY3RvcjxWZWN0b3I8VmVjdG9yPFJlbmRlckJv
eCosIDE+Pj4mIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2ln
bmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWduZWQgdmFyeWluZ1RyYWNrSW5kZXggPSAwKQogICAg
ICAgICA6IG1fZ3JpZChncmlkKQogICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKICAg
ICAgICAgLCBtX3Jvd0luZGV4KChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyB2YXJ5aW5nVHJh
Y2tJbmRleCA6IGZpeGVkVHJhY2tJbmRleCkKQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghbV9ncmlkLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAg
ICAgIHNpemVfdCYgdmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBtX3Jvd0luZGV4IDogbV9jb2x1bW5JbmRleDsKLSAgICAgICAgY29uc3Qgc2l6ZV90IGVu
ZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dy
aWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKKyAgICAgICAgdW5zaWduZWQmIHZhcnlpbmdU
cmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9yb3dJbmRleCA6IG1f
Y29sdW1uSW5kZXg7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5k
ZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlk
WzBdLnNpemUoKTsKICAgICAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5
aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFJlbmRlckJveCo+JiBjaGlsZHJlbiA9IG1fZ3JpZFttX3Jvd0luZGV4XVttX2NvbHVt
bkluZGV4XTsKICAgICAgICAgICAgIGlmIChtX2NoaWxkSW5kZXggPCBjaGlsZHJlbi5zaXplKCkp
CkBAIC0xMTcsMTUgKzExNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIGJvb2wgaXNFbXB0eUFyZWFFbm91Z2goc2l6ZV90IHJvd1NwYW4sIHNpemVfdCBjb2x1
bW5TcGFuKSBjb25zdAorICAgIGJvb2wgaXNFbXB0eUFyZWFFbm91Z2godW5zaWduZWQgcm93U3Bh
biwgdW5zaWduZWQgY29sdW1uU3BhbikgY29uc3QKICAgICB7CiAgICAgICAgIC8vIElnbm9yZSBj
ZWxscyBvdXRzaWRlIGN1cnJlbnQgZ3JpZCBhcyB3ZSB3aWxsIGdyb3cgaXQgbGF0ZXIgaWYgbmVl
ZGVkLgotICAgICAgICBzaXplX3QgbWF4Um93cyA9IHN0ZDo6bWluKG1fcm93SW5kZXggKyByb3dT
cGFuLCBtX2dyaWQuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IG1heENvbHVtbnMgPSBzdGQ6Om1p
bihtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbiwgbV9ncmlkWzBdLnNpemUoKSk7CisgICAgICAg
IHVuc2lnbmVkIG1heFJvd3MgPSBzdGQ6Om1pbjx1bnNpZ25lZD4obV9yb3dJbmRleCArIHJvd1Nw
YW4sIG1fZ3JpZC5zaXplKCkpOworICAgICAgICB1bnNpZ25lZCBtYXhDb2x1bW5zID0gc3RkOjpt
aW48dW5zaWduZWQ+KG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuLCBtX2dyaWRbMF0uc2l6ZSgp
KTsKIAogICAgICAgICAvLyBUaGlzIGFkZHMgYSBPKE5eMikgYmVoYXZpb3IgdGhhdCBzaG91bGRu
J3QgYmUgYSBiaWcgZGVhbCBhcyB3ZSBleHBlY3Qgc3Bhbm5pbmcgYXJlYXMgdG8gYmUgc21hbGwu
Ci0gICAgICAgIGZvciAoc2l6ZV90IHJvdyA9IG1fcm93SW5kZXg7IHJvdyA8IG1heFJvd3M7ICsr
cm93KSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4gPSBtX2NvbHVtbkluZGV4OyBj
b2x1bW4gPCBtYXhDb2x1bW5zOyArK2NvbHVtbikgeworICAgICAgICBmb3IgKHVuc2lnbmVkIHJv
dyA9IG1fcm93SW5kZXg7IHJvdyA8IG1heFJvd3M7ICsrcm93KSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGNvbHVtbiA9IG1fY29sdW1uSW5kZXg7IGNvbHVtbiA8IG1heENvbHVtbnM7ICsr
Y29sdW1uKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBjaGls
ZHJlbiA9IG1fZ3JpZFtyb3ddW2NvbHVtbl07CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJl
bi5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNSwx
OCArMTM1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEdyaWRDb29yZGluYXRlPiBuZXh0RW1wdHlHcmlkQXJlYShzaXplX3Qg
Zml4ZWRUcmFja1NwYW4sIHNpemVfdCB2YXJ5aW5nVHJhY2tTcGFuKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQ29vcmRpbmF0ZT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFj
a1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pCiAgICAgewogICAgICAgICBBU1NFUlQo
Zml4ZWRUcmFja1NwYW4gPj0gMSAmJiB2YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgICAg
IGlmIChtX2dyaWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICAgICAgc2l6ZV90IHJvd1NwYW4gPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyB2YXJ5
aW5nVHJhY2tTcGFuIDogZml4ZWRUcmFja1NwYW47Ci0gICAgICAgIHNpemVfdCBjb2x1bW5TcGFu
ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja1NwYW4gOiB2YXJ5aW5n
VHJhY2tTcGFuOworICAgICAgICB1bnNpZ25lZCByb3dTcGFuID0gKG1fZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMpID8gdmFyeWluZ1RyYWNrU3BhbiA6IGZpeGVkVHJhY2tTcGFuOworICAgICAgICB1
bnNpZ25lZCBjb2x1bW5TcGFuID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRU
cmFja1NwYW4gOiB2YXJ5aW5nVHJhY2tTcGFuOwogCi0gICAgICAgIHNpemVfdCYgdmFyeWluZ1Ry
YWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX3Jvd0luZGV4IDogbV9j
b2x1bW5JbmRleDsKLSAgICAgICAgY29uc3Qgc2l6ZV90IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXgg
PSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBd
LnNpemUoKTsKKyAgICAgICAgdW5zaWduZWQmIHZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gbV9yb3dJbmRleCA6IG1fY29sdW1uSW5kZXg7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKICAgICAgICAg
Zm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5
aW5nVHJhY2tJbmRleCkgewogICAgICAgICAgICAgaWYgKGlzRW1wdHlBcmVhRW5vdWdoKHJvd1Nw
YW4sIGNvbHVtblNwYW4pKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRD
b29yZGluYXRlPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRDb29yZGluYXRlPihHcmlk
U3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiAtIDEpLCBHcmlkU3BhbihtX2Nv
bHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbiAtIDEpKTsKQEAgLTE2MSwxNSAr
MTYxLDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY29uc3QgVmVjdG9yPFZlY3RvcjxWZWN0
b3I8UmVuZGVyQm94KiwgMT4+PiYgbV9ncmlkOwogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBtX2RpcmVjdGlvbjsKLSAgICBzaXplX3QgbV9yb3dJbmRleDsKLSAgICBzaXplX3QgbV9jb2x1
bW5JbmRleDsKLSAgICBzaXplX3QgbV9jaGlsZEluZGV4OworICAgIHVuc2lnbmVkIG1fcm93SW5k
ZXg7CisgICAgdW5zaWduZWQgbV9jb2x1bW5JbmRleDsKKyAgICB1bnNpZ25lZCBtX2NoaWxkSW5k
ZXg7CiB9OwogCiBjbGFzcyBSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YSB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoR3JpZFNpemluZ0RhdGEpOwogcHVibGljOgotICAgIEdyaWRTaXppbmdE
YXRhKHNpemVfdCBncmlkQ29sdW1uQ291bnQsIHNpemVfdCBncmlkUm93Q291bnQpCisgICAgR3Jp
ZFNpemluZ0RhdGEodW5zaWduZWQgZ3JpZENvbHVtbkNvdW50LCB1bnNpZ25lZCBncmlkUm93Q291
bnQpCiAgICAgICAgIDogY29sdW1uVHJhY2tzKGdyaWRDb2x1bW5Db3VudCkKICAgICAgICAgLCBy
b3dUcmFja3MoZ3JpZFJvd0NvdW50KQogICAgIHsKQEAgLTE3NywxMiArMTc3LDEyIEBAIHB1Ymxp
YzoKIAogICAgIFZlY3RvcjxHcmlkVHJhY2s+IGNvbHVtblRyYWNrczsKICAgICBWZWN0b3I8R3Jp
ZFRyYWNrPiByb3dUcmFja3M7Ci0gICAgVmVjdG9yPHNpemVfdD4gY29udGVudFNpemVkVHJhY2tz
SW5kZXg7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBjb250ZW50U2l6ZWRUcmFja3NJbmRleDsKIAog
ICAgIC8vIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjogaG9sZCBvbnRvIHRoZXNlIFZlY3RvcnMg
dW50aWwgdGhlIGVuZCBvZiBMYXlvdXQgdG8gYXZvaWQgcmVwZWF0ZWQgbWFsbG9jIC8gZnJlZS4K
ICAgICBWZWN0b3I8TGF5b3V0VW5pdD4gZGlzdHJpYnV0ZVRyYWNrVmVjdG9yOwogICAgIFZlY3Rv
cjxHcmlkVHJhY2sqPiBmaWx0ZXJlZFRyYWNrczsKLSAgICBWZWN0b3I8c2l6ZV90PiBncm93QWJv
dmVNYXhCcmVhZHRoVHJhY2tJbmRleGVzOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gZ3Jvd0Fib3Zl
TWF4QnJlYWR0aFRyYWNrSW5kZXhlczsKIH07CiAKIFJlbmRlckdyaWQ6OlJlbmRlckdyaWQoRWxl
bWVudCYgZWxlbWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCkBAIC0yOTgsMTEgKzI5
OCwxMSBAQCBib29sIFJlbmRlckdyaWQ6OmdyaWRFbGVtZW50SXNTaHJpbmtUb0ZpdCgpCiB2b2lk
IFJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSwgTGF5b3V0
VW5pdCYgYXZhaWxhYmxlTG9naWNhbFNwYWNlKQogewogICAgIFZlY3RvcjxHcmlkVHJhY2s+JiB0
cmFja3MgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc2l6aW5nRGF0YS5jb2x1bW5UcmFj
a3MgOiBzaXppbmdEYXRhLnJvd1RyYWNrczsKLSAgICBWZWN0b3I8c2l6ZV90PiBmbGV4aWJsZVNp
emVkVHJhY2tzSW5kZXg7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBmbGV4aWJsZVNpemVkVHJhY2tz
SW5kZXg7CiAgICAgc2l6aW5nRGF0YS5jb250ZW50U2l6ZWRUcmFja3NJbmRleC5zaHJpbmsoMCk7
CiAKICAgICAvLyAxLiBJbml0aWFsaXplIHBlciBHcmlkIHRyYWNrIHZhcmlhYmxlcy4KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrcy5zaXplKCk7ICsraSkgeworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0cmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgR3JpZFRyYWNr
JiB0cmFjayA9IHRyYWNrc1tpXTsKICAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tT
aXplID0gZ3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIGkpOwogICAgICAgICBjb25zdCBHcmlkTGVu
Z3RoJiBtaW5UcmFja0JyZWFkdGggPSB0cmFja1NpemUubWluVHJhY2tCcmVhZHRoKCk7CkBAIC0z
MzcsOSArMzM3LDkgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRU
cmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGkKICAgICAvLyAzLiBHcm93IGFs
bCBHcmlkIHRyYWNrcyBpbiBHcmlkVHJhY2tzIGZyb20gdGhlaXIgVXNlZEJyZWFkdGggdXAgdG8g
dGhlaXIgTWF4QnJlYWR0aCB2YWx1ZSB1bnRpbAogICAgIC8vIGF2YWlsYWJsZUxvZ2ljYWxTcGFj
ZSAoUmVtYWluaW5nU3BhY2UgaW4gdGhlIHNwZWNzKSBpcyBleGhhdXN0ZWQuCiAgICAgaWYgKCFo
YXNVbmRlZmluZWRSZW1haW5pbmdTcGFjZSkgewotICAgICAgICBjb25zdCBzaXplX3QgdHJhY2tz
U2l6ZSA9IHRyYWNrcy5zaXplKCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHRyYWNrc1NpemUg
PSB0cmFja3Muc2l6ZSgpOwogICAgICAgICBWZWN0b3I8R3JpZFRyYWNrKj4gdHJhY2tzRm9yRGlz
dHJpYnV0aW9uKHRyYWNrc1NpemUpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRy
YWNrc1NpemU7ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrc1Np
emU7ICsraSkKICAgICAgICAgICAgIHRyYWNrc0ZvckRpc3RyaWJ1dGlvbltpXSA9IHRyYWNrcy5k
YXRhKCkgKyBpOwogCiAgICAgICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKHRyYWNrc0ZvckRp
c3RyaWJ1dGlvbiwgMCwgJkdyaWRUcmFjazo6dXNlZEJyZWFkdGgsICZHcmlkVHJhY2s6Omdyb3dV
c2VkQnJlYWR0aCwgc2l6aW5nRGF0YSwgYXZhaWxhYmxlTG9naWNhbFNwYWNlKTsKQEAgLTM2MSw3
ICszNjEsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNr
cyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aQogICAgICAgICAgICAgbm9ybWFsaXpl
ZEZyYWN0aW9uQnJlYWR0aCA9IHN0ZDo6bWF4KG5vcm1hbGl6ZWRGcmFjdGlvbkJyZWFkdGgsIHRy
YWNrc1t0cmFja0luZGV4XS5tX3VzZWRCcmVhZHRoIC8gdHJhY2tTaXplLm1heFRyYWNrQnJlYWR0
aCgpLmZsZXgoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZsZXhpYmxlU2l6ZWRUcmFja3NJbmRleC5zaXplKCk7ICsraSkgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZmxleGlibGVTaXplZFRyYWNrc0luZGV4LnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IobV9ncmlkLCBkaXJlY3Rpb24sIGZs
ZXhpYmxlU2l6ZWRUcmFja3NJbmRleFtpXSk7CiAgICAgICAgICAgICB3aGlsZSAoUmVuZGVyQm94
KiBncmlkSXRlbSA9IGl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7CiAgICAgICAgICAgICAgICAg
Y29uc3QgR3JpZENvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IGNhY2hlZEdyaWRDb29yZGluYXRlKCpn
cmlkSXRlbSk7CkBAIC00NjcsNyArNDY3LDcgQEAgZG91YmxlIFJlbmRlckdyaWQ6OmNvbXB1dGVO
b3JtYWxpemVkRnJhY3Rpb25CcmVhZHRoKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIGMKICAg
ICByZXR1cm4gYXZhaWxhYmxlTG9naWNhbFNwYWNlSWdub3JpbmdGcmFjdGlvblRyYWNrcyAvIGFj
Y3VtdWxhdGVkRnJhY3Rpb25zOwogfQogCi1HcmlkVHJhY2tTaXplIFJlbmRlckdyaWQ6OmdyaWRU
cmFja1NpemUoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgc2l6ZV90IGkpIGNv
bnN0CitHcmlkVHJhY2tTaXplIFJlbmRlckdyaWQ6OmdyaWRUcmFja1NpemUoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgaSkgY29uc3QKIHsKICAgICBib29sIGlz
Rm9yQ29sdW1ucyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyk7CiAgICAgYXV0byYgdHJhY2tT
dHlsZXMgPSAgaXNGb3JDb2x1bW5zID8gc3R5bGUoKS5ncmlkQ29sdW1ucygpIDogc3R5bGUoKS5n
cmlkUm93cygpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxSZW5kZXJCb3g+IG1fZ3JpZEl0ZW07CiAgICAgR3JpZENvb3Jk
aW5hdGUgbV9jb29yZGluYXRlOwotICAgIHNpemVfdCBtX3NwYW47CisgICAgdW5zaWduZWQgbV9z
cGFuOwogfTsKIAogdm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXpp
bmdGdW5jdGlvbnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemlu
Z0RhdGEmIHNpemluZ0RhdGEpCkBAIC02MzIsMTUgKzYzMiwxNSBAQCBzdGF0aWMgYm9vbCBzb3J0
QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwoY29uc3QgR3JpZFRyYWNrKiB0cmFjazEsIGNvbnN0
IEdyaWRUcgogICAgIHJldHVybiAodHJhY2sxLT5tX21heEJyZWFkdGggLSB0cmFjazEtPm1fdXNl
ZEJyZWFkdGgpIDwgKHRyYWNrMi0+bV9tYXhCcmVhZHRoIC0gdHJhY2syLT5tX3VzZWRCcmVhZHRo
KTsKIH0KIAotdm9pZCBSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8
R3JpZFRyYWNrKj4mIHRyYWNrcywgVmVjdG9yPHNpemVfdD4qIGdyb3dBYm92ZU1heEJyZWFkdGhU
cmFja0luZGV4ZXMsIEFjY3VtdWxhdG9yR2V0dGVyIHRyYWNrR2V0dGVyLCBBY2N1bXVsYXRvckdy
b3dGdW5jdGlvbiB0cmFja0dyb3d0aEZ1bmN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0
YSwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlTG9naWNhbFNwYWNlKQordm9pZCBSZW5kZXJHcmlkOjpk
aXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRyYWNrcywgVmVjdG9y
PHVuc2lnbmVkPiogZ3Jvd0Fib3ZlTWF4QnJlYWR0aFRyYWNrSW5kZXhlcywgQWNjdW11bGF0b3JH
ZXR0ZXIgdHJhY2tHZXR0ZXIsIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uIHRyYWNrR3Jvd3RoRnVu
Y3Rpb24sIEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhLCBMYXlvdXRVbml0JiBhdmFpbGFibGVM
b2dpY2FsU3BhY2UpCiB7CiAgICAgQVNTRVJUKGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSA+IDApOwog
ICAgIHN0ZDo6c29ydCh0cmFja3MuYmVnaW4oKSwgdHJhY2tzLmVuZCgpLCBzb3J0QnlHcmlkVHJh
Y2tHcm93dGhQb3RlbnRpYWwpOwogCi0gICAgc2l6ZV90IHRyYWNrc1NpemUgPSB0cmFja3Muc2l6
ZSgpOworICAgIHVuc2lnbmVkIHRyYWNrc1NpemUgPSB0cmFja3Muc2l6ZSgpOwogICAgIHNpemlu
Z0RhdGEuZGlzdHJpYnV0ZVRyYWNrVmVjdG9yLnJlc2l6ZSh0cmFja3NTaXplKTsKIAotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzU2l6ZTsgKytpKSB7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHRyYWNrc1NpemU7ICsraSkgewogICAgICAgICBHcmlkVHJhY2smIHRyYWNr
ID0gKnRyYWNrc1tpXTsKICAgICAgICAgTGF5b3V0VW5pdCB0cmFja0JyZWFkdGggPSAodHJhY2tz
W2ldLT4qdHJhY2tHZXR0ZXIpKCk7CiAgICAgICAgIGJvb2wgaW5maW5pdGVHcm93dGhQb3RlbnRp
YWwgPSB0cmFjay5tX21heEJyZWFkdGggPT0gaW5maW5pdHk7CkBAIC02NTcsMTkgKzY1NywxOSBA
QCB2b2lkIFJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlkVHJh
Y2sqPiYgdHJhY2tzLCBWZWN0b3I8c2l6ZQogICAgIH0KIAogICAgIGlmIChhdmFpbGFibGVMb2dp
Y2FsU3BhY2UgPiAwICYmIGdyb3dBYm92ZU1heEJyZWFkdGhUcmFja0luZGV4ZXMpIHsKLSAgICAg
ICAgc2l6ZV90IGluZGV4ZXNTaXplID0gZ3Jvd0Fib3ZlTWF4QnJlYWR0aFRyYWNrSW5kZXhlcy0+
c2l6ZSgpOwotICAgICAgICBzaXplX3QgdHJhY2tzR3Jvd2luZ0Fib3ZlTWF4QnJlYWR0aFNpemUg
PSBpbmRleGVzU2l6ZSA/IGluZGV4ZXNTaXplIDogdHJhY2tzU2l6ZTsKKyAgICAgICAgdW5zaWdu
ZWQgaW5kZXhlc1NpemUgPSBncm93QWJvdmVNYXhCcmVhZHRoVHJhY2tJbmRleGVzLT5zaXplKCk7
CisgICAgICAgIHVuc2lnbmVkIHRyYWNrc0dyb3dpbmdBYm92ZU1heEJyZWFkdGhTaXplID0gaW5k
ZXhlc1NpemUgPyBpbmRleGVzU2l6ZSA6IHRyYWNrc1NpemU7CiAgICAgICAgIC8vIElmIHdlIGhh
dmUgYSBub24tbnVsbCBlbXB0eSB2ZWN0b3Igb2YgdHJhY2sgaW5kZXhlcyB0byBncm93IGFib3Zl
IG1heCBicmVhZHRoIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGdyb3cgYWxsCiAgICAgICAgIC8vIGFm
ZmVjdGVkIHRyYWNrcy4KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja3NHcm93
aW5nQWJvdmVNYXhCcmVhZHRoU2l6ZTsgKytpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0cmFja3NHcm93aW5nQWJvdmVNYXhCcmVhZHRoU2l6ZTsgKytpKSB7CiAgICAgICAg
ICAgICBMYXlvdXRVbml0IGdyb3d0aFNoYXJlID0gYXZhaWxhYmxlTG9naWNhbFNwYWNlIC8gKHRy
YWNrc0dyb3dpbmdBYm92ZU1heEJyZWFkdGhTaXplIC0gaSk7Ci0gICAgICAgICAgICBzaXplX3Qg
ZGlzdHJpYnV0ZVRyYWNrSW5kZXggPSBpbmRleGVzU2l6ZSA/IGdyb3dBYm92ZU1heEJyZWFkdGhU
cmFja0luZGV4ZXMtPmF0KGkpIDogaTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGRpc3RyaWJ1dGVU
cmFja0luZGV4ID0gaW5kZXhlc1NpemUgPyBncm93QWJvdmVNYXhCcmVhZHRoVHJhY2tJbmRleGVz
LT5hdChpKSA6IGk7CiAgICAgICAgICAgICBzaXppbmdEYXRhLmRpc3RyaWJ1dGVUcmFja1ZlY3Rv
cltkaXN0cmlidXRlVHJhY2tJbmRleF0gKz0gZ3Jvd3RoU2hhcmU7CiAgICAgICAgICAgICBhdmFp
bGFibGVMb2dpY2FsU3BhY2UgLT0gZ3Jvd3RoU2hhcmU7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrc1NpemU7ICsraSkgeworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0cmFja3NTaXplOyArK2kpIHsKICAgICAgICAgTGF5b3V0VW5pdCBn
cm93dGggPSBzaXppbmdEYXRhLmRpc3RyaWJ1dGVUcmFja1ZlY3RvcltpXSAtICh0cmFja3NbaV0t
Pip0cmFja0dldHRlcikoKTsKICAgICAgICAgaWYgKGdyb3d0aCA+PSAwKQogICAgICAgICAgICAg
KHRyYWNrc1tpXS0+KnRyYWNrR3Jvd3RoRnVuY3Rpb24pKGdyb3d0aCk7CkBAIC02NzksNyArNjc5
LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3Jp
ZFRyYWNrKj4mIHRyYWNrcywgVmVjdG9yPHNpemUKICNpZm5kZWYgTkRFQlVHCiBib29sIFJlbmRl
ckdyaWQ6OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aChHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzKQogewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25z
dCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUgPSBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgaSk7
CiAgICAgICAgIGNvbnN0IEdyaWRMZW5ndGgmIG1pblRyYWNrQnJlYWR0aCA9IHRyYWNrU2l6ZS5t
aW5UcmFja0JyZWFkdGgoKTsKICAgICAgICAgaWYgKGNvbXB1dGVVc2VkQnJlYWR0aE9mTWluTGVu
Z3RoKGRpcmVjdGlvbiwgbWluVHJhY2tCcmVhZHRoKSA+IHRyYWNrc1tpXS5tX3VzZWRCcmVhZHRo
KQpAQCAtNjg5LDE3ICs2ODksMTcgQEAgYm9vbCBSZW5kZXJHcmlkOjp0cmFja3NBcmVXaWRlclRo
YW5NaW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmUKIH0KICNlbmRp
ZgogCi12b2lkIFJlbmRlckdyaWQ6OmVuc3VyZUdyaWRTaXplKHNpemVfdCBtYXhpbXVtUm93SW5k
ZXgsIHNpemVfdCBtYXhpbXVtQ29sdW1uSW5kZXgpCit2b2lkIFJlbmRlckdyaWQ6OmVuc3VyZUdy
aWRTaXplKHVuc2lnbmVkIG1heGltdW1Sb3dJbmRleCwgdW5zaWduZWQgbWF4aW11bUNvbHVtbklu
ZGV4KQogewotICAgIGNvbnN0IHNpemVfdCBvbGRSb3dDb3VudCA9IGdyaWRSb3dDb3VudCgpOwor
ICAgIGNvbnN0IHVuc2lnbmVkIG9sZFJvd0NvdW50ID0gZ3JpZFJvd0NvdW50KCk7CiAgICAgaWYg
KG1heGltdW1Sb3dJbmRleCA+PSBvbGRSb3dDb3VudCkgewogICAgICAgICBtX2dyaWQuZ3Jvdyht
YXhpbXVtUm93SW5kZXggKyAxKTsKLSAgICAgICAgZm9yIChzaXplX3Qgcm93ID0gb2xkUm93Q291
bnQ7IHJvdyA8IGdyaWRSb3dDb3VudCgpOyArK3JvdykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBy
b3cgPSBvbGRSb3dDb3VudDsgcm93IDwgZ3JpZFJvd0NvdW50KCk7ICsrcm93KQogICAgICAgICAg
ICAgbV9ncmlkW3Jvd10uZ3JvdyhncmlkQ29sdW1uQ291bnQoKSk7CiAgICAgfQogCiAgICAgaWYg
KG1heGltdW1Db2x1bW5JbmRleCA+PSBncmlkQ29sdW1uQ291bnQoKSkgewotICAgICAgICBmb3Ig
KHNpemVfdCByb3cgPSAwOyByb3cgPCBncmlkUm93Q291bnQoKTsgKytyb3cpCisgICAgICAgIGZv
ciAodW5zaWduZWQgcm93ID0gMDsgcm93IDwgZ3JpZFJvd0NvdW50KCk7ICsrcm93KQogICAgICAg
ICAgICAgbV9ncmlkW3Jvd10uZ3JvdyhtYXhpbXVtQ29sdW1uSW5kZXggKyAxKTsKICAgICB9CiB9
CkBAIC03NTgsOCArNzU4LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKCkK
IHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCkK
IHsKICAgICBPcmRlckl0ZXJhdG9yUG9wdWxhdG9yIHBvcHVsYXRvcihtX29yZGVySXRlcmF0b3Ip
OwotICAgIHNpemVfdCBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1heDxzaXplX3Q+KDEsIEdyaWRS
ZXNvbHZlZFBvc2l0aW9uOjpleHBsaWNpdEdyaWRSb3dDb3VudChzdHlsZSgpKSk7Ci0gICAgc2l6
ZV90IG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4PHNpemVfdD4oMSwgR3JpZFJlc29sdmVk
UG9zaXRpb246OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCkpKTsKKyAgICB1bnNpZ25l
ZCBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1heDx1bnNpZ25lZD4oMSwgR3JpZFJlc29sdmVkUG9z
aXRpb246OmV4cGxpY2l0R3JpZFJvd0NvdW50KHN0eWxlKCkpKTsKKyAgICB1bnNpZ25lZCBtYXhp
bXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heDx1bnNpZ25lZD4oMSwgR3JpZFJlc29sdmVkUG9zaXRp
b246OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCkpKTsKIAogICAgIGZvciAoUmVuZGVy
Qm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nQm94KCkpIHsKICAgICAgICAgcG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQpOwpA
QCAtNzc0LDcgKzc3NCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yKCkKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBHcm93IHRo
ZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxh
cmdlc3Qgc3VjaCBzcGFuLgogICAgICAgICAgICAgR3JpZFNwYW4gcG9zaXRpb25zID0gR3JpZFJl
c29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbUF1dG9QbGFjZW1lbnRQb3Np
dGlvbihzdHlsZSgpLCAqY2hpbGQsIEZvclJvd3MsIEdyaWRSZXNvbHZlZFBvc2l0aW9uKDApKTsK
LSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4PHNpemVfdD4obWF4aW11bVJv
d0luZGV4LCBwb3NpdGlvbnMucmVzb2x2ZWRGaW5hbFBvc2l0aW9uLm5leHQoKS50b0ludCgpKTsK
KyAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwg
cG9zaXRpb25zLnJlc29sdmVkRmluYWxQb3NpdGlvbi5uZXh0KCkudG9JbnQoKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoY29sdW1uUG9zaXRpb25zKQpAQCAtNzgyLDcgKzc4Miw3IEBAIHZv
aWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCkKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3aXRo
IGEgZGVmaW5pdGUgY29sdW1uIHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgog
ICAgICAgICAgICAgR3JpZFNwYW4gcG9zaXRpb25zID0gR3JpZFJlc29sdmVkUG9zaXRpb246OnJl
c29sdmVHcmlkUG9zaXRpb25zRnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlvbihzdHlsZSgpLCAqY2hp
bGQsIEZvckNvbHVtbnMsIEdyaWRSZXNvbHZlZFBvc2l0aW9uKDApKTsKLSAgICAgICAgICAgIG1h
eGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4PHNpemVfdD4obWF4aW11bUNvbHVtbkluZGV4LCBw
b3NpdGlvbnMucmVzb2x2ZWRGaW5hbFBvc2l0aW9uLm5leHQoKS50b0ludCgpKTsKKyAgICAgICAg
ICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgcG9z
aXRpb25zLnJlc29sdmVkRmluYWxQb3NpdGlvbi5uZXh0KCkudG9JbnQoKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhw
bGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpCiBzdGQ6OnVuaXF1ZV9wdHI8R3JpZENvb3JkaW5h
dGU+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091
dHNpZGVHcmlkKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlv
bnMpIGNvbnN0CiB7CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGNyb3NzRGlyZWN0aW9u
ID0gc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBGb3JSb3dzIDogRm9yQ29sdW1u
czsKLSAgICBjb25zdCBzaXplX3QgZW5kT2ZDcm9zc0RpcmVjdGlvbiA9IGNyb3NzRGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBncmlkQ29sdW1uQ291bnQoKSA6IGdyaWRSb3dDb3VudCgpOworICAg
IGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBjcm9zc0RpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gZ3JpZENvbHVtbkNvdW50KCkgOiBncmlkUm93Q291bnQoKTsKICAgICBHcmlk
U3BhbiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNv
bHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24oc3R5bGUoKSwgZ3JpZEl0
ZW0sIGNyb3NzRGlyZWN0aW9uLCBHcmlkUmVzb2x2ZWRQb3NpdGlvbihlbmRPZkNyb3NzRGlyZWN0
aW9uKSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZENvb3JkaW5hdGU+KHNwZWNp
ZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBz
cGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3Bl
Y2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQpAQCAtODM0LDkg
KzgzNCw5IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChS
ZW5kZXJCb3gmIGdyaWRJdGVtLCBBdXRvUGxhY2VtZW50CiAgICAgQVNTRVJUKCFHcmlkUmVzb2x2
ZWRQb3NpdGlvbjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoc3R5bGUoKSwgZ3JpZEl0
ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSkpOwogICAgIEdyaWRTcGFuIG1h
am9yQXhpc1Bvc2l0aW9ucyA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlR3JpZFBvc2l0
aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24oc3R5bGUoKSwgZ3JpZEl0ZW0sIGF1dG9QbGFj
ZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSwgR3JpZFJlc29sdmVkUG9zaXRpb24oMCkpOwogCi0g
ICAgY29uc3Qgc2l6ZV90IGVuZE9mTWFqb3JBeGlzID0gKGF1dG9QbGFjZW1lbnRNYWpvckF4aXNE
aXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zKSA/IGdyaWRDb2x1bW5Db3VudCgpIDogZ3JpZFJvd0Nv
dW50KCk7Ci0gICAgc2l6ZV90IG1ham9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxh
Y2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRD
dXJzb3Iuc2Vjb25kIDogYXV0b1BsYWNlbWVudEN1cnNvci5maXJzdDsKLSAgICBzaXplX3QgbWlu
b3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rp
b24oKSA9PSBGb3JDb2x1bW5zID8gYXV0b1BsYWNlbWVudEN1cnNvci5maXJzdCA6IGF1dG9QbGFj
ZW1lbnRDdXJzb3Iuc2Vjb25kOworICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mTWFqb3JBeGlzID0g
KGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zKSA/IGdyaWRD
b2x1bW5Db3VudCgpIDogZ3JpZFJvd0NvdW50KCk7CisgICAgdW5zaWduZWQgbWFqb3JBeGlzQXV0
b1BsYWNlbWVudEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBG
b3JDb2x1bW5zID8gYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQgOiBhdXRvUGxhY2VtZW50Q3Vy
c29yLmZpcnN0OworICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBh
dXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFj
ZW1lbnRDdXJzb3IuZmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLnNlY29uZDsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRpbmF0ZT4gZW1wdHlHcmlkQXJlYTsKICAgICBpZiAobWlu
b3JBeGlzUG9zaXRpb25zKSB7CkBAIC04NTQsMTQgKzg1NCwxNCBAQCB2b2lkIFJlbmRlckdyaWQ6
OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVuZGVyQm94JiBncmlkSXRlbSwgQXV0b1Bs
YWNlbWVudAogICAgIH0gZWxzZSB7CiAgICAgICAgIEdyaWRTcGFuIG1pbm9yQXhpc1Bvc2l0aW9u
cyA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxh
Y2VtZW50UG9zaXRpb24oc3R5bGUoKSwgZ3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNaW5vckF4aXNE
aXJlY3Rpb24oKSwgR3JpZFJlc29sdmVkUG9zaXRpb24oMCkpOwogCi0gICAgICAgIGZvciAoc2l6
ZV90IG1ham9yQXhpc0luZGV4ID0gbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvcjsgbWFqb3JB
eGlzSW5kZXggPCBlbmRPZk1ham9yQXhpczsgKyttYWpvckF4aXNJbmRleCkgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIG1ham9yQXhpc0luZGV4ID0gbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNv
cjsgbWFqb3JBeGlzSW5kZXggPCBlbmRPZk1ham9yQXhpczsgKyttYWpvckF4aXNJbmRleCkgewog
ICAgICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwgYXV0b1BsYWNlbWVudE1h
am9yQXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNJbmRleCwgbWlub3JBeGlzQXV0b1BsYWNlbWVu
dEN1cnNvcik7CiAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5
R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1Bvc2l0
aW9ucy5pbnRlZ2VyU3BhbigpKTsKIAogICAgICAgICAgICAgaWYgKGVtcHR5R3JpZEFyZWEpIHsK
ICAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IGl0IGZpdHMgaW4gdGhlIG1pbm9yIGF4aXMg
ZGlyZWN0aW9uLCBhcyB3ZSBzaG91bGRuJ3QgZ3JvdyBpbiB0aGF0IGRpcmVjdGlvbiBoZXJlIChp
dCB3YXMgYWxyZWFkeSBtYW5hZ2VkIGluIHBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVy
YXRvcigpKS4KICAgICAgICAgICAgICAgICBHcmlkUmVzb2x2ZWRQb3NpdGlvbiBtaW5vckF4aXNG
aW5hbFBvc2l0aW9uSW5kZXggPSBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkgPT0g
Rm9yQ29sdW1ucyA/IGVtcHR5R3JpZEFyZWEtPmNvbHVtbnMucmVzb2x2ZWRGaW5hbFBvc2l0aW9u
IDogZW1wdHlHcmlkQXJlYS0+cm93cy5yZXNvbHZlZEZpbmFsUG9zaXRpb247Ci0gICAgICAgICAg
ICAgICAgY29uc3Qgc2l6ZV90IGVuZE9mTWlub3JBeGlzID0gYXV0b1BsYWNlbWVudE1pbm9yQXhp
c0RpcmVjdGlvbigpID09IEZvckNvbHVtbnMgPyBncmlkQ29sdW1uQ291bnQoKSA6IGdyaWRSb3dD
b3VudCgpOworICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mTWlub3JBeGlzID0g
YXV0b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVtbnMgPyBncmlkQ29s
dW1uQ291bnQoKSA6IGdyaWRSb3dDb3VudCgpOwogICAgICAgICAgICAgICAgIGlmIChtaW5vckF4
aXNGaW5hbFBvc2l0aW9uSW5kZXgudG9JbnQoKSA8IGVuZE9mTWlub3JBeGlzKQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKIApAQCAtOTY5LDEyICs5NjksMTIgQEAgdm9pZCBSZW5kZXJHcmlk
Ojpwb3B1bGF0ZUdyaWRQb3NpdGlvbnMoY29uc3QgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEp
CiB7CiAgICAgbV9jb2x1bW5Qb3NpdGlvbnMucmVzaXplVG9GaXQoc2l6aW5nRGF0YS5jb2x1bW5U
cmFja3Muc2l6ZSgpICsgMSk7CiAgICAgbV9jb2x1bW5Qb3NpdGlvbnNbMF0gPSBib3JkZXJBbmRQ
YWRkaW5nU3RhcnQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY29sdW1uUG9zaXRp
b25zLnNpemUoKSAtIDE7ICsraSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jb2x1
bW5Qb3NpdGlvbnMuc2l6ZSgpIC0gMTsgKytpKQogICAgICAgICBtX2NvbHVtblBvc2l0aW9uc1tp
ICsgMV0gPSBtX2NvbHVtblBvc2l0aW9uc1tpXSArIHNpemluZ0RhdGEuY29sdW1uVHJhY2tzW2ld
Lm1fdXNlZEJyZWFkdGg7CiAKICAgICBtX3Jvd1Bvc2l0aW9ucy5yZXNpemVUb0ZpdChzaXppbmdE
YXRhLnJvd1RyYWNrcy5zaXplKCkgKyAxKTsKICAgICBtX3Jvd1Bvc2l0aW9uc1swXSA9IGJvcmRl
ckFuZFBhZGRpbmdCZWZvcmUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcm93UG9z
aXRpb25zLnNpemUoKSAtIDE7ICsraSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9y
b3dQb3NpdGlvbnMuc2l6ZSgpIC0gMTsgKytpKQogICAgICAgICBtX3Jvd1Bvc2l0aW9uc1tpICsg
MV0gPSBtX3Jvd1Bvc2l0aW9uc1tpXSArIHNpemluZ0RhdGEucm93VHJhY2tzW2ldLm1fdXNlZEJy
ZWFkdGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IGJiMzQ5
NGFhNDk3OGNhZWU0ZTQxOGFjNjAxNDgxNWM1NTgxODQzNDMuLjU1NmRlYmVkYTI5NzRiZTNlNmRh
ODdhYTI0ZDZhYWI4ODRlNGY2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aApAQCAtNzEsMTQgKzcxLDE0IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlVXNl
ZEJyZWFkdGhPZlNwZWNpZmllZExlbmd0aChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0
IExlbmd0aCYpIGNvbnN0OwogICAgIHZvaWQgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5n
RnVuY3Rpb25zKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmKTsKIAot
ICAgIHZvaWQgZW5zdXJlR3JpZFNpemUoc2l6ZV90IG1heGltdW1Sb3dJbmRleCwgc2l6ZV90IG1h
eGltdW1Db2x1bW5JbmRleCk7CisgICAgdm9pZCBlbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhp
bXVtUm93SW5kZXgsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5JbmRleCk7CiAgICAgdm9pZCBpbnNl
cnRJdGVtSW50b0dyaWQoUmVuZGVyQm94JiwgY29uc3QgR3JpZENvb3JkaW5hdGUmKTsKICAgICB2
b2lkIHBsYWNlSXRlbXNPbkdyaWQoKTsKICAgICB2b2lkIHBvcHVsYXRlRXhwbGljaXRHcmlkQW5k
T3JkZXJJdGVyYXRvcigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQ29vcmRpbmF0ZT4gY3Jl
YXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoY29uc3QgUmVu
ZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYpIGNvbnN0
OwogICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChjb25zdCBWZWN0
b3I8UmVuZGVyQm94Kj4mKTsKICAgICB2b2lkIHBsYWNlQXV0b01ham9yQXhpc0l0ZW1zT25Hcmlk
KGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPHNpemVf
dCwgc2l6ZV90PiBBdXRvUGxhY2VtZW50Q3Vyc29yOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gQXV0b1BsYWNlbWVudEN1cnNvcjsKICAgICB2b2lkIHBsYWNlQXV0
b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVuZGVyQm94JiwgQXV0b1BsYWNlbWVudEN1cnNvciYpOwog
ICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0
aW9uKCkgY29uc3Q7CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGF1dG9QbGFjZW1lbnRN
aW5vckF4aXNEaXJlY3Rpb24oKSBjb25zdDsKQEAgLTkyLDExICs5MiwxMSBAQCBwcml2YXRlOgog
ICAgIHR5cGVkZWYgdm9pZCAoR3JpZFRyYWNrOjoqIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uKShM
YXlvdXRVbml0KTsKICAgICB0eXBlZGVmIGJvb2wgKEdyaWRUcmFja1NpemU6OiogRmlsdGVyRnVu
Y3Rpb24pKCkgY29uc3Q7CiAgICAgdm9pZCByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdG
dW5jdGlvbnNGb3JJdGVtcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIEdyaWRTaXppbmdEYXRh
JiwgR3JpZEl0ZW1XaXRoU3BhbiYsIEZpbHRlckZ1bmN0aW9uLCBTaXppbmdGdW5jdGlvbiwgQWNj
dW11bGF0b3JHZXR0ZXIsIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uLCBGaWx0ZXJGdW5jdGlvbiBn
cm93QWJvdmVNYXhCcmVhZHRoRmlsdGVyRnVuY3Rpb24gPSBudWxscHRyKTsKLSAgICB2b2lkIGRp
c3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYsIFZlY3RvcjxzaXplX3Q+
KiBncm93QWJvdmVNYXhCcmVhZHRoVHJhY2tJbmRleGVzLCBBY2N1bXVsYXRvckdldHRlciwgQWNj
dW11bGF0b3JHcm93RnVuY3Rpb24sIEdyaWRTaXppbmdEYXRhJiwgTGF5b3V0VW5pdCYgYXZhaWxh
YmxlTG9naWNhbFNwYWNlKTsKKyAgICB2b2lkIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZlY3Rv
cjxHcmlkVHJhY2sqPiYsIFZlY3Rvcjx1bnNpZ25lZD4qIGdyb3dBYm92ZU1heEJyZWFkdGhUcmFj
a0luZGV4ZXMsIEFjY3VtdWxhdG9yR2V0dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbiwgR3Jp
ZFNpemluZ0RhdGEmLCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpOwogCiAgICAg
ZG91YmxlIGNvbXB1dGVOb3JtYWxpemVkRnJhY3Rpb25CcmVhZHRoKFZlY3RvcjxHcmlkVHJhY2s+
JiwgY29uc3QgR3JpZFNwYW4mIHRyYWNrc1NwYW4sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwg
TGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsU3BhY2UpIGNvbnN0OwogCi0gICAgR3JpZFRyYWNr
U2l6ZSBncmlkVHJhY2tTaXplKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc2l6ZV90KSBjb25z
dDsKKyAgICBHcmlkVHJhY2tTaXplIGdyaWRUcmFja1NpemUoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uLCB1bnNpZ25lZCkgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxDb250ZW50SGVp
Z2h0Rm9yQ2hpbGQoUmVuZGVyQm94JiwgVmVjdG9yPEdyaWRUcmFjaz4mKTsKICAgICBMYXlvdXRV
bml0IG1pbkNvbnRlbnRGb3JDaGlsZChSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MpOwpAQCAtMTE0LDEyICsxMTQsMTIg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgZ3JpZFdhc1BvcHVsYXRlZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2dyaWQuaXNFbXB0eSgpICYmICFtX2dyaWRbMF0uaXNFbXB0eSgpOyB9CiAKLSAgICBzaXpl
X3QgZ3JpZENvbHVtbkNvdW50KCkgY29uc3QKKyAgICB1bnNpZ25lZCBncmlkQ29sdW1uQ291bnQo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGdyaWRXYXNQb3B1bGF0ZWQoKSk7CiAgICAg
ICAgIHJldHVybiBtX2dyaWRbMF0uc2l6ZSgpOwogICAgIH0KLSAgICBzaXplX3QgZ3JpZFJvd0Nv
dW50KCkgY29uc3QKKyAgICB1bnNpZ25lZCBncmlkUm93Q291bnQoKSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUKGdyaWRXYXNQb3B1bGF0ZWQoKSk7CiAgICAgICAgIHJldHVybiBtX2dyaWQu
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRD
b29yZGluYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5h
dGUuaAppbmRleCA5MmY5NmU2NDVmYWVhZmNjZjUxODYyOGNjYzdmY2FhYzU2MWNmY2Q2Li4zM2Zj
ZWI1MWU0MjI3ZWM4NmNkODUyN2MzYmE2NmE0OTAzMjNmZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaApAQCAtNDEsNyArNDEsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBSZWNvbW1lbmRlZCBtYXhpbXVtIHNpemUgZm9yIGJv
dGggZXhwbGljaXQgYW5kIGltcGxpY2l0IGdyaWRzLgotY29uc3Qgc2l6ZV90IGtHcmlkTWF4VHJh
Y2tzID0gMTAwMDAwMDsKK2NvbnN0IHVuc2lnbmVkIGtHcmlkTWF4VHJhY2tzID0gMTAwMDAwMDsK
IAogLy8gQSBzcGFuIGluIGEgc2luZ2xlIGRpcmVjdGlvbiAoZWl0aGVyIHJvd3Mgb3IgY29sdW1u
cykuIE5vdGUgdGhhdCB8cmVzb2x2ZWRJbml0aWFsUG9zaXRpb258CiAvLyBhbmQgfHJlc29sdmVk
RmluYWxQb3NpdGlvbnwgYXJlIGdyaWQgYXJlYXMnIGluZGV4ZXMsIE5PVCBncmlkIGxpbmVzJy4g
SXRlcmF0aW5nIG92ZXIgdGhlCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uID09IG8ucmVzb2x2ZWRJbml0aWFsUG9zaXRpb24g
JiYgcmVzb2x2ZWRGaW5hbFBvc2l0aW9uID09IG8ucmVzb2x2ZWRGaW5hbFBvc2l0aW9uOwogICAg
IH0KIAotICAgIHNpemVfdCBpbnRlZ2VyU3BhbigpIGNvbnN0CisgICAgdW5zaWduZWQgaW50ZWdl
clNwYW4oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHJlc29sdmVkRmluYWxQb3NpdGlv
bi50b0ludCgpIC0gcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24udG9JbnQoKSArIDE7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZlZFBv
c2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQ
b3NpdGlvbi5jcHAKaW5kZXggMGYzNjJhZWZhMWJhZjYxMTE0ZWY0YjQ0ODE3NjcwN2IyYmUyNTMw
Yy4uY2NkYzJhM2RjNmRhMmQ2NTM0YTdlYjYzNTA5ZTZiNDNiYWExZmQ3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZlZFBvc2l0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24u
Y3BwCkBAIC00OCwxNyArNDgsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU3RhcnRTaWRlKEdy
aWRQb3NpdGlvblNpZGUgc2lkZSkKICAgICByZXR1cm4gc2lkZSA9PSBDb2x1bW5TdGFydFNpZGUg
fHwgc2lkZSA9PSBSb3dTdGFydFNpZGU7CiB9CiAKLXNpemVfdCBHcmlkUmVzb2x2ZWRQb3NpdGlv
bjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWlu
ZXJTdHlsZSkKK3Vuc2lnbmVkIEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpleHBsaWNpdEdyaWRDb2x1
bW5Db3VudChjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlKQogewotICAgIHJl
dHVybiBzdGQ6Om1pbihncmlkQ29udGFpbmVyU3R5bGUuZ3JpZENvbHVtbnMoKS5zaXplKCksIGtH
cmlkTWF4VHJhY2tzKTsKKyAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KGdyaWRDb250YWlu
ZXJTdHlsZS5ncmlkQ29sdW1ucygpLnNpemUoKSwga0dyaWRNYXhUcmFja3MpOwogfQogCi1zaXpl
X3QgR3JpZFJlc29sdmVkUG9zaXRpb246OmV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRl
clN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUpCit1bnNpZ25lZCBHcmlkUmVzb2x2ZWRQb3NpdGlv
bjo6ZXhwbGljaXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJT
dHlsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptaW4oZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRSb3dz
KCkuc2l6ZSgpLCBrR3JpZE1heFRyYWNrcyk7CisgICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVk
PihncmlkQ29udGFpbmVyU3R5bGUuZ3JpZFJvd3MoKS5zaXplKCksIGtHcmlkTWF4VHJhY2tzKTsK
IH0KIAotc3RhdGljIHNpemVfdCBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShjb25zdCBSZW5kZXJT
dHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCitzdGF0aWMg
dW5zaWduZWQgZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRD
b250YWluZXJTdHlsZSwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewogICAgIHJldHVybiBpc0Nv
bHVtblNpZGUoc2lkZSkgPyBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6ZXhwbGljaXRHcmlkQ29sdW1u
Q291bnQoZ3JpZENvbnRhaW5lclN0eWxlKSA6IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpleHBsaWNp
dEdyaWRSb3dDb3VudChncmlkQ29udGFpbmVyU3R5bGUpOwogfQpAQCAtMTc1LDE1ICsxNzUsMTUg
QEAgR3JpZFJlc29sdmVkUG9zaXRpb24gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVOYW1l
ZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUKICAgICBpZiAoaXQgPT0gZ3JpZExpbmVzTmFtZXMu
ZW5kKCkpIHsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzUG9zaXRpdmUoKSkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICBjb25zdCBzaXplX3QgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRT
aXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUpOworICAgICAgICBjb25zdCB1bnNp
Z25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHls
ZSwgc2lkZSk7CiAgICAgICAgIHJldHVybiBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6YWRqdXN0R3Jp
ZFBvc2l0aW9uRm9yU2lkZShsYXN0TGluZSwgc2lkZSk7CiAgICAgfQogCi0gICAgc2l6ZV90IG5h
bWVkR3JpZExpbmVJbmRleDsKKyAgICB1bnNpZ25lZCBuYW1lZEdyaWRMaW5lSW5kZXg7CiAgICAg
aWYgKHBvc2l0aW9uLmlzUG9zaXRpdmUoKSkKLSAgICAgICAgbmFtZWRHcmlkTGluZUluZGV4ID0g
c3RkOjptaW48c2l6ZV90Pihwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSwgaXQtPnZhbHVlLnNp
emUoKSkgLSAxOworICAgICAgICBuYW1lZEdyaWRMaW5lSW5kZXggPSBzdGQ6Om1pbjx1bnNpZ25l
ZD4ocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCksIGl0LT52YWx1ZS5zaXplKCkpIC0gMTsKICAg
ICBlbHNlCi0gICAgICAgIG5hbWVkR3JpZExpbmVJbmRleCA9IHN0ZDo6bWF4PGludD4oaXQtPnZh
bHVlLnNpemUoKSAtIGFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSksIDApOworICAgICAg
ICBuYW1lZEdyaWRMaW5lSW5kZXggPSBzdGQ6Om1heDxpbnQ+KDAsIGl0LT52YWx1ZS5zaXplKCkg
LSBhYnMocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkpKTsKICAgICByZXR1cm4gR3JpZFJlc29s
dmVkUG9zaXRpb246OmFkanVzdEdyaWRQb3NpdGlvbkZvclNpZGUoaXQtPnZhbHVlW25hbWVkR3Jp
ZExpbmVJbmRleF0sIHNpZGUpOwogfQogCkBAIC0yMDAsOCArMjAwLDggQEAgR3JpZFJlc29sdmVk
UG9zaXRpb24gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5
bGUoY29uc3QgUmUKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzUG9zaXRpdmUoKSkKICAgICAgICAg
ICAgIHJldHVybiBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6YWRqdXN0R3JpZFBvc2l0aW9uRm9yU2lk
ZShwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSAtIDEsIHNpZGUpOwogCi0gICAgICAgIHNpemVf
dCByZXNvbHZlZFBvc2l0aW9uID0gYWJzKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpKSAtIDE7
Ci0gICAgICAgIGNvbnN0IHNpemVfdCBlbmRPZlRyYWNrID0gZXhwbGljaXRHcmlkU2l6ZUZvclNp
ZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRlKTsKKyAgICAgICAgdW5zaWduZWQgcmVzb2x2ZWRQ
b3NpdGlvbiA9IGFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSkgLSAxOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBlbmRPZlRyYWNrID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENv
bnRhaW5lclN0eWxlLCBzaWRlKTsKIAogICAgICAgICAvLyBQZXIgaHR0cDovL2xpc3RzLnczLm9y
Zy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTNNYXIvMDU4OS5odG1sLCB3ZSBjbGFtcCBu
ZWdhdGl2ZSB2YWx1ZSB0byB0aGUgZmlyc3QgbGluZS4KICAgICAgICAgaWYgKGVuZE9mVHJhY2sg
PCByZXNvbHZlZFBvc2l0aW9uKQpAQCAtMjU5LDkgKzI1OSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
cmlkU3Bhbj4gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0
T3Bwb3NpCiAKICAgICAvLyAnc3BhbiAxJyBpcyBjb250YWluZWQgaW5zaWRlIGEgc2luZ2xlIGdy
aWQgdHJhY2sgcmVnYXJkbGVzcyBvZiB0aGUgZGlyZWN0aW9uLgogICAgIC8vIFRoYXQncyB3aHkg
dGhlIENTUyBzcGFuIHZhbHVlIGlzIG9uZSBtb3JlIHRoYW4gdGhlIG9mZnNldCB3ZSBhcHBseS4K
LSAgICBzaXplX3QgcG9zaXRpb25PZmZzZXQgPSBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSAtIDE7
CisgICAgdW5zaWduZWQgcG9zaXRpb25PZmZzZXQgPSBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSAt
IDE7CiAgICAgaWYgKGlzU3RhcnRTaWRlKHNpZGUpKSB7Ci0gICAgICAgIHNpemVfdCBpbml0aWFs
UmVzb2x2ZWRQb3NpdGlvbiA9IHN0ZDo6bWF4PGludD4oMCwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0
aW9uLnRvSW50KCkgLSBwb3NpdGlvbk9mZnNldCk7CisgICAgICAgIHVuc2lnbmVkIGluaXRpYWxS
ZXNvbHZlZFBvc2l0aW9uID0gc3RkOjptYXg8aW50PigwLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRp
b24udG9JbnQoKSAtIHBvc2l0aW9uT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R3JpZFNwYW4+KGluaXRpYWxSZXNvbHZlZFBvc2l0aW9uLCByZXNvbHZlZE9wcG9zaXRl
UG9zaXRpb24pOwogICAgIH0KIApAQCAtMjg5LDEzICsyODksMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PEdyaWRTcGFuPiBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3Np
dGlvbkFnYWkKICAgICByZXR1cm4gcmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwg
cG9zaXRpb24sIGl0LT52YWx1ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgc2l6ZV90IGZpcnN0TmFt
ZWRHcmlkTGluZUJlZm9yZVBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVmVjdG9yPHNp
emVfdD4mIGdyaWRMaW5lcykKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgZmlyc3ROYW1lZEdyaWRM
aW5lQmVmb3JlUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24sIGNvbnN0IFZlY3Rvcjx1bnNpZ25l
ZD4mIGdyaWRMaW5lcykKIHsKICAgICAvLyBUaGUgZ3JpZCBsaW5lIGluZXF1YWxpdHkgbmVlZHMg
dG8gYmUgc3RyaWN0ICh3aGljaCBkb2Vzbid0IG1hdGNoIHRoZSBhZnRlciAvIGVuZCBjYXNlKSBi
ZWNhdXNlIHxwb3NpdGlvbnwgaXMKICAgICAvLyBhbHJlYWR5IGNvbnZlcnRlZCB0byBhbiBpbmRl
eCBpbiBvdXIgZ3JpZCByZXByZXNlbnRhdGlvbiAoaWUgb25lIHdhcyByZW1vdmVkIGZyb20gdGhl
IGdyaWQgbGluZSB0byBhY2NvdW50IGZvcgogICAgIC8vIHRoZSBzaWRlKS4KLSAgICBzaXplX3Qg
Zmlyc3RMaW5lQmVmb3JlUG9zaXRpb25JbmRleCA9IDA7Ci0gICAgY29uc3Qgc2l6ZV90KiBmaXJz
dExpbmVCZWZvcmVQb3NpdGlvbiA9IHN0ZDo6bG93ZXJfYm91bmQoZ3JpZExpbmVzLmJlZ2luKCks
IGdyaWRMaW5lcy5lbmQoKSwgcG9zaXRpb24pOworICAgIHVuc2lnbmVkIGZpcnN0TGluZUJlZm9y
ZVBvc2l0aW9uSW5kZXggPSAwOworICAgIGNvbnN0IHVuc2lnbmVkKiBmaXJzdExpbmVCZWZvcmVQ
b3NpdGlvbiA9IHN0ZDo6bG93ZXJfYm91bmQoZ3JpZExpbmVzLmJlZ2luKCksIGdyaWRMaW5lcy5l
bmQoKSwgcG9zaXRpb24pOwogICAgIGlmIChmaXJzdExpbmVCZWZvcmVQb3NpdGlvbiAhPSBncmlk
TGluZXMuZW5kKCkpIHsKICAgICAgICAgaWYgKCpmaXJzdExpbmVCZWZvcmVQb3NpdGlvbiA+IHBv
c2l0aW9uICYmIGZpcnN0TGluZUJlZm9yZVBvc2l0aW9uICE9IGdyaWRMaW5lcy5iZWdpbigpKQog
ICAgICAgICAgICAgLS1maXJzdExpbmVCZWZvcmVQb3NpdGlvbjsKQEAgLTMwNSwyMyArMzA1LDI0
IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGZpcnN0TmFtZWRHcmlkTGluZUJlZm9yZVBvc2l0aW9u
KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVmVjCiAgICAgcmV0dXJuIGZpcnN0TGluZUJlZm9yZVBv
c2l0aW9uSW5kZXg7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gR3JpZFJlc29sdmVk
UG9zaXRpb246OnJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlkTGluZVBvc2l0aW9u
QWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgR3JpZFJlc29sdmVkUG9zaXRpb24mIHJlc29s
dmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3Qg
VmVjdG9yPHNpemVfdD4mIGdyaWRMaW5lcykKK3N0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gR3Jp
ZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlkTGlu
ZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgR3JpZFJlc29sdmVkUG9zaXRp
b24mIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
biwgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgZ3JpZExpbmVzKQogewotICAgIHNpemVfdCBncmlk
TGluZUluZGV4ID0gc3RkOjptYXg8aW50PigwLCBmaXJzdE5hbWVkR3JpZExpbmVCZWZvcmVQb3Np
dGlvbihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24udG9JbnQoKSwgZ3JpZExpbmVzKSAtIHBvc2l0
aW9uLnNwYW5Qb3NpdGlvbigpICsgMSk7CisgICAgdW5zaWduZWQgZ3JpZExpbmVJbmRleCA9IHN0
ZDo6bWF4PGludD4oMCwgZmlyc3ROYW1lZEdyaWRMaW5lQmVmb3JlUG9zaXRpb24ocmVzb2x2ZWRP
cHBvc2l0ZVBvc2l0aW9uLnRvSW50KCksIGdyaWRMaW5lcykgLSBwb3NpdGlvbi5zcGFuUG9zaXRp
b24oKSArIDEpOwogICAgIEdyaWRSZXNvbHZlZFBvc2l0aW9uIHJlc29sdmVkR3JpZExpbmVQb3Np
dGlvbiA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uKGdyaWRMaW5lc1tncmlkTGluZUluZGV4XSk7CiAg
ICAgaWYgKHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiA+IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlv
bikKICAgICAgICAgcmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uID0gcmVzb2x2ZWRPcHBvc2l0ZVBv
c2l0aW9uOwogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRTcGFuPihyZXNvbHZlZEdy
aWRMaW5lUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbik7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxHcmlkU3Bhbj4gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVSb3dFbmRDb2x1
bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBH
cmlkUmVzb2x2ZWRQb3NpdGlvbiYgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlk
UG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgZ3JpZExpbmVzKQorc3Rk
Ojp1bmlxdWVfcHRyPEdyaWRTcGFuPiBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZVJvd0Vu
ZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNv
bnN0IEdyaWRSZXNvbHZlZFBvc2l0aW9uJiByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0
IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGdyaWRMaW5l
cykKIHsKLSAgICBzaXplX3QgZmlyc3RMaW5lQWZ0ZXJPcHBvc2l0ZVBvc2l0aW9uSW5kZXggPSBn
cmlkTGluZXMuc2l6ZSgpIC0gMTsKLSAgICBjb25zdCBzaXplX3QqIGZpcnN0TGluZUFmdGVyT3Bw
b3NpdGVQb3NpdGlvbiA9IHN0ZDo6dXBwZXJfYm91bmQoZ3JpZExpbmVzLmJlZ2luKCksIGdyaWRM
aW5lcy5lbmQoKSwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKKyAgICBBU1NFUlQoZ3JpZExp
bmVzLnNpemUoKSk7CisgICAgdW5zaWduZWQgZmlyc3RMaW5lQWZ0ZXJPcHBvc2l0ZVBvc2l0aW9u
SW5kZXggPSBncmlkTGluZXMuc2l6ZSgpIC0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCogZmlyc3RM
aW5lQWZ0ZXJPcHBvc2l0ZVBvc2l0aW9uID0gc3RkOjp1cHBlcl9ib3VuZChncmlkTGluZXMuYmVn
aW4oKSwgZ3JpZExpbmVzLmVuZCgpLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pOwogICAgIGlm
IChmaXJzdExpbmVBZnRlck9wcG9zaXRlUG9zaXRpb24gIT0gZ3JpZExpbmVzLmVuZCgpKQogICAg
ICAgICBmaXJzdExpbmVBZnRlck9wcG9zaXRlUG9zaXRpb25JbmRleCA9IGZpcnN0TGluZUFmdGVy
T3Bwb3NpdGVQb3NpdGlvbiAtIGdyaWRMaW5lcy5iZWdpbigpOwogCi0gICAgc2l6ZV90IGdyaWRM
aW5lSW5kZXggPSBzdGQ6Om1pbihncmlkTGluZXMuc2l6ZSgpIC0gMSwgZmlyc3RMaW5lQWZ0ZXJP
cHBvc2l0ZVBvc2l0aW9uSW5kZXggKyBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKSAtIDEpOworICAg
IHVuc2lnbmVkIGdyaWRMaW5lSW5kZXggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JpZExpbmVzLnNp
emUoKSAtIDEsIGZpcnN0TGluZUFmdGVyT3Bwb3NpdGVQb3NpdGlvbkluZGV4ICsgcG9zaXRpb24u
c3BhblBvc2l0aW9uKCkgLSAxKTsKICAgICBHcmlkUmVzb2x2ZWRQb3NpdGlvbiByZXNvbHZlZEdy
aWRMaW5lUG9zaXRpb24gPSBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6YWRqdXN0R3JpZFBvc2l0aW9u
Rm9yUm93RW5kQ29sdW1uRW5kU2lkZShncmlkTGluZXNbZ3JpZExpbmVJbmRleF0pOwogICAgIGlm
IChyZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24gPCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pCiAg
ICAgICAgIHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiA9IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUmVzb2x2
ZWRQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZl
ZFBvc2l0aW9uLmgKaW5kZXggOGZiMTQzZjIxZjU2ZWY1ZDM2NjY2YmJhZTFjMjFlZDA1OThhOTc4
Ny4uOTU1NTZjZGViZWJiYmRjNGI3MWVkMmM0MWRmNTkyYWIzOWUzYmY1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZlZFBvc2l0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZlZFBvc2l0aW9uLmgK
QEAgLTU0LDE1ICs1NCwxNSBAQCBlbnVtIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiB7CiB9Owog
CiAvLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYW4gaW5kZXggaW50byBvbmUgb2YgdGhlIGRpbWVu
c2lvbnMgb2YgdGhlIGdyaWQgYXJyYXkuCi0vLyBXcmFwcyBhIHNpemVfdCBpbnRlZ2VyIGp1c3Qg
Zm9yIHRoZSBwdXJwb3NlIG9mIGtub3dpbmcgd2hhdCB3ZSBtYW5pcHVsYXRlIGluIHRoZSBncmlk
IGNvZGUuCisvLyBXcmFwcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGp1c3QgZm9yIHRoZSBwdXJwb3Nl
IG9mIGtub3dpbmcgd2hhdCB3ZSBtYW5pcHVsYXRlIGluIHRoZSBncmlkIGNvZGUuCiBjbGFzcyBH
cmlkUmVzb2x2ZWRQb3NpdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEdyaWRSZXNvbHZlZFBv
c2l0aW9uIGFkanVzdEdyaWRQb3NpdGlvbkZvclJvd0VuZENvbHVtbkVuZFNpZGUoc2l6ZV90IHJl
c29sdmVkUG9zaXRpb24pCisgICAgc3RhdGljIEdyaWRSZXNvbHZlZFBvc2l0aW9uIGFkanVzdEdy
aWRQb3NpdGlvbkZvclJvd0VuZENvbHVtbkVuZFNpZGUodW5zaWduZWQgcmVzb2x2ZWRQb3NpdGlv
bikKICAgICB7CiAgICAgICAgIHJldHVybiByZXNvbHZlZFBvc2l0aW9uID8gR3JpZFJlc29sdmVk
UG9zaXRpb24ocmVzb2x2ZWRQb3NpdGlvbiAtIDEpIDogR3JpZFJlc29sdmVkUG9zaXRpb24oMCk7
CiAgICAgfQogCi0gICAgc3RhdGljIEdyaWRSZXNvbHZlZFBvc2l0aW9uIGFkanVzdEdyaWRQb3Np
dGlvbkZvclNpZGUoc2l6ZV90IHJlc29sdmVkUG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lk
ZSkKKyAgICBzdGF0aWMgR3JpZFJlc29sdmVkUG9zaXRpb24gYWRqdXN0R3JpZFBvc2l0aW9uRm9y
U2lkZSh1bnNpZ25lZCByZXNvbHZlZFBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiAg
ICAgewogICAgICAgICAvLyBBbiBpdGVtIGZpbmlzaGluZyBvbiB0aGUgTi10aCBsaW5lIGJlbG9u
Z3MgdG8gdGhlIE4tMS10aCBjZWxsLgogICAgICAgICBpZiAoc2lkZSA9PSBDb2x1bW5FbmRTaWRl
IHx8IHNpZGUgPT0gUm93RW5kU2lkZSkKQEAgLTc5LDEwICs3OSwxMCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEdyaWRSZXNvbHZlZFBvc2l0aW9uIHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBHcmlkUG9zaXRpb24mLCBHcmlkUG9zaXRpb25TaWRl
KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdyaWRTcGFuPiByZXNvbHZlR3JpZFBvc2l0
aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBHcmlk
UmVzb2x2ZWRQb3NpdGlvbiYsIGNvbnN0IEdyaWRQb3NpdGlvbiYsIEdyaWRQb3NpdGlvblNpZGUp
OwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29sdmVOYW1lZEdyaWRM
aW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IEdyaWRSZXNvbHZlZFBvc2l0aW9uJiwgY29uc3QgR3JpZFBvc2l0aW9uJiwgR3JpZFBvc2l0
aW9uU2lkZSk7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bhbj4gcmVzb2x2ZVJv
d1N0YXJ0Q29sdW1uU3RhcnROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3Np
dGlvbihjb25zdCBHcmlkUmVzb2x2ZWRQb3NpdGlvbiYsIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNv
bnN0IFZlY3RvcjxzaXplX3Q+Jik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHcmlkU3Bh
bj4gcmVzb2x2ZVJvd0VuZENvbHVtbkVuZE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBv
c2l0ZVBvc2l0aW9uKGNvbnN0IEdyaWRSZXNvbHZlZFBvc2l0aW9uJiwgY29uc3QgR3JpZFBvc2l0
aW9uJiwgY29uc3QgVmVjdG9yPHNpemVfdD4mKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEdyaWRTcGFuPiByZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlv
bkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IEdyaWRSZXNvbHZlZFBvc2l0aW9uJiwgY29u
c3QgR3JpZFBvc2l0aW9uJiwgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8R3JpZFNwYW4+IHJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRM
aW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBHcmlkUmVzb2x2ZWRQb3Np
dGlvbiYsIGNvbnN0IEdyaWRQb3NpdGlvbiYsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mKTsKIAot
ICAgIEdyaWRSZXNvbHZlZFBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikKKyAgICBHcmlkUmVzb2x2
ZWRQb3NpdGlvbih1bnNpZ25lZCBwb3NpdGlvbikKICAgICAgICAgOiBtX2ludGVnZXJQb3NpdGlv
bihwb3NpdGlvbikKICAgICB7CiAgICAgfQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAg
R3JpZFJlc29sdmVkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBv
c2l0aW9uU2lkZSBzaWRlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHBvc2l0aW9uLmludGVnZXJQ
b3NpdGlvbigpKTsKLSAgICAgICAgc2l6ZV90IGludGVnZXJQb3NpdGlvbiA9IHBvc2l0aW9uLmlu
dGVnZXJQb3NpdGlvbigpIC0gMTsKKyAgICAgICAgdW5zaWduZWQgaW50ZWdlclBvc2l0aW9uID0g
cG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkgLSAxOwogCiAgICAgICAgIG1faW50ZWdlclBvc2l0
aW9uID0gYWRqdXN0R3JpZFBvc2l0aW9uRm9yU2lkZShpbnRlZ2VyUG9zaXRpb24sIHNpZGUpLm1f
aW50ZWdlclBvc2l0aW9uOwogICAgIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2ludGVnZXJQb3NpdGlvbiA+PSBvdGhlci5tX2ludGVnZXJQb3NpdGlvbjsK
ICAgICB9CiAKLSAgICBzaXplX3QgdG9JbnQoKSBjb25zdAorICAgIHVuc2lnbmVkIHRvSW50KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ludGVnZXJQb3NpdGlvbjsKICAgICB9CkBA
IC0xNDYsMTIgKzE0NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBHcmlkUmVzb2x2ZWRQ
b3NpdGlvbihtX2ludGVnZXJQb3NpdGlvbiArIDEpOwogICAgIH0KIAotICAgIHN0YXRpYyBzaXpl
X3QgZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVyU3R5bGUmKTsKLSAgICBzdGF0
aWMgc2l6ZV90IGV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAg
c3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlclN0eWxl
Jik7CisgICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRl
clN0eWxlJik7CiAKIHByaXZhdGU6CiAKLSAgICBzaXplX3QgbV9pbnRlZ2VyUG9zaXRpb247Cisg
ICAgdW5zaWduZWQgbV9pbnRlZ2VyUG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlk
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApp
bmRleCA4OTA4MjJhMzY0NmI4OTc1Y2I3MzFkZTFhY2UzYTFkZWQzNTZhZmNkLi5iZWI0ZWZmODYx
NzVmYmFkYmUxZWIzY2NiMjMxNjM0MDIxZTE3ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTM4LDggKzM4LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8c2l6ZV90Pj4g
TmFtZWRHcmlkTGluZXNNYXA7Ci10eXBlZGVmIEhhc2hNYXA8c2l6ZV90LCBWZWN0b3I8U3RyaW5n
PiwgV1RGOjpJbnRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8c2l6ZV90Pj4gT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwOwordHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPHVuc2lnbmVkPj4gTmFtZWRHcmlkTGluZXNNYXA7Cit0eXBlZGVmIEhhc2hN
YXA8dW5zaWduZWQsIFZlY3RvcjxTdHJpbmc+LCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gT3JkZXJlZE5hbWVkR3Jp
ZExpbmVzTWFwOwogCiBjbGFzcyBTdHlsZUdyaWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3R5
bGVHcmlkRGF0YT4gewogcHVibGljOgpAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAgTmFt
ZWRHcmlkQXJlYU1hcCBtX25hbWVkR3JpZEFyZWE7CiAgICAgLy8gQmVjYXVzZSBtX25hbWVkR3Jp
ZEFyZWEgZG9lc24ndCBzdG9yZSB0aGUgdW5uYW1lZCBncmlkIGFyZWFzLCB3ZSBuZWVkIHRvIGtl
ZXAgdHJhY2sKICAgICAvLyBvZiB0aGUgZXhwbGljaXQgZ3JpZCBzaXplIGRlZmluZWQgYnkgYm90
aCBuYW1lZCBhbmQgdW5uYW1lZCBncmlkIGFyZWFzLgotICAgIHNpemVfdCBtX25hbWVkR3JpZEFy
ZWFSb3dDb3VudDsKLSAgICBzaXplX3QgbV9uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7CisgICAg
dW5zaWduZWQgbV9uYW1lZEdyaWRBcmVhUm93Q291bnQ7CisgICAgdW5zaWduZWQgbV9uYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQ7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVHcmlkRGF0YSgpOwo=
</data>
<flag name="review"
          id="266353"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>