<?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>204993</bug_id>
          
          <creation_ts>2019-12-07 17:05:40 -0800</creation_ts>
          <short_desc>Move WebCore::Path encoders and decoders into WebCore from WebCoreArgumentCoders</short_desc>
          <delta_ts>2019-12-08 13:39:26 -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>WebCore Misc.</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1596644</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-07 17:05:40 -0800</bug_when>
    <thetext>Other logic in WebCore needs to know about Path encoding/decoding, so it makes more sense to move the logic here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596649</commentid>
    <comment_count>1</comment_count>
      <attachid>385111</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-07 19:01:54 -0800</bug_when>
    <thetext>Created attachment 385111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596666</commentid>
    <comment_count>2</comment_count>
      <attachid>385111</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-08 01:21:24 -0800</bug_when>
    <thetext>Comment on attachment 385111
Patch

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

&gt; Source/WebCore/platform/graphics/Path.h:242
&gt; +        case PathElementMoveToPoint: // The points member will contain 1 value.

These comments seem a bit silly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596721</commentid>
    <comment_count>3</comment_count>
      <attachid>385111</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-08 12:34:35 -0800</bug_when>
    <thetext>Comment on attachment 385111
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/Path.h:242
&gt;&gt; +        case PathElementMoveToPoint: // The points member will contain 1 value.
&gt; 
&gt; These comments seem a bit silly

Will remove these inline comments (and the matching ones in the decoder below).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596723</commentid>
    <comment_count>4</comment_count>
      <attachid>385126</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-08 12:46:04 -0800</bug_when>
    <thetext>Created attachment 385126
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596729</commentid>
    <comment_count>5</comment_count>
      <attachid>385126</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-08 13:31:23 -0800</bug_when>
    <thetext>Comment on attachment 385126
Patch for landing

Clearing flags on attachment: 385126

Committed r253278: &lt;https://trac.webkit.org/changeset/253278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596731</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-08 13:39:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/57735936&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385111</attachid>
            <date>2019-12-07 19:01:54 -0800</date>
            <delta_ts>2019-12-08 01:21:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204993-20191207190154.patch</filename>
            <type>text/plain</type>
            <size>22992</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhlMjgzMWY1ZjY2NzI2
YmEwYmQ2ZjA1YWU1M2YzZDA5ZWQyZmVmZS4uODA3ZDRiNTFjOGEyYjhiMzYzYjM5NzY2YjJjNGI5
M2Q2ZmUxNTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTEyLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgV2ViQ29y
ZTo6UGF0aCBlbmNvZGVycyBhbmQgZGVjb2RlcnMgaW50byBXZWJDb3JlIGZyb20gV2ViQ29yZUFy
Z3VtZW50Q29kZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDQ5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNb3ZlIGVuY29kaW5nIGFuZCBkZWNvZGluZyBsb2dpYyBmcm9tIFdlYkNvcmVBcmd1bWVu
dENvZGVycyBpbnRvIFdlYkNvcmUuIFRoZSBhYmlsaXR5IHRvIGVuY29kZSBvciBkZWNvZGUgUGF0
aHMKKyAgICAgICAgaXMgbmVlZGVkIGluIG9yZGVyIHRvIGVuY29kZSBvciBkZWNvZGUgRGlzcGxh
eUxpc3RJdGVtcyB0aGF0IGNvbnRhaW4gUGF0aHM7IHNpbmNlIHRoZXNlIGVuY29kZXJzIGxpdmUg
aW4KKyAgICAgICAgV2ViQ29yZSwgdGhlIGVuY29kZXJzIGZvciBQYXRocyBzaG91bGQgbGl2ZSB0
aGVyZSBhcyB3ZWxsLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGguaDoKKworICAgICAgICBBbHNvIGZpeGVzIHVwIHRoZSBpbmRlbnRhdGlvbiBvZiB0
aGUgUGF0aCBjbGFzcyBpbiB0aGlzIGhlYWRlciwgc3VjaCB0aGF0IHRoZSBjbGFzcyBkZWNsYXJh
dGlvbiBpc24ndCBpbmRlbnRlZAorICAgICAgICBvbmUgbGV2ZWwgcGFzdCB0aGUgbmFtZXNwYWNl
LgorCisgICAgICAgIChXZWJDb3JlOjpQYXRoOjppc051bGwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGF0aDo6cGxhdGZvcm1QYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6
OmNpcmNsZUNvbnRyb2xQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6ZGVjb2RlKToKKwogMjAxOS0xMi0wNyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbmlxdWUgb3JpZ2luJ3Mg
d2luZG93IG11c3QgZ2V0IGl0cyBvd24gZXZlbnQgbG9vcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZWRlMDk3MmZm
MWZjZWU0NzgzMjkyNjNmZjRjYTRmNWZhYWM4OTIzLi4xMjYzMTY3ZTlhNTE2NGM5Y2FlZDE4Zjll
MjYyNGQ0NzFiZDBhMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTEyLTA3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgV2Vi
Q29yZTo6UGF0aCBlbmNvZGVycyBhbmQgZGVjb2RlcnMgaW50byBXZWJDb3JlIGZyb20gV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDQ5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgRW5jb2Rlci9EZWNvZGVyIHN1cHBvcnQgZm9yIFdlYkNvcmU6OlBhdGgu
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6cGF0aEVuY29kZUFwcGxpZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UGF0aD46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UGF0aD46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorCiAyMDE5LTEyLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdLV2ViVmlldyB0b3VjaCBldmVu
dCBnZXN0dXJlIHJlY29nbml0aW9uIHNob3VsZCBub3QgYmxvY2sgdGhlIGFwcGxpY2F0aW9uIHBy
b2Nlc3MgbWFpbiB0aHJlYWQgd2hlbiBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oCmluZGV4IDdhMmY0YTU2YzZiYTA5Y2IxMWE0YTg0YTUxZmVkM2NjMDE5ZWFi
ODguLmRiNzRjMjA4MmFhYzk5MTUyMTA3MjFhZjIxZmNjYjZiMjkxZDQ4ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTgyLDE0NyArODIsMjUwIEBAIGNsYXNz
IFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEFmZmluZVRy
YW5zZm9ybTsKLSAgICBjbGFzcyBGbG9hdFBvaW50OwotICAgIGNsYXNzIEZsb2F0Um91bmRlZFJl
Y3Q7Ci0gICAgY2xhc3MgRmxvYXRTaXplOwotICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLSAg
ICBjbGFzcyBQYXRoVHJhdmVyc2FsU3RhdGU7Ci0gICAgY2xhc3MgUm91bmRlZFJlY3Q7Ci0gICAg
Y2xhc3MgU3Ryb2tlU3R5bGVBcHBsaWVyOwotCi0gICAgZW51bSBQYXRoRWxlbWVudFR5cGUgewot
ICAgICAgICBQYXRoRWxlbWVudE1vdmVUb1BvaW50LCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxs
IGNvbnRhaW4gMSB2YWx1ZS4KLSAgICAgICAgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludCwgLy8g
VGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCi0gICAgICAgIFBhdGhFbGVt
ZW50QWRkUXVhZEN1cnZlVG9Qb2ludCwgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWlu
IDIgdmFsdWVzLgotICAgICAgICBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludCwgLy8gVGhlIHBv
aW50cyBtZW1iZXIgd2lsbCBjb250YWluIDMgdmFsdWVzLgotICAgICAgICBQYXRoRWxlbWVudENs
b3NlU3VicGF0aCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gbm8gdmFsdWVzLgor
Y2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIEZsb2F0Um91
bmRlZFJlY3Q7CitjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFz
cyBQYXRoVHJhdmVyc2FsU3RhdGU7CitjbGFzcyBSb3VuZGVkUmVjdDsKK2NsYXNzIFN0cm9rZVN0
eWxlQXBwbGllcjsKKworZW51bSBQYXRoRWxlbWVudFR5cGUgeworICAgIFBhdGhFbGVtZW50TW92
ZVRvUG9pbnQsIC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgorICAg
IFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQsIC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29u
dGFpbiAxIHZhbHVlLgorICAgIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludCwgLy8gVGhl
IHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVzLgorICAgIFBhdGhFbGVtZW50QWRk
Q3VydmVUb1BvaW50LCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMyB2YWx1ZXMu
CisgICAgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGggLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBj
b250YWluIG5vIHZhbHVlcy4KK307CisKKy8vIFRoZSBwb2ludHMgaW4gdGhlIHN0cnVjdHVyZSBh
cmUgdGhlIHNhbWUgYXMgdGhvc2UgdGhhdCB3b3VsZCBiZSB1c2VkIHdpdGggdGhlCisvLyBhZGQu
Li4gbWV0aG9kLiBGb3IgZXhhbXBsZSwgYSBsaW5lIHJldHVybnMgdGhlIGVuZHBvaW50LCB3aGls
ZSBhIGN1YmljIHJldHVybnMKKy8vIHR3byB0YW5nZW50IHBvaW50cyBhbmQgdGhlIGVuZHBvaW50
Lgorc3RydWN0IFBhdGhFbGVtZW50IHsKKyAgICBQYXRoRWxlbWVudFR5cGUgdHlwZTsKKyAgICBG
bG9hdFBvaW50KiBwb2ludHM7Cit9OworCit1c2luZyBQYXRoQXBwbGllckZ1bmN0aW9uID0gV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFBhdGhFbGVtZW50Jik+OworCitjbGFzcyBQYXRoIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBQ
YXRoKCk7CisjaWYgVVNFKENHKQorICAgIFBhdGgoUmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+
KTsKKyNlbmRpZgorICAgIFdFQkNPUkVfRVhQT1JUIH5QYXRoKCk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBQYXRoKGNvbnN0IFBhdGgmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXRoKFBhdGgmJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgUGF0aCYgb3BlcmF0b3I9KGNvbnN0IFBhdGgmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBQYXRoJiBvcGVyYXRvcj0oUGF0aCYmKTsKKworICAgIHN0YXRpYyBQYXRo
IHBvbHlnb25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludD4mKTsKKworICAg
IGJvb2wgY29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIFdpbmRSdWxlID0gV2luZFJ1bGU6Ok5v
blplcm8pIGNvbnN0OworICAgIGJvb2wgc3Ryb2tlQ29udGFpbnMoU3Ryb2tlU3R5bGVBcHBsaWVy
KiwgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OworICAgIC8vIGZhc3RCb3VuZGluZ1JlY3QoKSBz
aG91bGQgZXF1YWwgb3IgY29udGFpbiBib3VuZGluZ1JlY3QoKTsgYm91bmRpbmdSZWN0KCkKKyAg
ICAvLyBzaG91bGQgcGVyZmVjdGx5IGJvdW5kIHRoZSBwb2ludHMgd2l0aGluIHRoZSBwYXRoLgor
ICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFJlY3QgZmFzdEJvdW5kaW5nUmVjdCgpIGNvbnN0OworICAgIEZsb2F0UmVjdCBzdHJva2VC
b3VuZGluZ1JlY3QoU3Ryb2tlU3R5bGVBcHBsaWVyKiA9IDApIGNvbnN0OworCisgICAgZmxvYXQg
bGVuZ3RoKCkgY29uc3Q7CisgICAgUGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNhbFN0YXRlQXRM
ZW5ndGgoZmxvYXQgbGVuZ3RoKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IHBvaW50QXRMZW5ndGgo
ZmxvYXQgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3BhdGg7IH0KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKKyAgICAvLyBHZXRzIHRoZSBjdXJyZW50IHBvaW50IG9mIHRoZSBjdXJy
ZW50IHBhdGgsIHdoaWNoIGlzIGNvbmNlcHR1YWxseSB0aGUgZmluYWwgcG9pbnQgcmVhY2hlZCBi
eSB0aGUgcGF0aCBzbyBmYXIuCisgICAgLy8gTm90ZSB0aGUgUGF0aCBjYW4gYmUgZW1wdHkgKGlz
RW1wdHkoKSA9PSB0cnVlKSBhbmQgc3RpbGwgaGF2ZSBhIGN1cnJlbnQgcG9pbnQuCisgICAgYm9v
bCBoYXNDdXJyZW50UG9pbnQoKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGN1cnJlbnRQb2ludCgp
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG8oY29uc3QgRmxvYXRQb2lu
dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTGluZVRvKGNvbnN0IEZsb2F0UG9pbnQm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFF1YWRDdXJ2ZVRvKGNvbnN0IEZsb2F0UG9p
bnQmIGNvbnRyb2xQb2ludCwgY29uc3QgRmxvYXRQb2ludCYgZW5kUG9pbnQpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWRkQmV6aWVyQ3VydmVUbyhjb25zdCBGbG9hdFBvaW50JiBjb250cm9s
UG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBjb250cm9sUG9pbnQyLCBjb25zdCBGbG9hdFBvaW50
JiBlbmRQb2ludCk7CisgICAgdm9pZCBhZGRBcmNUbyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRQb2ludCYsIGZsb2F0IHJhZGl1cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9z
ZVN1YnBhdGgoKTsKKworICAgIHZvaWQgYWRkQXJjKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCBy
YWRpdXMsIGZsb2F0IHN0YXJ0QW5nbGUsIGZsb2F0IGVuZEFuZ2xlLCBib29sIGFudGljbG9ja3dp
c2UpOworICAgIHZvaWQgYWRkUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIGFkZEVs
bGlwc2UoRmxvYXRQb2ludCwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSwgZmxvYXQgcm90
YXRpb24sIGZsb2F0IHN0YXJ0QW5nbGUsIGZsb2F0IGVuZEFuZ2xlLCBib29sIGFudGljbG9ja3dp
c2UpOworICAgIHZvaWQgYWRkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKKworICAgIGVudW0g
Um91bmRlZFJlY3RTdHJhdGVneSB7CisgICAgICAgIFByZWZlck5hdGl2ZVJvdW5kZWRSZWN0LAor
ICAgICAgICBQcmVmZXJCZXppZXJSb3VuZGVkUmVjdAogICAgIH07CiAKLSAgICAvLyBUaGUgcG9p
bnRzIGluIHRoZSBzdHJ1Y3R1cmUgYXJlIHRoZSBzYW1lIGFzIHRob3NlIHRoYXQgd291bGQgYmUg
dXNlZCB3aXRoIHRoZQotICAgIC8vIGFkZC4uLiBtZXRob2QuIEZvciBleGFtcGxlLCBhIGxpbmUg
cmV0dXJucyB0aGUgZW5kcG9pbnQsIHdoaWxlIGEgY3ViaWMgcmV0dXJucwotICAgIC8vIHR3byB0
YW5nZW50IHBvaW50cyBhbmQgdGhlIGVuZHBvaW50LgotICAgIHN0cnVjdCBQYXRoRWxlbWVudCB7
Ci0gICAgICAgIFBhdGhFbGVtZW50VHlwZSB0eXBlOwotICAgICAgICBGbG9hdFBvaW50KiBwb2lu
dHM7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwgUm91bmRlZFJlY3RT
dHJhdGVneSA9IFByZWZlck5hdGl2ZVJvdW5kZWRSZWN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBSb3VuZGVkUmVjdFN0
cmF0ZWd5ID0gUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOworICAgIHZvaWQgYWRkUm91bmRlZFJl
Y3QoY29uc3QgUm91bmRlZFJlY3QmKTsKIAotICAgIHVzaW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24g
PSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFBhdGhFbGVtZW50Jik+OworICAgIHZvaWQgYWRk
UGF0aChjb25zdCBQYXRoJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKLSAgICBjbGFzcyBQ
YXRoIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBQYXRoKCk7Ci0jaWYgVVNFKENHKQotICAgICAgICBQYXRoKFJl
dGFpblB0cjxDR011dGFibGVQYXRoUmVmPik7Ci0jZW5kaWYKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgflBhdGgoKTsKLQotICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXRoKGNvbnN0IFBhdGgmKTsK
LSAgICAgICAgV0VCQ09SRV9FWFBPUlQgUGF0aChQYXRoJiYpOwotICAgICAgICBXRUJDT1JFX0VY
UE9SVCBQYXRoJiBvcGVyYXRvcj0oY29uc3QgUGF0aCYpOwotICAgICAgICBXRUJDT1JFX0VYUE9S
VCBQYXRoJiBvcGVyYXRvcj0oUGF0aCYmKTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBQYXRo
IHBvbHlnb25QYXRoRnJvbVBvaW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludD4mKTsKLQotICAg
ICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBXaW5kUnVsZSA9IFdpbmRSdWxl
OjpOb25aZXJvKSBjb25zdDsKLSAgICAgICAgYm9vbCBzdHJva2VDb250YWlucyhTdHJva2VTdHls
ZUFwcGxpZXIqLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgICAgIC8vIGZhc3RCb3Vu
ZGluZ1JlY3QoKSBzaG91bGQgZXF1YWwgb3IgY29udGFpbiBib3VuZGluZ1JlY3QoKTsgYm91bmRp
bmdSZWN0KCkKLSAgICAgICAgLy8gc2hvdWxkIHBlcmZlY3RseSBib3VuZCB0aGUgcG9pbnRzIHdp
dGhpbiB0aGUgcGF0aC4KLSAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCgpIGNvbnN0Owot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgZmFzdEJvdW5kaW5nUmVjdCgpIGNvbnN0
OwotICAgICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdSZWN0KFN0cm9rZVN0eWxlQXBwbGll
ciogPSAwKSBjb25zdDsKLQotICAgICAgICBmbG9hdCBsZW5ndGgoKSBjb25zdDsKLSAgICAgICAg
UGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNhbFN0YXRlQXRMZW5ndGgoZmxvYXQgbGVuZ3RoKSBj
b25zdDsKLSAgICAgICAgRmxvYXRQb2ludCBwb2ludEF0TGVuZ3RoKGZsb2F0IGxlbmd0aCkgY29u
c3Q7Ci0KLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwotICAgICAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3BhdGg7IH0KLSAgICAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3Q7Ci0gICAgICAgIC8vIEdldHMgdGhlIGN1cnJlbnQgcG9pbnQgb2YgdGhlIGN1cnJl
bnQgcGF0aCwgd2hpY2ggaXMgY29uY2VwdHVhbGx5IHRoZSBmaW5hbCBwb2ludCByZWFjaGVkIGJ5
IHRoZSBwYXRoIHNvIGZhci4KLSAgICAgICAgLy8gTm90ZSB0aGUgUGF0aCBjYW4gYmUgZW1wdHkg
KGlzRW1wdHkoKSA9PSB0cnVlKSBhbmQgc3RpbGwgaGF2ZSBhIGN1cnJlbnQgcG9pbnQuCi0gICAg
ICAgIGJvb2wgaGFzQ3VycmVudFBvaW50KCkgY29uc3Q7Ci0gICAgICAgIEZsb2F0UG9pbnQgY3Vy
cmVudFBvaW50KCkgY29uc3Q7Ci0KLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG8o
Y29uc3QgRmxvYXRQb2ludCYpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExpbmVU
byhjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUXVh
ZEN1cnZlVG8oY29uc3QgRmxvYXRQb2ludCYgY29udHJvbFBvaW50LCBjb25zdCBGbG9hdFBvaW50
JiBlbmRQb2ludCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQmV6aWVyQ3VydmVU
byhjb25zdCBGbG9hdFBvaW50JiBjb250cm9sUG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBjb250
cm9sUG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiBlbmRQb2ludCk7Ci0gICAgICAgIHZvaWQgYWRk
QXJjVG8oY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCByYWRpdXMp
OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlU3VicGF0aCgpOwotCi0gICAgICAg
IHZvaWQgYWRkQXJjKGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCByYWRpdXMsIGZsb2F0IHN0YXJ0
QW5nbGUsIGZsb2F0IGVuZEFuZ2xlLCBib29sIGFudGljbG9ja3dpc2UpOwotICAgICAgICB2b2lk
IGFkZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZvaWQgYWRkRWxsaXBzZShGbG9h
dFBvaW50LCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbiwgZmxv
YXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSk7Ci0gICAg
ICAgIHZvaWQgYWRkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKLQotICAgICAgICBlbnVtIFJv
dW5kZWRSZWN0U3RyYXRlZ3kgewotICAgICAgICAgICAgUHJlZmVyTmF0aXZlUm91bmRlZFJlY3Qs
Ci0gICAgICAgICAgICBQcmVmZXJCZXppZXJSb3VuZGVkUmVjdAotICAgICAgICB9OwotCi0gICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRTaXplJiByb3VuZGluZ1JhZGlpLCBSb3VuZGVkUmVjdFN0cmF0ZWd5ID0gUHJl
ZmVyTmF0aXZlUm91bmRlZFJlY3QpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBSb3VuZGVkUmVjdFN0cmF0ZWd5ID0g
UHJlZmVyTmF0aXZlUm91bmRlZFJlY3QpOwotICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNv
bnN0IFJvdW5kZWRSZWN0Jik7Ci0KLSAgICAgICAgdm9pZCBhZGRQYXRoKGNvbnN0IFBhdGgmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLQotICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBG
bG9hdFNpemUmKTsKLQotICAgICAgICAvLyBUbyBrZWVwIFBhdGgoKSBjaGVhcCwgaXQgZG9lcyBu
b3QgYWxsb2NhdGUgYSBQbGF0Zm9ybVBhdGggaW1tZWRpYXRlbHkKLSAgICAgICAgLy8gbWVhbmlu
ZyBQYXRoOjpwbGF0Zm9ybVBhdGgoKSBjYW4gcmV0dXJuIG51bGwuCisgICAgdm9pZCB0cmFuc2xh
dGUoY29uc3QgRmxvYXRTaXplJik7CisKKyAgICAvLyBUbyBrZWVwIFBhdGgoKSBjaGVhcCwgaXQg
ZG9lcyBub3QgYWxsb2NhdGUgYSBQbGF0Zm9ybVBhdGggaW1tZWRpYXRlbHkKKyAgICAvLyBtZWFu
aW5nIFBhdGg6OnBsYXRmb3JtUGF0aCgpIGNhbiByZXR1cm4gbnVsbC4KICNpZiBVU0UoRElSRUNU
MkQpCi0gICAgICAgIEZsb2F0UmVjdCBmYXN0Qm91bmRpbmdSZWN0Rm9yU3Ryb2tlKGNvbnN0IFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEJikgY29uc3Q7Ci0gICAgICAgIFBsYXRmb3JtUGF0aFB0ciBw
bGF0Zm9ybVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGguZ2V0KCk7IH0KKyAgICBGbG9hdFJl
Y3QgZmFzdEJvdW5kaW5nUmVjdEZvclN0cm9rZShjb25zdCBQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCYpIGNvbnN0OworICAgIFBsYXRmb3JtUGF0aFB0ciBwbGF0Zm9ybVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3BhdGguZ2V0KCk7IH0KICNlbHNlCi0gICAgICAgIFBsYXRmb3JtUGF0aFB0ciBwbGF0
Zm9ybVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KKyAgICBQbGF0Zm9ybVBhdGhQdHIg
cGxhdGZvcm1QYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CiAjZW5kaWYKLSAgICAgICAg
Ly8gZW5zdXJlUGxhdGZvcm1QYXRoKCkgd2lsbCBhbGxvY2F0ZSBhIFBsYXRmb3JtUGF0aCBpZiBp
dCBoYXMgbm90IHlldCBiZWVuIGFuZCB3aWxsIG5ldmVyIHJldHVybiBudWxsLgotICAgICAgICBX
RUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBhdGhQdHIgZW5zdXJlUGxhdGZvcm1QYXRoKCk7CisgICAg
Ly8gZW5zdXJlUGxhdGZvcm1QYXRoKCkgd2lsbCBhbGxvY2F0ZSBhIFBsYXRmb3JtUGF0aCBpZiBp
dCBoYXMgbm90IHlldCBiZWVuIGFuZCB3aWxsIG5ldmVyIHJldHVybiBudWxsLgorICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXRmb3JtUGF0aFB0ciBlbnN1cmVQbGF0Zm9ybVBhdGgoKTsKIAotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5KGNvbnN0IFBhdGhBcHBsaWVyRnVuY3Rpb24mKSBj
b25zdDsKLSAgICAgICAgdm9pZCB0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseShjb25zdCBQYXRoQXBwbGllckZ1bmN0aW9uJikg
Y29uc3Q7CisgICAgdm9pZCB0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKLSAg
ICAgICAgc3RhdGljIGZsb2F0IGNpcmNsZUNvbnRyb2xQb2ludCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIC8vIEFwcHJveGltYXRpb24gb2YgY29udHJvbCBwb2ludCBwb3NpdGlvbnMgb24gYSBi
ZXppZXIgdG8gc2ltdWxhdGUgYSBxdWFydGVyIG9mIGEgY2lyY2xlLgotICAgICAgICAgICAgLy8g
VGhpcyBpcyAxLWthcHBhLCB3aGVyZSBrYXBwYSA9IDQgKiAoc3FydCgyKSAtIDEpIC8gMwotICAg
ICAgICAgICAgcmV0dXJuIDAuNDQ3NzE1OwotICAgICAgICB9CisgICAgc3RhdGljIGZsb2F0IGNp
cmNsZUNvbnRyb2xQb2ludCgpCisgICAgeworICAgICAgICAvLyBBcHByb3hpbWF0aW9uIG9mIGNv
bnRyb2wgcG9pbnQgcG9zaXRpb25zIG9uIGEgYmV6aWVyIHRvIHNpbXVsYXRlIGEgcXVhcnRlciBv
ZiBhIGNpcmNsZS4KKyAgICAgICAgLy8gVGhpcyBpcyAxLWthcHBhLCB3aGVyZSBrYXBwYSA9IDQg
KiAoc3FydCgyKSAtIDEpIC8gMworICAgICAgICByZXR1cm4gMC40NDc3MTU7CisgICAgfQogCi0g
ICAgICAgIHZvaWQgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJh
ZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUm
IGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICB2b2lkIGFkZEJlemllcnNGb3JSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1
cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cyk7CiAKICNpZiBVU0UoQ0cpIHx8
IFVTRShESVJFQ1QyRCkKLSAgICAgICAgdm9pZCBwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0
IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJh
ZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cyk7CisgICAgdm9pZCBwbGF0
Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNp
emUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0
IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdo
dFJhZGl1cyk7CiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKLSAgICAgICAgdm9pZCBhcHBl
bmRHZW9tZXRyeShJRDJEMUdlb21ldHJ5Kik7Ci0gICAgICAgIHZvaWQgY3JlYXRlR2VvbWV0cnlX
aXRoRmlsbE1vZGUoV2luZFJ1bGUsIENPTVB0cjxJRDJEMUdlb21ldHJ5R3JvdXA+JikgY29uc3Q7
CisgICAgdm9pZCBhcHBlbmRHZW9tZXRyeShJRDJEMUdlb21ldHJ5Kik7CisgICAgdm9pZCBjcmVh
dGVHZW9tZXRyeVdpdGhGaWxsTW9kZShXaW5kUnVsZSwgQ09NUHRyPElEMkQxR2VvbWV0cnlHcm91
cD4mKSBjb25zdDsKIAotICAgICAgICB2b2lkIG9wZW5GaWd1cmVBdEN1cnJlbnRQb2ludElmTmVj
ZXNzYXJ5KCk7Ci0gICAgICAgIHZvaWQgY2xvc2VBbnlPcGVuR2VvbWV0cmllcyh1bnNpZ25lZCBm
aWd1cmVFbmRTdHlsZSkgY29uc3Q7Ci0gICAgICAgIHZvaWQgY2xlYXJHZW9tZXRyaWVzKCk7Cisg
ICAgdm9pZCBvcGVuRmlndXJlQXRDdXJyZW50UG9pbnRJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQg
Y2xvc2VBbnlPcGVuR2VvbWV0cmllcyh1bnNpZ25lZCBmaWd1cmVFbmRTdHlsZSkgY29uc3Q7Cisg
ICAgdm9pZCBjbGVhckdlb21ldHJpZXMoKTsKICNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwotICAg
ICAgICB2b2lkIGR1bXAoKSBjb25zdDsKKyAgICB2b2lkIGR1bXAoKSBjb25zdDsKICNlbmRpZgog
Ci0gICAgcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPFBhdGg+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CiAjaWYgVVNFKERJUkVDVDJE
KQotICAgICAgICBWZWN0b3I8SUQyRDFHZW9tZXRyeSo+IG1fZ2VvbWV0cmllczsKLSAgICAgICAg
Q09NUHRyPElEMkQxR2VvbWV0cnlHcm91cD4gbV9wYXRoOwotICAgICAgICBtdXRhYmxlIENPTVB0
cjxJRDJEMUdlb21ldHJ5U2luaz4gbV9hY3RpdmVQYXRoOwotICAgICAgICBtdXRhYmxlIGJvb2wg
bV9maWd1cmVJc09wZW5lZCB7IGZhbHNlIH07CisgICAgVmVjdG9yPElEMkQxR2VvbWV0cnkqPiBt
X2dlb21ldHJpZXM7CisgICAgQ09NUHRyPElEMkQxR2VvbWV0cnlHcm91cD4gbV9wYXRoOworICAg
IG11dGFibGUgQ09NUHRyPElEMkQxR2VvbWV0cnlTaW5rPiBtX2FjdGl2ZVBhdGg7CisgICAgbXV0
YWJsZSBib29sIG1fZmlndXJlSXNPcGVuZWQgeyBmYWxzZSB9OwogI2Vsc2UKLSAgICAgICAgUGxh
dGZvcm1QYXRoUHRyIG1fcGF0aCB7IG51bGxwdHIgfTsKKyAgICBQbGF0Zm9ybVBhdGhQdHIgbV9w
YXRoIHsgbnVsbHB0ciB9OwogI2VuZGlmCi0gICAgfTsKK307CiAKIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQYXRoJik7CiAKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgUGF0aDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgdWludDY0X3QgbnVtUG9pbnRzID0gMDsKKyAgICBhcHBseShbJm51bVBvaW50c10oY29u
c3QgUGF0aEVsZW1lbnQmKSB7CisgICAgICAgICsrbnVtUG9pbnRzOworICAgIH0pOworCisgICAg
ZW5jb2RlciA8PCBudW1Qb2ludHM7CisKKyAgICBhcHBseShbJl0oYXV0byYgZWxlbWVudCkgewor
ICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0oZWxlbWVudC50eXBlKTsKKworICAgICAgICBzd2l0
Y2ggKGVsZW1lbnQudHlwZSkgeworICAgICAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6
IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgorICAgICAgICAgICAg
ZW5jb2RlciA8PCBlbGVtZW50LnBvaW50c1swXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdp
bGwgY29udGFpbiAxIHZhbHVlLgorICAgICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LnBvaW50
c1swXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVh
ZEN1cnZlVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVz
LgorICAgICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LnBvaW50c1swXTsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgZWxlbWVudC5wb2ludHNbMV07CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIg
d2lsbCBjb250YWluIDMgdmFsdWVzLgorICAgICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LnBv
aW50c1swXTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5wb2ludHNbMV07CisgICAg
ICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzJdOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6IC8vIFRoZSBwb2ludHMgbWVt
YmVyIHdpbGwgY29udGFpbiBubyB2YWx1ZXMuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0pOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQYXRoPiBQ
YXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBQYXRoIHBhdGg7CisgICAgdWlu
dDY0X3QgbnVtUG9pbnRzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobnVtUG9pbnRzKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHBhdGguY2xlYXIoKTsKKworICAgIGZv
ciAodWludDY0X3QgaSA9IDA7IGkgPCBudW1Qb2ludHM7ICsraSkgeworICAgICAgICBQYXRoRWxl
bWVudFR5cGUgZWxlbWVudFR5cGU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGVs
ZW1lbnRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
c3dpdGNoIChlbGVtZW50VHlwZSkgeworICAgICAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9p
bnQ6IHsgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCisgICAgICAg
ICAgICBGbG9hdFBvaW50IHBvaW50OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
b2ludCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHBhdGgubW92ZVRvKHBvaW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludDogeyAvLyBUaGUgcG9pbnRzIG1lbWJl
ciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4KKyAgICAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQ7Cisg
ICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvaW50KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcGF0aC5hZGRMaW5lVG8ocG9pbnQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFk
ZFF1YWRDdXJ2ZVRvUG9pbnQ6IHsgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIg
dmFsdWVzLgorICAgICAgICAgICAgRmxvYXRQb2ludCBjb250cm9sUG9pbnQ7CisgICAgICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRyb2xQb2ludCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAgICAgRmxvYXRQb2ludCBlbmRQb2ludDsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW5kUG9pbnQpKQorICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgICAgIHBhdGguYWRkUXVhZEN1cnZlVG8o
Y29udHJvbFBvaW50LCBlbmRQb2ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50OiB7IC8vIFRoZSBwb2ludHMg
bWVtYmVyIHdpbGwgY29udGFpbiAzIHZhbHVlcy4KKyAgICAgICAgICAgIEZsb2F0UG9pbnQgY29u
dHJvbFBvaW50MTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udHJvbFBvaW50
MSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAgICAg
RmxvYXRQb2ludCBjb250cm9sUG9pbnQyOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb250cm9sUG9pbnQyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50OworICAgICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShlbmRQb2ludCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICAgICAgcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKGNvbnRyb2xQb2ludDEsIGNv
bnRyb2xQb2ludDIsIGVuZFBvaW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6IC8vIFRoZSBwb2ludHMgbWVtYmVy
IHdpbGwgY29udGFpbiBubyB2YWx1ZXMuCisgICAgICAgICAgICBwYXRoLmNsb3NlU3VicGF0aCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcGF0
aDsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IDEyNzY4ZGUxNDc1NWFkY2VmNjFiYWMyYjlhYTllNGU5ZGU2
OTAyODAuLjgyYmUxOGZkNzljZmNhYjgyNzk3OGUxMDc1YWVmMWFlNjAxZmZkNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTgsNyAr
NTgsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGVuZ3RoQm94Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUGF0aC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvbWlzZWRBdHRhY2htZW50SW5mby5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CkBAIC03MzIsMTIxICs3MzEsNiBAQCBib29s
IEFyZ3VtZW50Q29kZXI8TGF5b3V0UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTGF5
b3V0UG9pbnQmIGxheW91dFBvaQogICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPExheW91
dFBvaW50Pjo6ZGVjb2RlKGRlY29kZXIsIGxheW91dFBvaW50KTsKIH0KIAotCi1zdGF0aWMgdm9p
ZCBwYXRoRW5jb2RlQXBwbGllckZ1bmN0aW9uKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBhdGhF
bGVtZW50JiBlbGVtZW50KQotewotICAgIGVuY29kZXIuZW5jb2RlRW51bShlbGVtZW50LnR5cGUp
OwotCi0gICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHsKLSAgICBjYXNlIFBhdGhFbGVtZW50TW92
ZVRvUG9pbnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgotICAg
ICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzBdOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwg
Y29udGFpbiAxIHZhbHVlLgotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzBdOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDog
Ly8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVzLgotICAgICAgICBlbmNv
ZGVyIDw8IGVsZW1lbnQucG9pbnRzWzBdOwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9p
bnRzWzFdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhdGhFbGVtZW50QWRkQ3VydmVUb1Bv
aW50OiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMyB2YWx1ZXMuCi0gICAgICAg
IGVuY29kZXIgPDwgZWxlbWVudC5wb2ludHNbMF07Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVu
dC5wb2ludHNbMV07Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5wb2ludHNbMl07Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6IC8vIFRoZSBwb2lu
dHMgbWVtYmVyIHdpbGwgY29udGFpbiBubyB2YWx1ZXMuCi0gICAgICAgIGJyZWFrOwotICAgIH0K
LX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFBhdGg+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUGF0aCYgcGF0aCkKLXsKLSAgICB1aW50NjRfdCBudW1Qb2ludHMgPSAwOwotICAgIHBh
dGguYXBwbHkoWyZudW1Qb2ludHNdKGNvbnN0IFBhdGhFbGVtZW50JikgewotICAgICAgICArK251
bVBvaW50czsKLSAgICB9KTsKLQotICAgIGVuY29kZXIgPDwgbnVtUG9pbnRzOwotCi0gICAgcGF0
aC5hcHBseShbJmVuY29kZXJdKGNvbnN0IFBhdGhFbGVtZW50JiBwYXRoRWxlbWVudCkgewotICAg
ICAgICBwYXRoRW5jb2RlQXBwbGllckZ1bmN0aW9uKGVuY29kZXIsIHBhdGhFbGVtZW50KTsKLSAg
ICB9KTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFBhdGg+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgUGF0aCYgcGF0aCkKLXsKLSAgICB1aW50NjRfdCBudW1Qb2ludHM7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShudW1Qb2ludHMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0g
ICAgcGF0aC5jbGVhcigpOwotCi0gICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IG51bVBvaW50
czsgKytpKSB7Ci0gICAgCi0gICAgICAgIFBhdGhFbGVtZW50VHlwZSBlbGVtZW50VHlwZTsKLSAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZWxlbWVudFR5cGUpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChlbGVtZW50VHlwZSkgewot
ICAgICAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6IHsgLy8gVGhlIHBvaW50cyBtZW1i
ZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCi0gICAgICAgICAgICBGbG9hdFBvaW50IHBvaW50Owot
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb2ludCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcGF0aC5tb3ZlVG8ocG9pbnQpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZExpbmVUb1Bv
aW50OiB7IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgotICAgICAg
ICAgICAgRmxvYXRQb2ludCBwb2ludDsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cG9pbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHBhdGgu
YWRkTGluZVRvKHBvaW50KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50OiB7IC8vIFRoZSBwb2ludHMgbWVt
YmVyIHdpbGwgY29udGFpbiAyIHZhbHVlcy4KLSAgICAgICAgICAgIEZsb2F0UG9pbnQgY29udHJv
bFBvaW50OwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9sUG9pbnQpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgRmxvYXRQb2ludCBl
bmRQb2ludDsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW5kUG9pbnQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcGF0aC5hZGRRdWFkQ3Vy
dmVUbyhjb250cm9sUG9pbnQsIGVuZFBvaW50KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQ6IHsgLy8gVGhlIHBv
aW50cyBtZW1iZXIgd2lsbCBjb250YWluIDMgdmFsdWVzLgotICAgICAgICAgICAgRmxvYXRQb2lu
dCBjb250cm9sUG9pbnQxOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9s
UG9pbnQxKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIEZs
b2F0UG9pbnQgY29udHJvbFBvaW50MjsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29udHJvbFBvaW50MikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
ICAgICBGbG9hdFBvaW50IGVuZFBvaW50OwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShlbmRQb2ludCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAg
ICBwYXRoLmFkZEJlemllckN1cnZlVG8oY29udHJvbFBvaW50MSwgY29udHJvbFBvaW50MiwgZW5k
UG9pbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBQYXRo
RWxlbWVudENsb3NlU3VicGF0aDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIG5v
IHZhbHVlcy4KLSAgICAgICAgICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1PcHRpb25h
bDxQYXRoPiBBcmd1bWVudENvZGVyPFBhdGg+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsK
LSAgICBQYXRoIHBhdGg7Ci0gICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgcGF0aCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4gcGF0aDsKLX0KLQogdm9pZCBBcmd1
bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBS
ZWNlbnRTZWFyY2gmIHJlY2VudFNlYXJjaCkKIHsKICAgICBlbmNvZGVyIDw8IHJlY2VudFNlYXJj
aC5zdHJpbmcgPDwgcmVjZW50U2VhcmNoLnRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDIzNWQ1ZTkyMmFlYTQyNzg1ODRjNDdkZjE1MGIy
MDlhYjM0YmMzYzguLjhkYzNjNjExODQ4ZmM1NDE0YmFkNjBlMTAwZjU5YjgwMTM2YzlmMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC05MCw3
ICs5MCw2IEBAIGNsYXNzIExheW91dFBvaW50OwogY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb247
CiBjbGFzcyBOb3RpZmljYXRpb247CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKLWNsYXNz
IFBhdGg7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZWdpb247CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwpAQCAtMzMzLDEyICszMzIsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkxheW91dFBvaW50PiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpMYXlvdXRQb2ludCYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXRoPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpQYXRoJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBXZWJDb3JlOjpQYXRoJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlBh
dGg+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6Okxlbmd0aD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6TGVuZ3RoJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJDb3JlOjpMZW5ndGgmKTsK
</data>
<flag name="review"
          id="400958"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385126</attachid>
            <date>2019-12-08 12:46:04 -0800</date>
            <delta_ts>2019-12-08 13:31:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-204993-20191208124603.patch</filename>
            <type>text/plain</type>
            <size>22481</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjNTAzZDk5ODgyZDU3
NTExZTk3NTViZDlhNzM3NTMwOTZlN2MwOS4uMTFmNGE5MTIzZjY1NGE5MGFjYzNiZGQzN2ZkMDc0
MjJkZTMxYTc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE5LTEyLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgV2ViQ29y
ZTo6UGF0aCBlbmNvZGVycyBhbmQgZGVjb2RlcnMgaW50byBXZWJDb3JlIGZyb20gV2ViQ29yZUFy
Z3VtZW50Q29kZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDQ5OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAg
IE1vdmUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIGxvZ2ljIGZyb20gV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzIGludG8gV2ViQ29yZS4gVGhlIGFiaWxpdHkgdG8gZW5jb2RlIG9yIGRlY29kZSBQYXRocwor
ICAgICAgICBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gZW5jb2RlIG9yIGRlY29kZSBEaXNwbGF5TGlz
dEl0ZW1zIHRoYXQgY29udGFpbiBQYXRoczsgc2luY2UgdGhlc2UgZW5jb2RlcnMgbGl2ZSBpbgor
ICAgICAgICBXZWJDb3JlLCB0aGUgZW5jb2RlcnMgZm9yIFBhdGhzIHNob3VsZCBsaXZlIHRoZXJl
IGFzIHdlbGwuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5oOgorCisgICAgICAgIEFsc28gZml4ZXMgdXAgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBQ
YXRoIGNsYXNzIGluIHRoaXMgaGVhZGVyLCBzdWNoIHRoYXQgdGhlIGNsYXNzIGRlY2xhcmF0aW9u
IGlzbid0IGluZGVudGVkCisgICAgICAgIG9uZSBsZXZlbCBwYXN0IHRoZSBuYW1lc3BhY2UuCisK
KyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXRoOjpwbGF0Zm9ybVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6Y2ly
Y2xlQ29udHJvbFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpkZWNvZGUpOgorCiAyMDE5LTEyLTA4ICB5b3Vlbm4g
ZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgdXNlIERPTUd1YXJk
ZWQgZm9yIG1hcGxpa2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2RmOTBkZmYzMTEyN2FkNzZjZjEwMDFkNjk0Y2Vi
MmEwYWJmYjMzYi4uODkyMjdhZDlhZGE4MWUxODhjOGZiNGMxODgxMjkzZTYyMDE1ZDg4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0xMi0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFdlYkNvcmU6OlBhdGggZW5jb2RlcnMg
YW5kIGRlY29kZXJzIGludG8gV2ViQ29yZSBmcm9tIFdlYkNvcmVBcmd1bWVudENvZGVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTkzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZW1vdmUgRW5jb2Rlci9E
ZWNvZGVyIHN1cHBvcnQgZm9yIFdlYkNvcmU6OlBhdGguCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6cGF0aEVuY29kZUFwcGxpZXJG
dW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGF0aD46OmVu
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGF0aD46OmRlY29k
ZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
CiAyMDE5LTEyLTA4ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IGRpZmZlcmVudCByZXNvbHV0aW9ucyBmb3IgdmlkZW8gdHJhY2tzIGNhcHR1cmVk
IGZyb20gVUlQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKaW5k
ZXggN2EyZjRhNTZjNmJhMDljYjExYTRhODRhNTFmZWQzY2MwMTllYWI4OC4uMWE3NzVlZDdhMDcy
NWRmNWQxOTlkMGNhOWRhNGEzM2RiNWQyMjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguaApAQCAtODIsMTQ3ICs4MiwyNTAgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotICAgIGNs
YXNzIEZsb2F0UG9pbnQ7Ci0gICAgY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKLSAgICBjbGFzcyBG
bG9hdFNpemU7Ci0gICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotICAgIGNsYXNzIFBhdGhUcmF2
ZXJzYWxTdGF0ZTsKLSAgICBjbGFzcyBSb3VuZGVkUmVjdDsKLSAgICBjbGFzcyBTdHJva2VTdHls
ZUFwcGxpZXI7Ci0KLSAgICBlbnVtIFBhdGhFbGVtZW50VHlwZSB7Ci0gICAgICAgIFBhdGhFbGVt
ZW50TW92ZVRvUG9pbnQsIC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVl
LgotICAgICAgICBQYXRoRWxlbWVudEFkZExpbmVUb1BvaW50LCAvLyBUaGUgcG9pbnRzIG1lbWJl
ciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4KLSAgICAgICAgUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVU
b1BvaW50LCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMiB2YWx1ZXMuCi0gICAg
ICAgIFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50LCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxs
IGNvbnRhaW4gMyB2YWx1ZXMuCi0gICAgICAgIFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRoIC8vIFRo
ZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiBubyB2YWx1ZXMuCitjbGFzcyBBZmZpbmVUcmFu
c2Zvcm07CitjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKK2NsYXNz
IEZsb2F0U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIFBhdGhUcmF2ZXJzYWxT
dGF0ZTsKK2NsYXNzIFJvdW5kZWRSZWN0OworY2xhc3MgU3Ryb2tlU3R5bGVBcHBsaWVyOworCitl
bnVtIFBhdGhFbGVtZW50VHlwZSB7CisgICAgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludCwgLy8gVGhl
IHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCisgICAgUGF0aEVsZW1lbnRBZGRM
aW5lVG9Qb2ludCwgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCisg
ICAgUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50LCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3
aWxsIGNvbnRhaW4gMiB2YWx1ZXMuCisgICAgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9pbnQsIC8v
IFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAzIHZhbHVlcy4KKyAgICBQYXRoRWxlbWVu
dENsb3NlU3VicGF0aCAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gbm8gdmFsdWVz
LgorfTsKKworLy8gVGhlIHBvaW50cyBpbiB0aGUgc3RydWN0dXJlIGFyZSB0aGUgc2FtZSBhcyB0
aG9zZSB0aGF0IHdvdWxkIGJlIHVzZWQgd2l0aCB0aGUKKy8vIGFkZC4uLiBtZXRob2QuIEZvciBl
eGFtcGxlLCBhIGxpbmUgcmV0dXJucyB0aGUgZW5kcG9pbnQsIHdoaWxlIGEgY3ViaWMgcmV0dXJu
cworLy8gdHdvIHRhbmdlbnQgcG9pbnRzIGFuZCB0aGUgZW5kcG9pbnQuCitzdHJ1Y3QgUGF0aEVs
ZW1lbnQgeworICAgIFBhdGhFbGVtZW50VHlwZSB0eXBlOworICAgIEZsb2F0UG9pbnQqIHBvaW50
czsKK307CisKK3VzaW5nIFBhdGhBcHBsaWVyRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgUGF0aEVsZW1lbnQmKT47CisKK2NsYXNzIFBhdGggeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgoKTsKKyNpZiBVU0Uo
Q0cpCisgICAgUGF0aChSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4pOworI2VuZGlmCisgICAg
V0VCQ09SRV9FWFBPUlQgflBhdGgoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgoY29uc3Qg
UGF0aCYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgoUGF0aCYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBQYXRoJiBvcGVyYXRvcj0oY29uc3QgUGF0aCYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBh
dGgmIG9wZXJhdG9yPShQYXRoJiYpOworCisgICAgc3RhdGljIFBhdGggcG9seWdvblBhdGhGcm9t
UG9pbnRzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50PiYpOworCisgICAgYm9vbCBjb250YWlucyhj
b25zdCBGbG9hdFBvaW50JiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybykgY29uc3Q7Cisg
ICAgYm9vbCBzdHJva2VDb250YWlucyhTdHJva2VTdHlsZUFwcGxpZXIqLCBjb25zdCBGbG9hdFBv
aW50JikgY29uc3Q7CisgICAgLy8gZmFzdEJvdW5kaW5nUmVjdCgpIHNob3VsZCBlcXVhbCBvciBj
b250YWluIGJvdW5kaW5nUmVjdCgpOyBib3VuZGluZ1JlY3QoKQorICAgIC8vIHNob3VsZCBwZXJm
ZWN0bHkgYm91bmQgdGhlIHBvaW50cyB3aXRoaW4gdGhlIHBhdGguCisgICAgRmxvYXRSZWN0IGJv
dW5kaW5nUmVjdCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVjdCBmYXN0Qm91
bmRpbmdSZWN0KCkgY29uc3Q7CisgICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nUmVjdChTdHJv
a2VTdHlsZUFwcGxpZXIqID0gMCkgY29uc3Q7CisKKyAgICBmbG9hdCBsZW5ndGgoKSBjb25zdDsK
KyAgICBQYXRoVHJhdmVyc2FsU3RhdGUgdHJhdmVyc2FsU3RhdGVBdExlbmd0aChmbG9hdCBsZW5n
dGgpIGNvbnN0OworICAgIEZsb2F0UG9pbnQgcG9pbnRBdExlbmd0aChmbG9hdCBsZW5ndGgpIGNv
bnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOworICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gIW1fcGF0aDsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owor
ICAgIC8vIEdldHMgdGhlIGN1cnJlbnQgcG9pbnQgb2YgdGhlIGN1cnJlbnQgcGF0aCwgd2hpY2gg
aXMgY29uY2VwdHVhbGx5IHRoZSBmaW5hbCBwb2ludCByZWFjaGVkIGJ5IHRoZSBwYXRoIHNvIGZh
ci4KKyAgICAvLyBOb3RlIHRoZSBQYXRoIGNhbiBiZSBlbXB0eSAoaXNFbXB0eSgpID09IHRydWUp
IGFuZCBzdGlsbCBoYXZlIGEgY3VycmVudCBwb2ludC4KKyAgICBib29sIGhhc0N1cnJlbnRQb2lu
dCgpIGNvbnN0OworICAgIEZsb2F0UG9pbnQgY3VycmVudFBvaW50KCkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50Jik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRMaW5lVG8oY29uc3QgRmxvYXRQb2ludCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkUXVhZEN1cnZlVG8oY29uc3QgRmxvYXRQb2ludCYgY29udHJvbFBvaW50
LCBjb25zdCBGbG9hdFBvaW50JiBlbmRQb2ludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRCZXppZXJDdXJ2ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2ludDEsIGNvbnN0IEZs
b2F0UG9pbnQmIGNvbnRyb2xQb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQmIGVuZFBvaW50KTsKKyAg
ICB2b2lkIGFkZEFyY1RvKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgZmxv
YXQgcmFkaXVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlU3VicGF0aCgpOworCisg
ICAgdm9pZCBhZGRBcmMoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHJhZGl1cywgZmxvYXQgc3Rh
cnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSk7CisgICAgdm9pZCBh
ZGRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgYWRkRWxsaXBzZShGbG9hdFBvaW50
LCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbiwgZmxvYXQgc3Rh
cnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSk7CisgICAgdm9pZCBh
ZGRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOworCisgICAgZW51bSBSb3VuZGVkUmVjdFN0cmF0
ZWd5IHsKKyAgICAgICAgUHJlZmVyTmF0aXZlUm91bmRlZFJlY3QsCisgICAgICAgIFByZWZlckJl
emllclJvdW5kZWRSZWN0CiAgICAgfTsKIAotICAgIC8vIFRoZSBwb2ludHMgaW4gdGhlIHN0cnVj
dHVyZSBhcmUgdGhlIHNhbWUgYXMgdGhvc2UgdGhhdCB3b3VsZCBiZSB1c2VkIHdpdGggdGhlCi0g
ICAgLy8gYWRkLi4uIG1ldGhvZC4gRm9yIGV4YW1wbGUsIGEgbGluZSByZXR1cm5zIHRoZSBlbmRw
b2ludCwgd2hpbGUgYSBjdWJpYyByZXR1cm5zCi0gICAgLy8gdHdvIHRhbmdlbnQgcG9pbnRzIGFu
ZCB0aGUgZW5kcG9pbnQuCi0gICAgc3RydWN0IFBhdGhFbGVtZW50IHsKLSAgICAgICAgUGF0aEVs
ZW1lbnRUeXBlIHR5cGU7Ci0gICAgICAgIEZsb2F0UG9pbnQqIHBvaW50czsKLSAgICB9OworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRTaXplJiByb3VuZGluZ1JhZGlpLCBSb3VuZGVkUmVjdFN0cmF0ZWd5ID0gUHJlZmVy
TmF0aXZlUm91bmRlZFJlY3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQcmVmZXJO
YXRpdmVSb3VuZGVkUmVjdCk7CisgICAgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBSb3VuZGVk
UmVjdCYpOwogCi0gICAgdXNpbmcgUGF0aEFwcGxpZXJGdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgUGF0aEVsZW1lbnQmKT47CisgICAgdm9pZCBhZGRQYXRoKGNvbnN0IFBhdGgm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAotICAgIGNsYXNzIFBhdGggewotICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQ
T1JUIFBhdGgoKTsKLSNpZiBVU0UoQ0cpCi0gICAgICAgIFBhdGgoUmV0YWluUHRyPENHTXV0YWJs
ZVBhdGhSZWY+KTsKLSNlbmRpZgotICAgICAgICBXRUJDT1JFX0VYUE9SVCB+UGF0aCgpOwotCi0g
ICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgoY29uc3QgUGF0aCYpOwotICAgICAgICBXRUJDT1JF
X0VYUE9SVCBQYXRoKFBhdGgmJik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgmIG9wZXJh
dG9yPShjb25zdCBQYXRoJik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgmIG9wZXJhdG9y
PShQYXRoJiYpOwotICAgICAgICAKLSAgICAgICAgc3RhdGljIFBhdGggcG9seWdvblBhdGhGcm9t
UG9pbnRzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50PiYpOwotCi0gICAgICAgIGJvb2wgY29udGFp
bnMoY29uc3QgRmxvYXRQb2ludCYsIFdpbmRSdWxlID0gV2luZFJ1bGU6Ok5vblplcm8pIGNvbnN0
OwotICAgICAgICBib29sIHN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciosIGNvbnN0
IEZsb2F0UG9pbnQmKSBjb25zdDsKLSAgICAgICAgLy8gZmFzdEJvdW5kaW5nUmVjdCgpIHNob3Vs
ZCBlcXVhbCBvciBjb250YWluIGJvdW5kaW5nUmVjdCgpOyBib3VuZGluZ1JlY3QoKQotICAgICAg
ICAvLyBzaG91bGQgcGVyZmVjdGx5IGJvdW5kIHRoZSBwb2ludHMgd2l0aGluIHRoZSBwYXRoLgot
ICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0KCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIEZsb2F0UmVjdCBmYXN0Qm91bmRpbmdSZWN0KCkgY29uc3Q7Ci0gICAgICAgIEZsb2F0
UmVjdCBzdHJva2VCb3VuZGluZ1JlY3QoU3Ryb2tlU3R5bGVBcHBsaWVyKiA9IDApIGNvbnN0Owot
Ci0gICAgICAgIGZsb2F0IGxlbmd0aCgpIGNvbnN0OwotICAgICAgICBQYXRoVHJhdmVyc2FsU3Rh
dGUgdHJhdmVyc2FsU3RhdGVBdExlbmd0aChmbG9hdCBsZW5ndGgpIGNvbnN0OwotICAgICAgICBG
bG9hdFBvaW50IHBvaW50QXRMZW5ndGgoZmxvYXQgbGVuZ3RoKSBjb25zdDsKLQotICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7Ci0gICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gIW1fcGF0aDsgfQotICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLSAgICAg
ICAgLy8gR2V0cyB0aGUgY3VycmVudCBwb2ludCBvZiB0aGUgY3VycmVudCBwYXRoLCB3aGljaCBp
cyBjb25jZXB0dWFsbHkgdGhlIGZpbmFsIHBvaW50IHJlYWNoZWQgYnkgdGhlIHBhdGggc28gZmFy
LgotICAgICAgICAvLyBOb3RlIHRoZSBQYXRoIGNhbiBiZSBlbXB0eSAoaXNFbXB0eSgpID09IHRy
dWUpIGFuZCBzdGlsbCBoYXZlIGEgY3VycmVudCBwb2ludC4KLSAgICAgICAgYm9vbCBoYXNDdXJy
ZW50UG9pbnQoKSBjb25zdDsKLSAgICAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9pbnQoKSBjb25z
dDsKLQotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50
Jik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkTGluZVRvKGNvbnN0IEZsb2F0UG9p
bnQmKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRRdWFkQ3VydmVUbyhjb25zdCBG
bG9hdFBvaW50JiBjb250cm9sUG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIGVuZFBvaW50KTsKLSAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRCZXppZXJDdXJ2ZVRvKGNvbnN0IEZsb2F0UG9p
bnQmIGNvbnRyb2xQb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2ludDIsIGNvbnN0
IEZsb2F0UG9pbnQmIGVuZFBvaW50KTsKLSAgICAgICAgdm9pZCBhZGRBcmNUbyhjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHJhZGl1cyk7Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xvc2VTdWJwYXRoKCk7Ci0KLSAgICAgICAgdm9pZCBhZGRBcmMoY29u
c3QgRmxvYXRQb2ludCYsIGZsb2F0IHJhZGl1cywgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5k
QW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSk7Ci0gICAgICAgIHZvaWQgYWRkUmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKLSAgICAgICAgdm9pZCBhZGRFbGxpcHNlKEZsb2F0UG9pbnQsIGZsb2F0IHJh
ZGl1c1gsIGZsb2F0IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uLCBmbG9hdCBzdGFydEFuZ2xlLCBm
bG9hdCBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3aXNlKTsKLSAgICAgICAgdm9pZCBhZGRFbGxp
cHNlKGNvbnN0IEZsb2F0UmVjdCYpOwotCi0gICAgICAgIGVudW0gUm91bmRlZFJlY3RTdHJhdGVn
eSB7Ci0gICAgICAgICAgICBQcmVmZXJOYXRpdmVSb3VuZGVkUmVjdCwKLSAgICAgICAgICAgIFBy
ZWZlckJlemllclJvdW5kZWRSZWN0Ci0gICAgICAgIH07Ci0KLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUm
IHJvdW5kaW5nUmFkaWksIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQcmVmZXJOYXRpdmVSb3VuZGVk
UmVjdCk7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYsIFJvdW5kZWRSZWN0U3RyYXRlZ3kgPSBQcmVmZXJOYXRpdmVSb3Vu
ZGVkUmVjdCk7Ci0gICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3Qm
KTsKLQotICAgICAgICB2b2lkIGFkZFBhdGgoY29uc3QgUGF0aCYsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOwotCi0gICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYpOwotCi0g
ICAgICAgIC8vIFRvIGtlZXAgUGF0aCgpIGNoZWFwLCBpdCBkb2VzIG5vdCBhbGxvY2F0ZSBhIFBs
YXRmb3JtUGF0aCBpbW1lZGlhdGVseQotICAgICAgICAvLyBtZWFuaW5nIFBhdGg6OnBsYXRmb3Jt
UGF0aCgpIGNhbiByZXR1cm4gbnVsbC4KKyAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNp
emUmKTsKKworICAgIC8vIFRvIGtlZXAgUGF0aCgpIGNoZWFwLCBpdCBkb2VzIG5vdCBhbGxvY2F0
ZSBhIFBsYXRmb3JtUGF0aCBpbW1lZGlhdGVseQorICAgIC8vIG1lYW5pbmcgUGF0aDo6cGxhdGZv
cm1QYXRoKCkgY2FuIHJldHVybiBudWxsLgogI2lmIFVTRShESVJFQ1QyRCkKLSAgICAgICAgRmxv
YXRSZWN0IGZhc3RCb3VuZGluZ1JlY3RGb3JTdHJva2UoY29uc3QgUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQmKSBjb25zdDsKLSAgICAgICAgUGxhdGZvcm1QYXRoUHRyIHBsYXRmb3JtUGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0aC5nZXQoKTsgfQorICAgIEZsb2F0UmVjdCBmYXN0Qm91bmRpbmdS
ZWN0Rm9yU3Ryb2tlKGNvbnN0IFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJikgY29uc3Q7CisgICAg
UGxhdGZvcm1QYXRoUHRyIHBsYXRmb3JtUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5nZXQo
KTsgfQogI2Vsc2UKLSAgICAgICAgUGxhdGZvcm1QYXRoUHRyIHBsYXRmb3JtUGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgIFBsYXRmb3JtUGF0aFB0ciBwbGF0Zm9ybVBhdGgoKSBj
b25zdCB7IHJldHVybiBtX3BhdGg7IH0KICNlbmRpZgotICAgICAgICAvLyBlbnN1cmVQbGF0Zm9y
bVBhdGgoKSB3aWxsIGFsbG9jYXRlIGEgUGxhdGZvcm1QYXRoIGlmIGl0IGhhcyBub3QgeWV0IGJl
ZW4gYW5kIHdpbGwgbmV2ZXIgcmV0dXJuIG51bGwuCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtUGF0aFB0ciBlbnN1cmVQbGF0Zm9ybVBhdGgoKTsKKyAgICAvLyBlbnN1cmVQbGF0Zm9y
bVBhdGgoKSB3aWxsIGFsbG9jYXRlIGEgUGxhdGZvcm1QYXRoIGlmIGl0IGhhcyBub3QgeWV0IGJl
ZW4gYW5kIHdpbGwgbmV2ZXIgcmV0dXJuIG51bGwuCisgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZv
cm1QYXRoUHRyIGVuc3VyZVBsYXRmb3JtUGF0aCgpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwbHkoY29uc3QgUGF0aEFwcGxpZXJGdW5jdGlvbiYpIGNvbnN0OwotICAgICAgICB2
b2lkIHRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGx5KGNvbnN0IFBhdGhBcHBsaWVyRnVuY3Rpb24mKSBjb25zdDsKKyAgICB2b2lk
IHRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAotICAgICAgICBzdGF0aWMgZmxv
YXQgY2lyY2xlQ29udHJvbFBvaW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQXBwcm94
aW1hdGlvbiBvZiBjb250cm9sIHBvaW50IHBvc2l0aW9ucyBvbiBhIGJlemllciB0byBzaW11bGF0
ZSBhIHF1YXJ0ZXIgb2YgYSBjaXJjbGUuCi0gICAgICAgICAgICAvLyBUaGlzIGlzIDEta2FwcGEs
IHdoZXJlIGthcHBhID0gNCAqIChzcXJ0KDIpIC0gMSkgLyAzCi0gICAgICAgICAgICByZXR1cm4g
MC40NDc3MTU7Ci0gICAgICAgIH0KKyAgICBzdGF0aWMgZmxvYXQgY2lyY2xlQ29udHJvbFBvaW50
KCkKKyAgICB7CisgICAgICAgIC8vIEFwcHJveGltYXRpb24gb2YgY29udHJvbCBwb2ludCBwb3Np
dGlvbnMgb24gYSBiZXppZXIgdG8gc2ltdWxhdGUgYSBxdWFydGVyIG9mIGEgY2lyY2xlLgorICAg
ICAgICAvLyBUaGlzIGlzIDEta2FwcGEsIHdoZXJlIGthcHBhID0gNCAqIChzcXJ0KDIpIC0gMSkg
LyAzCisgICAgICAgIHJldHVybiAwLjQ0NzcxNTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBhZGRC
ZXppZXJzRm9yUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0
b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9h
dFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRp
dXMpOworICAgIHZvaWQgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdo
dFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNp
emUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsKIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKQot
ICAgICAgICB2b2lkIHBsYXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BS
aWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9h
dFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAgICB2b2lkIHBsYXRmb3JtQWRkUGF0aEZvclJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1
cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0
b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsKICNlbmRp
ZgogCiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICB2b2lkIGFwcGVuZEdlb21ldHJ5KElEMkQx
R2VvbWV0cnkqKTsKLSAgICAgICAgdm9pZCBjcmVhdGVHZW9tZXRyeVdpdGhGaWxsTW9kZShXaW5k
UnVsZSwgQ09NUHRyPElEMkQxR2VvbWV0cnlHcm91cD4mKSBjb25zdDsKKyAgICB2b2lkIGFwcGVu
ZEdlb21ldHJ5KElEMkQxR2VvbWV0cnkqKTsKKyAgICB2b2lkIGNyZWF0ZUdlb21ldHJ5V2l0aEZp
bGxNb2RlKFdpbmRSdWxlLCBDT01QdHI8SUQyRDFHZW9tZXRyeUdyb3VwPiYpIGNvbnN0OwogCi0g
ICAgICAgIHZvaWQgb3BlbkZpZ3VyZUF0Q3VycmVudFBvaW50SWZOZWNlc3NhcnkoKTsKLSAgICAg
ICAgdm9pZCBjbG9zZUFueU9wZW5HZW9tZXRyaWVzKHVuc2lnbmVkIGZpZ3VyZUVuZFN0eWxlKSBj
b25zdDsKLSAgICAgICAgdm9pZCBjbGVhckdlb21ldHJpZXMoKTsKKyAgICB2b2lkIG9wZW5GaWd1
cmVBdEN1cnJlbnRQb2ludElmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBjbG9zZUFueU9wZW5HZW9t
ZXRyaWVzKHVuc2lnbmVkIGZpZ3VyZUVuZFN0eWxlKSBjb25zdDsKKyAgICB2b2lkIGNsZWFyR2Vv
bWV0cmllcygpOwogI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIHZvaWQgZHVtcCgp
IGNvbnN0OworICAgIHZvaWQgZHVtcCgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBwcml2YXRlOgor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGF0aD4gZGVjb2Rl
KERlY29kZXImKTsKKworcHJpdmF0ZToKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgICAgIFZlY3Rv
cjxJRDJEMUdlb21ldHJ5Kj4gbV9nZW9tZXRyaWVzOwotICAgICAgICBDT01QdHI8SUQyRDFHZW9t
ZXRyeUdyb3VwPiBtX3BhdGg7Ci0gICAgICAgIG11dGFibGUgQ09NUHRyPElEMkQxR2VvbWV0cnlT
aW5rPiBtX2FjdGl2ZVBhdGg7Ci0gICAgICAgIG11dGFibGUgYm9vbCBtX2ZpZ3VyZUlzT3BlbmVk
IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8SUQyRDFHZW9tZXRyeSo+IG1fZ2VvbWV0cmllczsKKyAg
ICBDT01QdHI8SUQyRDFHZW9tZXRyeUdyb3VwPiBtX3BhdGg7CisgICAgbXV0YWJsZSBDT01QdHI8
SUQyRDFHZW9tZXRyeVNpbms+IG1fYWN0aXZlUGF0aDsKKyAgICBtdXRhYmxlIGJvb2wgbV9maWd1
cmVJc09wZW5lZCB7IGZhbHNlIH07CiAjZWxzZQotICAgICAgICBQbGF0Zm9ybVBhdGhQdHIgbV9w
YXRoIHsgbnVsbHB0ciB9OworICAgIFBsYXRmb3JtUGF0aFB0ciBtX3BhdGggeyBudWxscHRyIH07
CiAjZW5kaWYKLSAgICB9OworfTsKIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIGNvbnN0IFBhdGgmKTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBQYXRoOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICB1aW50NjRfdCBu
dW1Qb2ludHMgPSAwOworICAgIGFwcGx5KFsmbnVtUG9pbnRzXShjb25zdCBQYXRoRWxlbWVudCYp
IHsKKyAgICAgICAgKytudW1Qb2ludHM7CisgICAgfSk7CisKKyAgICBlbmNvZGVyIDw8IG51bVBv
aW50czsKKworICAgIGFwcGx5KFsmXShhdXRvJiBlbGVtZW50KSB7CisgICAgICAgIGVuY29kZXIu
ZW5jb2RlRW51bShlbGVtZW50LnR5cGUpOworCisgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBl
KSB7CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludDoKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgZWxlbWVudC5wb2ludHNbMF07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBQYXRoRWxlbWVudEFkZExpbmVUb1BvaW50OgorICAgICAgICAgICAgZW5jb2RlciA8PCBl
bGVtZW50LnBvaW50c1swXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhF
bGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZWxlbWVu
dC5wb2ludHNbMF07CisgICAgICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzFdOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRvUG9p
bnQ6CisgICAgICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQucG9pbnRzWzBdOworICAgICAgICAg
ICAgZW5jb2RlciA8PCBlbGVtZW50LnBvaW50c1sxXTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwg
ZWxlbWVudC5wb2ludHNbMl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRo
RWxlbWVudENsb3NlU3VicGF0aDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBhdGg+IFBhdGg6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFBhdGggcGF0aDsKKyAgICB1aW50NjRfdCBu
dW1Qb2ludHM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1Qb2ludHMpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcGF0aC5jbGVhcigpOworCisgICAgZm9yICh1aW50
NjRfdCBpID0gMDsgaSA8IG51bVBvaW50czsgKytpKSB7CisgICAgICAgIFBhdGhFbGVtZW50VHlw
ZSBlbGVtZW50VHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZWxlbWVudFR5
cGUpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBzd2l0Y2gg
KGVsZW1lbnRUeXBlKSB7CisgICAgICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludDogewor
ICAgICAgICAgICAgRmxvYXRQb2ludCBwb2ludDsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocG9pbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICBwYXRoLm1vdmVUbyhwb2ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9pbnQ6IHsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgcG9pbnQ7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvaW50
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcGF0
aC5hZGRMaW5lVG8ocG9pbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBQYXRoRWxlbWVudEFkZFF1YWRDdXJ2ZVRvUG9pbnQ6IHsKKyAgICAgICAgICAgIEZs
b2F0UG9pbnQgY29udHJvbFBvaW50OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
b250cm9sUG9pbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGVuZFBvaW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgICAgICBwYXRoLmFkZFF1YWRDdXJ2ZVRvKGNvbnRyb2xQb2ludCwgZW5kUG9pbnQp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dEFkZEN1cnZlVG9Qb2ludDogeworICAgICAgICAgICAgRmxvYXRQb2ludCBjb250cm9sUG9pbnQx
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9sUG9pbnQxKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBGbG9hdFBvaW50
IGNvbnRyb2xQb2ludDI7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRyb2xQ
b2ludDIpKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
ICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGVuZFBvaW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgICAgICBwYXRoLmFkZEJlemllckN1cnZlVG8oY29udHJvbFBvaW50MSwgY29udHJvbFBvaW50
MiwgZW5kUG9pbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBQYXRoRWxlbWVudENsb3NlU3VicGF0aDoKKyAgICAgICAgICAgIHBhdGguY2xvc2VTdWJwYXRo
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBw
YXRoOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggMTI3NjhkZTE0NzU1YWRjZWY2MWJhYzJiOWFhOWU0ZTlk
ZTY5MDI4MC4uODJiZTE4ZmQ3OWNmY2FiODI3OTc4ZTEwNzVhZWYxYWU2MDFmZmQ1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC01OCw3
ICs1OCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGhCb3guaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJk
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYXRoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KQEAgLTczMiwxMjEgKzczMSw2IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxMYXlvdXRQb2ludD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBM
YXlvdXRQb2ludCYgbGF5b3V0UG9pCiAgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8TGF5
b3V0UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgbGF5b3V0UG9pbnQpOwogfQogCi0KLXN0YXRpYyB2
b2lkIHBhdGhFbmNvZGVBcHBsaWVyRnVuY3Rpb24oRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGF0
aEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGVsZW1lbnQudHlw
ZSk7Ci0KLSAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewotICAgIGNhc2UgUGF0aEVsZW1lbnRN
b3ZlVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCi0g
ICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5wb2ludHNbMF07Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2ls
bCBjb250YWluIDEgdmFsdWUuCi0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5wb2ludHNbMF07
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFkQ3VydmVUb1BvaW50
OiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMiB2YWx1ZXMuCi0gICAgICAgIGVu
Y29kZXIgPDwgZWxlbWVudC5wb2ludHNbMF07Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5w
b2ludHNbMV07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRDdXJ2ZVRv
UG9pbnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAzIHZhbHVlcy4KLSAgICAg
ICAgZW5jb2RlciA8PCBlbGVtZW50LnBvaW50c1swXTsKLSAgICAgICAgZW5jb2RlciA8PCBlbGVt
ZW50LnBvaW50c1sxXTsKLSAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LnBvaW50c1syXTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXRoRWxlbWVudENsb3NlU3VicGF0aDogLy8gVGhlIHBv
aW50cyBtZW1iZXIgd2lsbCBjb250YWluIG5vIHZhbHVlcy4KLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotfQotCi12b2lkIEFyZ3VtZW50Q29kZXI8UGF0aD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBQYXRoJiBwYXRoKQotewotICAgIHVpbnQ2NF90IG51bVBvaW50cyA9IDA7Ci0gICAg
cGF0aC5hcHBseShbJm51bVBvaW50c10oY29uc3QgUGF0aEVsZW1lbnQmKSB7Ci0gICAgICAgICsr
bnVtUG9pbnRzOwotICAgIH0pOwotCi0gICAgZW5jb2RlciA8PCBudW1Qb2ludHM7Ci0KLSAgICBw
YXRoLmFwcGx5KFsmZW5jb2Rlcl0oY29uc3QgUGF0aEVsZW1lbnQmIHBhdGhFbGVtZW50KSB7Ci0g
ICAgICAgIHBhdGhFbmNvZGVBcHBsaWVyRnVuY3Rpb24oZW5jb2RlciwgcGF0aEVsZW1lbnQpOwot
ICAgIH0pOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8UGF0aD46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBQYXRoJiBwYXRoKQotewotICAgIHVpbnQ2NF90IG51bVBvaW50czsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG51bVBvaW50cykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICBwYXRoLmNsZWFyKCk7Ci0KLSAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgbnVtUG9p
bnRzOyArK2kpIHsKLSAgICAKLSAgICAgICAgUGF0aEVsZW1lbnRUeXBlIGVsZW1lbnRUeXBlOwot
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShlbGVtZW50VHlwZSkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGVsZW1lbnRUeXBlKSB7
Ci0gICAgICAgIGNhc2UgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludDogeyAvLyBUaGUgcG9pbnRzIG1l
bWJlciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4KLSAgICAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQ7
Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvaW50KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBwYXRoLm1vdmVUbyhwb2ludCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRv
UG9pbnQ6IHsgLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCi0gICAg
ICAgICAgICBGbG9hdFBvaW50IHBvaW50OwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwb2ludCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcGF0
aC5hZGRMaW5lVG8ocG9pbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBQYXRoRWxlbWVudEFkZFF1YWRDdXJ2ZVRvUG9pbnQ6IHsgLy8gVGhlIHBvaW50cyBt
ZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVzLgotICAgICAgICAgICAgRmxvYXRQb2ludCBjb250
cm9sUG9pbnQ7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRyb2xQb2ludCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBGbG9hdFBvaW50
IGVuZFBvaW50OwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmRQb2ludCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBwYXRoLmFkZFF1YWRD
dXJ2ZVRvKGNvbnRyb2xQb2ludCwgZW5kUG9pbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDogeyAvLyBUaGUg
cG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMyB2YWx1ZXMuCi0gICAgICAgICAgICBGbG9hdFBv
aW50IGNvbnRyb2xQb2ludDE7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRy
b2xQb2ludDEpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAg
RmxvYXRQb2ludCBjb250cm9sUG9pbnQyOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb250cm9sUG9pbnQyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGVuZFBvaW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
ICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjb250cm9sUG9pbnQxLCBjb250cm9sUG9pbnQyLCBl
bmRQb2ludCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFBh
dGhFbGVtZW50Q2xvc2VTdWJwYXRoOiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4g
bm8gdmFsdWVzLgotICAgICAgICAgICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLU9wdGlv
bmFsPFBhdGg+IEFyZ3VtZW50Q29kZXI8UGF0aD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQot
ewotICAgIFBhdGggcGF0aDsKLSAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBwYXRoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiBwYXRoOwotfQotCiB2b2lkIEFy
Z3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlY2VudFNlYXJjaCYgcmVjZW50U2VhcmNoKQogewogICAgIGVuY29kZXIgPDwgcmVjZW50U2Vh
cmNoLnN0cmluZyA8PCByZWNlbnRTZWFyY2gudGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMTcxMWI2ODc1NjliN2ViZWE0NWFhZTAwYmIw
Y2NhMTkyZWJmZmZlMS4uZjNlNjkyZjk3NmZjOTNiYjE0MmE0MTQ4NGU1YjJkYzQwNWJiMzBhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTkw
LDcgKzkwLDYgQEAgY2xhc3MgTGF5b3V0UG9pbnQ7CiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlv
bjsKIGNsYXNzIE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwotY2xh
c3MgUGF0aDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlZ2lvbjsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CkBAIC0zMzMsMTIgKzMzMiw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6TGF5b3V0UG9pbnQ+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYkNvcmU6OkxheW91dFBvaW50Jik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBhdGg+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlBhdGgmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYkNvcmU6OlBhdGgmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6
UGF0aD4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6TGVuZ3RoPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpMZW5ndGgmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6Okxlbmd0aCYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>