<?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>184670</bug_id>
          
          <creation_ts>2018-04-16 15:21:47 -0700</creation_ts>
          <short_desc>Make all the items of the SVG tear-off properties list be RefCounted objects</short_desc>
          <delta_ts>2021-11-01 12:05:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>191237</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>168586</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>dino</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1414925</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-04-16 15:21:47 -0700</bug_when>
    <thetext>This work is a step towards https://bugs.webkit.org/show_bug.cgi?id=168586.

1. A new class, named SVGValue, will be added. This class is RefCounted. It is also a variant of the all the types of the list elements.
2. A new template class, named SVGValueList will be added. This class is derived from Vector&lt;RefPtr&lt;SVGValue&gt;&gt;. It provides easy access to the underlaying data members. It handles the copy assignment such that the underlaying data members are copied not referenced.
3. All the list properties classes will be derived form SVGValueList. For example SVGNumberListValues will be derived from SVGValueList&lt;float&gt;.
4. When an item is added to the values of a tear-off object, a new RefPtr&lt;SVGValue&gt; is created to hold the new data.
5. When an item of the values of a tear-off object is referenced by a wrapper, the reference of the underlaying data member is obtained form the RefPtr&lt;SVGValue&gt;.

The patch of this bug will add the overhead of saving all the data of the list properties as RefCounted objects. It will not make the code more secure. All the raw references and raw pointers from the values to the wrappers will remain the same. But it will make changing all SVG attributes to be RefCounted a lot easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414932</commentid>
    <comment_count>1</comment_count>
      <attachid>338049</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-04-16 15:31:03 -0700</bug_when>
    <thetext>Created attachment 338049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414936</commentid>
    <comment_count>2</comment_count>
      <attachid>338051</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-04-16 15:53:58 -0700</bug_when>
    <thetext>Created attachment 338051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414984</commentid>
    <comment_count>3</comment_count>
      <attachid>338066</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-04-16 18:16:20 -0700</bug_when>
    <thetext>Created attachment 338066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533601</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-05-06 15:28:26 -0700</bug_when>
    <thetext>This is already done in https://bugs.webkit.org/show_bug.cgi?id=191237.

*** This bug has been marked as a duplicate of bug 191237 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810729</commentid>
    <comment_count>5</comment_count>
      <attachid>338066</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-01 12:05:26 -0700</bug_when>
    <thetext>Comment on attachment 338066
Patch

This has been requesting review for more than one year.  If this is still needed, please rebase and re-request review.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338049</attachid>
            <date>2018-04-16 15:31:03 -0700</date>
            <delta_ts>2018-04-16 15:53:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184670-20180416153102.patch</filename>
            <type>text/plain</type>
            <size>87798</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0OSBAQAorMjAxOC0wNC0xNiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgYWxs
IHRoZSBpdGVtcyBvZiB0aGUgU1ZHIHRlYXItb2ZmIHByb3BlcnRpZXMgbGlzdCBiZSBSZWZDb3Vu
dGVkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIEl0IGFkZHMg
dGhlIGNsYXNzIFNWR1ZhbHVlIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBhbGwgdGhlIHR5cGVzIG9m
IHRoZQorICAgICAgICAgICBTVkcgcHJvcGVydGllcyBsaXN0LgorCisgICAgICAgIC0tIEl0IGFk
ZHMgdGhlIGNsYXNzIFNWR1ZhbHVlTGlzdCB3aGljaCBpcyBkZXJpdmVkIGZvcm0gVmVjdG9yPFJl
ZlB0cjxTVkdWYWx1ZT4+LgorIAorICAgICAgICAtLSBJdCBtYWtlcyBhbGwgdGhlIFNWRyBsaXN0
IHByb3BlcnR5IGNsYXNzZXMgYmUgZGVyaXZlZCBmcm9tIFNWR1ZhbHVlTGlzdC4KKworICAgICAg
ICAtLSBJdCBtYW5hZ2VzIGFkZGluZyBhIFJlZlB0cjxTVkdWYWx1ZT4gdG8gdGhlIGxpc3QgcHJv
cGVydHkgdmVjdG9yIGZyb20KKyAgICAgICAgICAgdGhlIHVuZGVybGF5aW5nIGl0ZW0gZGF0YS4K
KworICAgICAgICAtLSBBIHJlZmVyZW5jZSB0byB0aGUgdW5kZXJsYXlpbmcgaXRlbSBkYXRhIGlz
IG9idGFpbmVkIGZyb20gdGhlIFJlZlB0cjxTVkdWYWx1ZT4KKyAgICAgICAgICAgYW5kIHBhc3Nl
ZCB0byB0aGUgd3JhcHBlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWxsIHRoZSBTVkcgbGlzdCBwcm9wZXJ0aWVzIGhlYWRlciAKKyAgICAgICAgZmls
ZXMgYXJlIHByaXZhdGUuIFNWR1ZhbHVlLmggYW5kIFNWR1ZhbHVlTGlzdC5oIGFuZCBhbGwgdGhl
IGZpbGVzIHRoZXkKKyAgICAgICAgaW5jbHVkZSBoYXZlIHRvIGJlIHByaXZhdGUgYXMgd2VsbC4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBhdGhGcm9tUG9seWdvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEZyb21Q
b2x5bGluZUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXNCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUNoYXJhY3RlckRh
dGEpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmFk
ZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRU
eXBlLmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoTGlzdFZhbHVlczo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlz
dFZhbHVlczo6dmFsdWVBc1N0cmluZyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExp
c3RWYWx1ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdOdW1iZXJMaXN0VmFsdWVzOjpwYXJzZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdOdW1iZXJMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5oOgorICAgICAgICAqIHN2Zy9TVkdQYXJzZXJVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRzTGlzdEZyb21TVkdEYXRhKToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdM
aXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUb0hvcml6b250YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21v
b3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJjVG8pOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VTVkdTZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdFNvdXJjZTo6bmV4dENvbW1hbmQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTGlzdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlz
dFZhbHVlczo6Y2xlYXJJdGVtQ29udGV4dEFuZFJvbGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXRo
U2VnTGlzdFZhbHVlcy5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgor
ICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9pbnRMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHUG9pbnRMaXN0VmFsdWVzLmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6cGFyc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZyBjb25zdCk6CisgICAgICAg
ICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAq
IHN2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6IAorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNv
bnNvbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNv
bmNhdGVuYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1
ZXM6OnZhbHVlQXNTdHJpbmcgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzLmg6IFJlc29sdmUgYSBjeWNsaWMgaGVhZGVyIGZpbGUgcmVmZXJlbmNlcy4KKyAgICAg
ICAgKiBzdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1RyYW5zZm9ybVZhbHVlPjo6aW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybVZhbHVlPjo6dG9TdHJpbmcpOgor
ICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcv
U1ZHVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVmFsdWU6OmlzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zh
bHVlOjphcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZTo6YXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVmFsdWU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ZhbHVlOjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZTo6U1ZHVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBzdmcv
U1ZHVmFsdWVMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpT
VkdWYWx1ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpvcGVyYXRvciBWZWN0b3I8UHJvcGVy
dHlUeXBlPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZUxpc3Q6OnJlc2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZUxpc3Q6OmF0UmVmZXJlbmNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6YXRSZWZlcmVuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVmFsdWVMaXN0OjpmaXJzdFJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdWYWx1ZUxpc3Q6OmZpcnN0UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1ZhbHVlTGlzdDo6bGFzdFJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdW
YWx1ZUxpc3Q6Omxhc3RSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0
OjpkZWFmdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0Ojpjb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6ZGVlcENvcHkgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaDogV2UgbmVlZCB0
byBpbmNsdWRlIFNWR1ZhbHVlLmgKKyAgICAgICAgZnJvbSBhIFdlYkNvcmUgcHJpdmF0ZSBoZWFk
ZXIgZmlsZSBzbyBXZWJLaXQgYW5kIFdlYktpdExlZ2FjeSBjYW4gaW5zdGFudGlhdGUKKyAgICAg
ICAgdGhlIGxpc3QgcHJvcGVydGllcyBjbGFzc2VzIGtub3dpbmcgdGhlIHNpemUgb2YgdGhlIFNW
R1ZhbHVlLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5Ojppbml0aWFsaXplVmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6aW5pdGlhbGl6ZVZhbHVlc0FuZFdyYXBwZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6Z2V0SXRlbVZhbHVlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OmdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6Omluc2VydEl0ZW1CZWZvcmVW
YWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjppbnNlcnRJdGVtQmVm
b3JlVmFsdWVzQW5kV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5
OjpyZXBsYWNlSXRlbVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6
OnJlcGxhY2VJdGVtVmFsdWVzQW5kV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlz
dFByb3BlcnR5OjpyZW1vdmVJdGVtVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQ
cm9wZXJ0eTo6cmVtb3ZlSXRlbVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xpc3RQcm9wZXJ0eTo6YXBwZW5kSXRlbVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaXN0UHJvcGVydHk6OmFwcGVuZEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VGVhck9mZjo6dmFsdWUgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmg6IFJlbW92ZSBjeWNsaWMgcmVm
ZXJlbmNlcy4KKyAgICAgICAgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaCBuZWVkcyB0byBpbmNsdWRl
IFNWR0xpc3RQcm9wZXJ0eS5oIG9ubHkgZm9yIHRoZQorICAgICAgICBkZWZpbml0aW9uIG9mIExp
c3RNb2RpZmljYXRpb24uCisKIDIwMTgtMDQtMTYgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5y
ZWlkQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gTWVkaWEgZWxlbWVudHMgc2hvdWxk
IGJlIGVuYWJsZWQgYnkgZGVmYXVsdApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjkxLDYgKzE2OTEsMTUgQEAKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8qIElt
YWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBMzM2RjcxRDgyMDlGNDAwMjJD
NEM3IC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLzsg
fTsKIAkJNTVBMzM2RjkxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0b3JlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGODFEODIx
RTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0NTA0RTIwODUyM0E4MDAzQ0QwRDAgLyog
U1ZHVmFsdWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NUE0NTA0QTIwODUwMjg5MDAzQ0QwRDAgLyogU1ZHVmFsdWVMaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVBNDUwNEYyMDg1MkI4
QjAwM0NEMEQwIC8qIFNWR1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTEzN0IzNDIwM0NFQjcxMDAwMTAwNEIgLyogU1ZHVmFsdWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0NTA1MDIw
ODUyQkFCMDAzQ0QwRDAgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNkQxRERCOEJCMDAwRkVGQjI5
IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0NTA1MTIwODUyQkMwMDAzQ0QwRDAgLyogU1ZHUGF0
aFNlZ0xpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMzlDMzZGMUREQkEzRTAwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdFZhbHVlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1QTQ1
MDUyMjA4NTJCQ0YwMDNDRDBEMCAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5QzM2OTFEREI4NkQzMDBGRUZC
MjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTU1QTQ1MDUzMjA4NTJDMTgwMDNDRDBEMCAvKiBTVkdBbmds
ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzhGMjI0MzFERDNCM0I5MDBFOTJEQTMgLyogU1ZHQW5nbGVWYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1QTQ1MDU0MjA4NTJDNDYwMDND
RDBEMCAvKiBTVkdNYXJrZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTUxMzdCMkMyMDM3OUU1NTAwMDEwMDRCIC8qIFNWR01hcmtlclR5cGVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVB
NDUwNTUyMDg1MkQ0NzAwM0NEMEQwIC8qIFNWR1BvaW50TGlzdFZhbHVlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNkIxRERCODcxQzAwRkVG
QjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTU1QTQ1MDU2MjA4NTJEN0QwMDNDRDBEMCAvKiBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDOEYyMjQ2MUREM0QxQzUwMEU5MkRBMyAvKiBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NUFGMTRFNjFFQUFDNTlCMDAyNkVFQUEgLyogVVRJUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QUYxNEU0MUVBQUM1OUIw
MDI2RUVBQSAvKiBVVElSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTU1RUM5NTk5MjA2QUE3QTAwMDdERDBBOSAvKiBQYWludEZyZXF1
ZW5jeVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1RUM5NTk3MjA2OUM5MkQwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNrZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzA0NDA1
QTFFNTM5MzYyMDAzNTY2MDEgLyogSlNBZXNDYmNDZmJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MDQ0MDU5MUU1MzkzNjIwMDM1NjYwMSAv
KiBKU0Flc0NiY0NmYlBhcmFtcy5oICovOyB9OwpAQCAtMTk5Nyw3ICsyMDA2LDcgQEAKIAkJNzE1
QUQ3MjAyMDUwNTEzMjAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTVBRDcxRDIwNTA1MTI0MDBE
NTkyREMgLyogRGVjbGFyYXRpdmVBbmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTVBRDcyMTIwNTA1MTNGMDBENTkyREMgLyogQ1NT
VHJhbnNpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzEyM0MxODYyMDQ3MzlCQTAwNzg5MzkyIC8qIENTU1RyYW5zaXRpb24uaCAqLzsgfTsKIAkJ
NzFBMUI2MDgxREVFNUFENzAwNzNCQ0ZCIC8qIG1vZGVybi1tZWRpYS1jb250cm9scy1sb2NhbGl6
ZWQtc3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzFBMUI2MDYxREVFNUE4MjAwNzNCQ0ZCIC8qIG1vZGVybi1tZWRpYS1jb250cm9scy1s
b2NhbGl6ZWQtc3RyaW5ncy5qcyAqLzsgfTsKLQkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8q
IFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxQTU3REYwMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmgg
Ki87IH07CisJCTcxQTU3REYyMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUE1N0RGMDE1
NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxQjI4NDI3MjAzQ0VDNEMwMDM2QUE1RCAv
KiBKU0NTU0FuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzFCMjg0MjYyMDNDRUMwRDAwMzZBQTVEIC8qIEpTQ1NTQW5pbWF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzFDMjlFMzIy
MDNDRTc4MTAwOEYzNkQyIC8qIENTU0FuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFDMjlFMzAyMDNDRTc2QjAwOEYzNkQyIC8qIENTU0Fu
aW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcxQzkxNjA4MUQxNDgzQTMwMEFDQTQ3RCAvKiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUM5
MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTAxLDcg
KzIxMTAsNyBAQAogCQk3QzMwRDk4NjFGODE1QUVDMDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMEQ5ODEx
RjgxNUFDMTAwMjY4MzU2IC8qIEpTQWJvcnRTaWduYWwuaCAqLzsgfTsKIAkJN0MzMzBBMDIxREY4
RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDExREY4RkFDNjAwRDMz
OTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTA4MURGOUY5NTEwMEQzMzk1QyAv
KiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MzMzBBMDYxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25z
LmggKi87IH07Ci0JCTdDMzlDMzY1MUREQTg2NTIwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFs
dWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5
QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oICovOyB9OworCQk3
QzM5QzM2NTFEREE4NjUyMDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjMxRERBODY0OTAw
RkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzM5QzM3NzFEREJFMTcwMDBGRUZCMjkgLyogU1ZH
U3RyaW5nTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MzOUMzNjcxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNB
OTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBE
MUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVz
ZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVy
LmNwcCAqLzsgfTsKQEAgLTIyMzQsOCArMjI0Myw4IEBACiAJCTdDRTE5MTdCMUYyQUJFNzEwMDI3
MkY3OCAvKiBKU0ZldGNoUmVxdWVzdFJlZGlyZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UxOTE2QTFGMkFCNzA2MDAyNzJGNzggLyogSlNGZXRj
aFJlcXVlc3RSZWRpcmVjdC5oICovOyB9OwogCQk3Q0U1OEQ0QTFERDY0QTVCMDAxMjg1NTIgLyog
U1ZHUG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDRTU4RDQ5MURENjRBNUIwMDEyODU1MiAvKiBTVkdQb2ludC5oICovOyB9OwogCQk3Q0U1OEQ1
MDFERDY5QTFFMDAxMjg1NTIgLyogU1ZHTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U1OEQ0RjFERDY5QTFFMDAxMjg1NTIgLyogU1ZHTnVt
YmVyLmggKi87IH07Ci0JCTdDRTU4RDU4MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdUcmFuc2Zvcm1W
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NF
NThENTYxREQ3RDk2RDAwMTI4NTUyIC8qIFNWR1RyYW5zZm9ybVZhbHVlLmggKi87IH07Ci0JCTdD
RTU4RDVDMUREN0VDOUMwMDEyODU1MiAvKiBTVkdNYXRyaXhWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNThENUIxREQ3RUM5QzAwMTI4NTUy
IC8qIFNWR01hdHJpeFZhbHVlLmggKi87IH07CisJCTdDRTU4RDU4MUREN0Q5NkQwMDEyODU1MiAv
KiBTVkdUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NFNThENTYxREQ3RDk2RDAwMTI4NTUyIC8qIFNWR1RyYW5zZm9ybVZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0NF
NThENUMxREQ3RUM5QzAwMTI4NTUyIC8qIFNWR01hdHJpeFZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U1OEQ1QjFERDdFQzlDMDAxMjg1NTIg
LyogU1ZHTWF0cml4VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3Q0U2ODM0NDE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0U2ODM0MjE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvci5jcHAgKi87IH07CiAJCTdDRTY4MzQ1MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVz
c2FnZUhhbmRsZXJEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0U2ODM0MzE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdDRTY4MzQ3MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDRTY4MzQ2MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMjM3OCw3ICsyMzg3LDcgQEAKIAkJODNGRTdDQTcxREE5RjFBNzAwMzcyMzdDIC8q
IFVJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0ZFN0NBNDFEQTlGMTY2MDAzNzIzN0MgLyogVUlFdmVudEluaXQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0ZFN0NBODFEQTlGMUI2
MDAzNzIzN0MgLyogRXZlbnRNb2RpZmllckluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkU3Q0EzMURBOUYxNjUwMDM3MjM3QyAvKiBFdmVudE1v
ZGlmaWVySW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTgzRkU5MDI3MUUzMDdDMzAwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkU5MDI2MUUz
MDdDMUMwMDNFOTE5OSAvKiBQZXJmb3JtYW5jZU1vbml0b3IuaCAqLzsgfTsKLQkJODQxOUQyQTcx
MjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDE5RDJBNDEyMEQ5MkQwMDAxNDFGOEYgLyog
U1ZHUGF0aEJ5dGVTdHJlYW0uaCAqLzsgfTsKKwkJODQxOUQyQTcxMjBEOTJEMDAwMTQxRjhGIC8q
IFNWR1BhdGhCeXRlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDE5RDJBNDEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW0u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NDE5
RDJBOTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDE5RDJBNjEyMEQ5MkQw
MDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmggKi87IH07CiAJCTg0MTlEMkFE
MTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQUIxMjBEOTJGQzAwMTQx
RjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtU291cmNlLmggKi87IH07CiAJCTg0MTlEMkJBMTIwRTBD
NzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQjgxMjBFMEM3NjAwMTQxRjhGIC8qIFNW
R1BhdGhTdHJpbmdCdWlsZGVyLmggKi87IH07CkBAIC0yNDA1LDcgKzI0MTQsNyBAQAogCQk4NDcz
MEQ5MzEyNDhGMEIzMDBEM0E5QzkgLyogU3BvdExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDczMEQ3NjEyNDhGMEIzMDBEM0E5Qzkg
LyogU3BvdExpZ2h0U291cmNlLmggKi87IH07CiAJCTg0NzZDOUU2MTFERjZBMEIwMDU1NUIwMiAv
KiBTVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg0NzZDOUU0MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlz
dEJ1aWxkZXIuaCAqLzsgfTsKIAkJODQ3NkM5RUIxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhC
dWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NDc2QzlFODExREY2QTI5MDA1NTVCMDIgLyogU1ZHUGF0aEJ1aWxkZXIuaCAqLzsgfTsKLQkJODQ3
NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ3NkM5RTkxMURGNkEyOTAwNTU1QjAy
IC8qIFNWR1BhdGhDb25zdW1lci5oICovOyB9OworCQk4NDc2QzlFQzExREY2QTI5MDA1NTVCMDIg
LyogU1ZHUGF0aENvbnN1bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDc2QzlFOTExREY2QTI5MDA1NTVCMDIgLyogU1ZHUGF0aENvbnN1bWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQ3NkM5
RjAxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NzZDOUVFMTFERjZBNTgwMDU1NUIwMiAvKiBT
VkdQYXRoUGFyc2VyLmggKi87IH07CiAJCTg0ODAxOTU1MTA4QkFGQjMwMENCMkIxRiAvKiBGRUdh
dXNzaWFuQmx1ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQ4MDE5NTMxMDhCQUZCMzAwQ0IyQjFGIC8qIEZFR2F1c3NpYW5CbHVyLmggKi87IH07CiAJ
CTg0ODJCNzQ2MTE5OEMzNTQwMEJGQjAwNSAvKiBIYXNoQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0NDJCQkY4MTE5NEM5RDMwMEQ0
OTQ2OSAvKiBIYXNoQ2hhbmdlRXZlbnQuaCAqLzsgfTsKQEAgLTMzNTcsNyArMzM2Niw3IEBACiAJ
CUIyMjI3QTUxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhCQjBEMDBCRjIwMDA3MUI3
ODIgLyogU1ZHTnVtYmVyTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUIyMjI3QTU3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXJzZXJVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OEMxMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXJzZXJVdGlsaXRpZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyN0E1OTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEMzMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoRWxl
bWVudC5oICovOyB9OwotCQlCMjIyN0E1QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4QzUw
RDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWcuaCAqLzsgfTsKKwkJQjIyMjdBNUIwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BhdGhTZWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3OEM1MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjIyMjdB
NUUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdBcmMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEM4MEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdQYXRoU2VnQXJjLmggKi87IH07CiAJCUIyMjI3QTYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQ
YXRoU2VnQ2xvc2VQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzhDQzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5o
ICovOyB9OwogCQlCMjIyN0E2NTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc4Q0YwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaCAqLzsgfTsK
QEAgLTgyNzcsNiArODI4Niw3IEBACiAJCTU1OTdGQ0NCMjA3NkMwNjgwMEQzNUJCMCAvKiBHbHlw
aERpc3BsYXlMaXN0Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2x5
cGhEaXNwbGF5TGlzdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QTMz
NkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NUEzMzZGODFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCYWNraW5nU3RvcmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVBNDUwNEEyMDg1MDI4OTAwM0NEMEQwIC8qIFNWR1ZhbHVl
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZUxpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRjE0RTMxRUFBQzU5QjAwMjZFRUFBIC8q
IFVUSVJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUSVJlZ2lzdHJ5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRjE0RTQxRUFBQzU5QjAwMjZFRUFBIC8qIFVU
SVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUSVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVu
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzExNCw2ICsyMzEyNCw3IEBACiAJCQkJ
QjIyMjc5NTcwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1VzZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIy
Nzk1ODBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVXNlRWxlbWVudC5pZGwgKi8sCiAJCQkJNTUxMzdC
MzQyMDNDRUI3MTAwMDEwMDRCIC8qIFNWR1ZhbHVlLmggKi8sCisJCQkJNTVBNDUwNEEyMDg1MDI4
OTAwM0NEMEQwIC8qIFNWR1ZhbHVlTGlzdC5oICovLAogCQkJCUIyMjI3OTU5MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdWaWV3RWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc5NUEwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1ZpZXdFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5NUIwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1ZpZXdFbGVtZW50LmlkbCAqLywKQEAgLTMwMDIzLDYgKzMwMDM0LDcgQEAKIAkJCQk2
NTY1M0YyRTBEOTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0R2x5cGhFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyNEQ5MTJCODEzQ0E5QTY5MDBEMjE5MTUgLyogU1ZHQWx0R2x5cGhJdGVtRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0FuZ2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUE0NTA1MzIwODUyQzE4MDAzQ0QwRDAgLyog
U1ZHQW5nbGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4N0I4
NDk2MTI3MkNFQzgwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODU3OTcwOTEyNzgzOTRDMDBBOEVDNUYgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmggaW4g
SGVhZGVycyAqLywKQEAgLTMwMTM3LDYgKzMwMTQ5LDcgQEAKIAkJCQlCMjIyN0E0MTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHTG9jYXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhFRTEy
RDlDQTRCMDAwNDQyMzQgLyogU1ZHTWFya2VyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBNDQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTU1QTQ1MDU0MjA4NTJDNDYwMDNDRDBEMCAvKiBTVkdNYXJrZXJUeXBlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBNDcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01hc2tFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODA2RTU3QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0
cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkwOENBM0Q0NDEyODk0QTM4MDBGRkYyNjAgLyogU1ZH
TWF0cml4VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDE0Niw2ICszMDE1OSw3IEBACiAJ
CQkJQjIyMjdBNEUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NFNThENTAxREQ2OUExRTAwMTI4NTUyIC8qIFNWR051bWJlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBNTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCTU1QTQ1MDUyMjA4NTJCQ0YwMDNDRDBEMCAvKiBTVkdOdW1i
ZXJMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNBMEUzNjEz
QTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NEM2Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMzAxODQsNiArMzAxOTgsNyBAQAogCQkJCUIyMjI3QTgxMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RTYxMURGNkEwQjAw
NTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRC
NkI5NzgxMjBGMTNFNTAwQjhFRkFGIC8qIFNWR1BhdGhTZWdMaXN0U291cmNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1NUE0NTA1MTIwODUyQkMwMDAzQ0QwRDAgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDM1MTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQ
YXRoU2VnTW92ZXRvQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzNjE3OEQ1QUI1MDAx
NDFFNjggLyogU1ZHUGF0aFNlZ01vdmV0b1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgyREU0
MkQxMjkyNjIxNjAwRDkyM0RGIC8qIFNWR1BhdGhTZWdXaXRoQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMDE5NSwxMCArMzAyMTAsMTIgQEAKIAkJCQlCMjIyN0E4ODBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDRBMURE
NjRBNUIwMDEyODU1MiAvKiBTVkdQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOEMw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTVB
NDUwNTUyMDg1MkQ0NzAwM0NEMEQwIC8qIFNWR1BvaW50TGlzdFZhbHVlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBOEYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0E5MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWdvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTk0MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQb2x5bGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTk3MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
NUE0NTA1NjIwODUyRDdEMDAzQ0QwRDAgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwQTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVy
dHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MURENDlDMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQ
cm9wZXJ0eUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBCMTI2RUYxREIwMDk3OEY3
QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLApAQCAtMzAyNTAsNiArMzAy
NjcsNyBAQAogCQkJCUIyMjI3QURBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FERDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJh
bnNmb3JtRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QURGMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUE0NTA1MDIw
ODUyQkFCMDAzQ0QwRDAgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0NFNThENTgxREQ3RDk2RDAwMTI4NTUyIC8qIFNWR1RyYW5zZm9ybVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0FFMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFJlZkVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUU1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdU
U3BhbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzAyNTcsNiArMzAyNzUsOCBAQAogCQkJ
CTM3QzczOEVEMUVEQkQ1QkMwMDNGMkIwQiAvKiBTVkdVbmtub3duRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBRUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VSSVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VzZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1QTQ1MDRGMjA4NTJCOEIwMDNDRDBEMCAvKiBT
VkdWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTVBNDUwNEUyMDg1MjNBODAwM0NEMEQwIC8q
IFNWR1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRjAwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1ZpZXdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FGMzBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVmlld1NwZWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODUyMjhC
MTE5MDE3M0MwMDZFREM3RiAvKiBTVkdWS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAJKHJldmlz
aW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0xMDUsMTEgKzEwNiwxMSBAQCBzdGF0aWMgUGF0aCBwYXRoRnJv
bVBvbHlnb25FbGVtZW50KFNWR0VsCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBQYXRoIHBh
dGg7Ci0gICAgcGF0aC5tb3ZlVG8ocG9pbnRzLmZpcnN0KCkpOworICAgIHBhdGgubW92ZVRvKHBv
aW50cy5maXJzdFJlZmVyZW5jZSgpKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBwb2ludHMuc2l6
ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHBh
dGguYWRkTGluZVRvKHBvaW50cy5hdChpKSk7CisgICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50
cy5hdFJlZmVyZW5jZShpKSk7CiAKICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwogICAgIHJldHVy
biBwYXRoOwpAQCAtMTIyLDExICsxMjMsMTEgQEAgc3RhdGljIFBhdGggcGF0aEZyb21Qb2x5bGlu
ZUVsZW1lbnQoU1ZHRQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgUGF0aCBwYXRoOwotICAg
IHBhdGgubW92ZVRvKHBvaW50cy5maXJzdCgpKTsKKyAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmly
c3RSZWZlcmVuY2UoKSk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gcG9pbnRzLnNpemUoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBwYXRoLmFkZExp
bmVUbyhwb2ludHMuYXQoaSkpOworICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXRSZWZl
cmVuY2UoaSkpOwogICAgIHJldHVybiBwYXRoOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXIuY3BwCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDEwLTIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMTYzLDE1ICsxNjQsMTUgQEAgdm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxk
ZXI6OmJ1aQogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUNoYXJhY3RlckRhdGEodW5zaWduZWQg
aSwgZmxvYXQmIGxhc3RSb3RhdGlvbiwgU1ZHQ2hhcmFjdGVyRGF0YSYgZGF0YSwgY29uc3QgU1ZH
TGVuZ3RoQ29udGV4dCYgbGVuZ3RoQ29udGV4dCwgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyog
eExpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHlMaXN0LCBjb25zdCBTVkdMZW5ndGhM
aXN0VmFsdWVzKiBkeExpc3QsIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIGR5TGlzdCwgY29u
c3QgU1ZHTnVtYmVyTGlzdFZhbHVlcyogcm90YXRlTGlzdCkKIHsKICAgICBpZiAoeExpc3QpCi0g
ICAgICAgIGRhdGEueCA9IHhMaXN0LT5hdChpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICAg
ICAgZGF0YS54ID0geExpc3QtPmF0UmVmZXJlbmNlKGkpLnZhbHVlKGxlbmd0aENvbnRleHQpOwog
ICAgIGlmICh5TGlzdCkKLSAgICAgICAgZGF0YS55ID0geUxpc3QtPmF0KGkpLnZhbHVlKGxlbmd0
aENvbnRleHQpOworICAgICAgICBkYXRhLnkgPSB5TGlzdC0+YXRSZWZlcmVuY2UoaSkudmFsdWUo
bGVuZ3RoQ29udGV4dCk7CiAgICAgaWYgKGR4TGlzdCkKLSAgICAgICAgZGF0YS5keCA9IGR4TGlz
dC0+YXQoaSkudmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAgICAgIGRhdGEuZHggPSBkeExpc3Qt
PmF0UmVmZXJlbmNlKGkpLnZhbHVlKGxlbmd0aENvbnRleHQpOwogICAgIGlmIChkeUxpc3QpCi0g
ICAgICAgIGRhdGEuZHkgPSBkeUxpc3QtPmF0KGkpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAg
ICAgICBkYXRhLmR5ID0gZHlMaXN0LT5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250ZXh0
KTsKICAgICBpZiAocm90YXRlTGlzdCkgewotICAgICAgICBkYXRhLnJvdGF0ZSA9IHJvdGF0ZUxp
c3QtPmF0KGkpOworICAgICAgICBkYXRhLnJvdGF0ZSA9IHJvdGF0ZUxpc3QtPmF0UmVmZXJlbmNl
KGkpOwogICAgICAgICBsYXN0Um90YXRpb24gPSBkYXRhLnJvdGF0ZTsKICAgICB9CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAkocmV2aXNp
b24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTc1LDcgKzc2LDcgQEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aExp
c3RBbmltYXRvcjo6YWRkQQogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1f
Y29udGV4dEVsZW1lbnQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tTGVuZ3Ro
TGlzdFNpemU7ICsraSkKLSAgICAgICAgdG9MZW5ndGhMaXN0W2ldLnNldFZhbHVlKHRvTGVuZ3Ro
TGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21MZW5ndGhMaXN0W2ldLnZhbHVlKGxl
bmd0aENvbnRleHQpLCBsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgdG9MZW5ndGhMaXN0LmF0UmVm
ZXJlbmNlKGkpLnNldFZhbHVlKHRvTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5n
dGhDb250ZXh0KSArIGZyb21MZW5ndGhMaXN0LmF0UmVmZXJlbmNlKGkpLnZhbHVlKGxlbmd0aENv
bnRleHQpLCBsZW5ndGhDb250ZXh0KTsKIH0KIAogc3RhdGljIFNWR0xlbmd0aExpc3RWYWx1ZXMg
cGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25F
bGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTEwOCwxOCArMTA5LDE4IEBAIHZvaWQg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNhbGMKIAogICAgIFNWR0xlbmd0aENvbnRl
eHQgbGVuZ3RoQ29udGV4dChtX2NvbnRleHRFbGVtZW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdG9MZW5ndGhMaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgIGZsb2F0IGFuaW1hdGVk
TnVtYmVyID0gYW5pbWF0ZWRMZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpOwotICAg
ICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0gdG9MZW5ndGhMaXN0W2ldLnVuaXRUeXBlKCk7
CisgICAgICAgIGZsb2F0IGFuaW1hdGVkTnVtYmVyID0gYW5pbWF0ZWRMZW5ndGhMaXN0LmF0UmVm
ZXJlbmNlKGkpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgICAgICBTVkdMZW5ndGhUeXBlIHVu
aXRUeXBlID0gdG9MZW5ndGhMaXN0LmF0UmVmZXJlbmNlKGkpLnVuaXRUeXBlKCk7CiAgICAgICAg
IGZsb2F0IGVmZmVjdGl2ZUZyb20gPSAwOwogICAgICAgICBpZiAoZnJvbUxlbmd0aExpc3RTaXpl
KSB7CiAgICAgICAgICAgICBpZiAocGVyY2VudGFnZSA8IDAuNSkKLSAgICAgICAgICAgICAgICB1
bml0VHlwZSA9IGZyb21MZW5ndGhMaXN0W2ldLnVuaXRUeXBlKCk7Ci0gICAgICAgICAgICBlZmZl
Y3RpdmVGcm9tID0gZnJvbUxlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAg
ICAgICAgICAgICAgdW5pdFR5cGUgPSBmcm9tTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS51bml0
VHlwZSgpOworICAgICAgICAgICAgZWZmZWN0aXZlRnJvbSA9IGZyb21MZW5ndGhMaXN0LmF0UmVm
ZXJlbmNlKGkpLnZhbHVlKGxlbmd0aENvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAgIGZsb2F0
IGVmZmVjdGl2ZVRvQXRFbmQgPSBpIDwgdG9BdEVuZE9mRHVyYXRpb25MaXN0U2l6ZSA/IHRvQXRF
bmRPZkR1cmF0aW9uTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KSA6IDA7CisgICAg
ICAgIGZsb2F0IGVmZmVjdGl2ZVRvQXRFbmQgPSBpIDwgdG9BdEVuZE9mRHVyYXRpb25MaXN0U2l6
ZSA/IHRvQXRFbmRPZkR1cmF0aW9uTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5n
dGhDb250ZXh0KSA6IDA7CiAKLSAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRk
aXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20sIHRvTGVu
Z3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KSwgZWZmZWN0aXZlVG9BdEVuZCwgYW5pbWF0
ZWROdW1iZXIpOwotICAgICAgICBhbmltYXRlZExlbmd0aExpc3RbaV0uc2V0VmFsdWUobGVuZ3Ro
Q29udGV4dCwgYW5pbWF0ZWROdW1iZXIsIG1fbGVuZ3RoTW9kZSwgdW5pdFR5cGUpOworICAgICAg
ICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCBy
ZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbSwgdG9MZW5ndGhMaXN0LmF0UmVmZXJlbmNlKGkpLnZh
bHVlKGxlbmd0aENvbnRleHQpLCBlZmZlY3RpdmVUb0F0RW5kLCBhbmltYXRlZE51bWJlcik7Cisg
ICAgICAgIGFuaW1hdGVkTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS5zZXRWYWx1ZShsZW5ndGhD
b250ZXh0LCBhbmltYXRlZE51bWJlciwgbV9sZW5ndGhNb2RlLCB1bml0VHlwZSk7CiAgICAgfQog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNw
cAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBTVkdBbmlt
YXRlZE51bWJlckxpc3RBbmltYXRvcjo6YWRkQQogICAgICAgICByZXR1cm47CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJvbU51bWJlckxpc3RTaXplOyArK2kpCi0gICAgICAgIHRv
TnVtYmVyTGlzdFtpXSArPSBmcm9tTnVtYmVyTGlzdFtpXTsKKyAgICAgICAgdG9OdW1iZXJMaXN0
LmF0UmVmZXJlbmNlKGkpICs9IGZyb21OdW1iZXJMaXN0LmF0UmVmZXJlbmNlKGkpOwogfQogCiB2
b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUq
IGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9mRHVy
YXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCkBAIC05Myw5ICs5Myw5IEBAIHZvaWQg
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGMKICAgICB1bnNpZ25lZCB0b0F0RW5k
T2ZEdXJhdGlvblNpemUgPSB0b0F0RW5kT2ZEdXJhdGlvbk51bWJlckxpc3Quc2l6ZSgpOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvTnVtYmVyTGlzdFNpemU7ICsraSkgewotICAg
ICAgICBmbG9hdCBlZmZlY3RpdmVGcm9tID0gZnJvbU51bWJlckxpc3RTaXplID8gZnJvbU51bWJl
ckxpc3RbaV0gOiAwOwotICAgICAgICBmbG9hdCBlZmZlY3RpdmVUb0F0RW5kID0gaSA8IHRvQXRF
bmRPZkR1cmF0aW9uU2l6ZSA/IHRvQXRFbmRPZkR1cmF0aW9uTnVtYmVyTGlzdFtpXSA6IDA7Ci0g
ICAgICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRh
Z2UsIHJlcGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLCB0b051bWJlckxpc3RbaV0sIGVmZmVjdGl2
ZVRvQXRFbmQsIGFuaW1hdGVkTnVtYmVyTGlzdFtpXSk7CisgICAgICAgIGZsb2F0IGVmZmVjdGl2
ZUZyb20gPSBmcm9tTnVtYmVyTGlzdFNpemUgPyBmcm9tTnVtYmVyTGlzdC5hdFJlZmVyZW5jZShp
KSA6IDA7CisgICAgICAgIGZsb2F0IGVmZmVjdGl2ZVRvQXRFbmQgPSBpIDwgdG9BdEVuZE9mRHVy
YXRpb25TaXplID8gdG9BdEVuZE9mRHVyYXRpb25OdW1iZXJMaXN0LmF0UmVmZXJlbmNlKGkpIDog
MDsKKyAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVy
Y2VudGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20sIHRvTnVtYmVyTGlzdC5hdFJlZmVy
ZW5jZShpKSwgZWZmZWN0aXZlVG9BdEVuZCwgYW5pbWF0ZWROdW1iZXJMaXN0LmF0UmVmZXJlbmNl
KGkpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UG9pbnRMaXN0LmNwcAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkUG9pbnRMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEsIDIwMTIu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NSw3ICs3Niw3IEBA
IHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6YWRkQW4KICAgICAgICAgcmV0dXJu
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyb21Qb2ludExpc3RTaXplOyArK2kp
Ci0gICAgICAgIHRvUG9pbnRMaXN0W2ldICs9IGZyb21Qb2ludExpc3RbaV07CisgICAgICAgIHRv
UG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkpICs9IGZyb21Qb2ludExpc3QuYXRSZWZlcmVuY2UoaSk7
CiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0
ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRF
bmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQpAQCAtOTYsMTQgKzk3LDE0
IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y2FsY3UKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdG9Qb2ludExpc3RTaXplOyArK2kpIHsKICAgICAgICAgRmxvYXRQ
b2ludCBlZmZlY3RpdmVGcm9tOwogICAgICAgICBpZiAoZnJvbVBvaW50TGlzdFNpemUpCi0gICAg
ICAgICAgICBlZmZlY3RpdmVGcm9tID0gZnJvbVBvaW50TGlzdFtpXTsKLSAgICAgICAgRmxvYXRQ
b2ludCBlZmZlY3RpdmVUb0F0RW5kID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uU2l6ZSA/IHRvQXRF
bmRPZkR1cmF0aW9uUG9pbnRMaXN0W2ldIDogRmxvYXRQb2ludCgpOworICAgICAgICAgICAgZWZm
ZWN0aXZlRnJvbSA9IGZyb21Qb2ludExpc3QuYXRSZWZlcmVuY2UoaSk7CisgICAgICAgIEZsb2F0
UG9pbnQgZWZmZWN0aXZlVG9BdEVuZCA9IGkgPCB0b0F0RW5kT2ZEdXJhdGlvblNpemUgPyB0b0F0
RW5kT2ZEdXJhdGlvblBvaW50TGlzdC5hdFJlZmVyZW5jZShpKSA6IEZsb2F0UG9pbnQoKTsKIAot
ICAgICAgICBmbG9hdCBhbmltYXRlZFggPSBhbmltYXRlZFBvaW50TGlzdFtpXS54KCk7Ci0gICAg
ICAgIGZsb2F0IGFuaW1hdGVkWSA9IGFuaW1hdGVkUG9pbnRMaXN0W2ldLnkoKTsKLSAgICAgICAg
bV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20ueCgpLCB0b1BvaW50TGlzdFtpXS54KCksIGVmZmVjdGl2
ZVRvQXRFbmQueCgpLCBhbmltYXRlZFgpOwotICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFu
aW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJv
bS55KCksIHRvUG9pbnRMaXN0W2ldLnkoKSwgZWZmZWN0aXZlVG9BdEVuZC55KCksIGFuaW1hdGVk
WSk7Ci0gICAgICAgIGFuaW1hdGVkUG9pbnRMaXN0W2ldID0gRmxvYXRQb2ludChhbmltYXRlZFgs
IGFuaW1hdGVkWSk7CisgICAgICAgIGZsb2F0IGFuaW1hdGVkWCA9IGFuaW1hdGVkUG9pbnRMaXN0
LmF0UmVmZXJlbmNlKGkpLngoKTsKKyAgICAgICAgZmxvYXQgYW5pbWF0ZWRZID0gYW5pbWF0ZWRQ
b2ludExpc3QuYXRSZWZlcmVuY2UoaSkueSgpOworICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQt
PmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZl
RnJvbS54KCksIHRvUG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkpLngoKSwgZWZmZWN0aXZlVG9BdEVu
ZC54KCksIGFuaW1hdGVkWCk7CisgICAgICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFk
ZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLnkoKSwg
dG9Qb2ludExpc3QuYXRSZWZlcmVuY2UoaSkueSgpLCBlZmZlY3RpdmVUb0F0RW5kLnkoKSwgYW5p
bWF0ZWRZKTsKKyAgICAgICAgYW5pbWF0ZWRQb2ludExpc3QuYXRSZWZlcmVuY2UoaSkgPSBGbG9h
dFBvaW50KGFuaW1hdGVkWCwgYW5pbWF0ZWRZKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCShyZXZpc2lvbiAy
MzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEyLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTgxLDggKzgxLDggQEAgdm9pZCBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvcjo6YQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoZnJv
bVRyYW5zZm9ybUxpc3RTaXplID09IDEpOwotICAgIGNvbnN0IGF1dG8mIGZyb21UcmFuc2Zvcm0g
PSBmcm9tVHJhbnNmb3JtTGlzdFswXTsKLSAgICBhdXRvJiB0b1RyYW5zZm9ybSA9IHRvVHJhbnNm
b3JtTGlzdFswXTsKKyAgICBjb25zdCBhdXRvJiBmcm9tVHJhbnNmb3JtID0gZnJvbVRyYW5zZm9y
bUxpc3QuZmlyc3RSZWZlcmVuY2UoKTsKKyAgICBhdXRvJiB0b1RyYW5zZm9ybSA9IHRvVHJhbnNm
b3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpOwogCiAgICAgQVNTRVJUKGZyb21UcmFuc2Zvcm0udHlw
ZSgpID09IHRvVHJhbnNmb3JtLnR5cGUoKSk7CiAgICAgdG9UcmFuc2Zvcm0gPSBTVkdUcmFuc2Zv
cm1EaXN0YW5jZTo6YWRkU1ZHVHJhbnNmb3Jtcyhmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybSk7
CkBAIC0xMDksMTQgKzEwOSwxNCBAQCB2b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1h
dG9yOjpjCiAgICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5jbGVhcigpOwogCiAgICAgYXV0
byBmcm9tVHJhbnNmb3JtTGlzdFNpemUgPSBmcm9tVHJhbnNmb3JtTGlzdC5zaXplKCk7Ci0gICAg
Y29uc3QgYXV0byYgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9ybUxpc3RbMF07Ci0gICAgY29uc3Qg
YXV0byBlZmZlY3RpdmVGcm9tID0gZnJvbVRyYW5zZm9ybUxpc3RTaXplID8gZnJvbVRyYW5zZm9y
bUxpc3RbMF0gOiBTVkdUcmFuc2Zvcm1WYWx1ZSh0b1RyYW5zZm9ybS50eXBlKCksIFNWR1RyYW5z
Zm9ybVZhbHVlOjpDb25zdHJ1Y3RaZXJvVHJhbnNmb3JtKTsKKyAgICBjb25zdCBhdXRvJiB0b1Ry
YW5zZm9ybSA9IHRvVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpOworICAgIGNvbnN0IGF1
dG8gZWZmZWN0aXZlRnJvbSA9IGZyb21UcmFuc2Zvcm1MaXN0U2l6ZSA/IGZyb21UcmFuc2Zvcm1M
aXN0LmZpcnN0UmVmZXJlbmNlKCkgOiBTVkdUcmFuc2Zvcm1WYWx1ZSh0b1RyYW5zZm9ybS50eXBl
KCksIFNWR1RyYW5zZm9ybVZhbHVlOjpDb25zdHJ1Y3RaZXJvVHJhbnNmb3JtKTsKICAgICBhdXRv
IGN1cnJlbnRUcmFuc2Zvcm0gPSBTVkdUcmFuc2Zvcm1EaXN0YW5jZShlZmZlY3RpdmVGcm9tLCB0
b1RyYW5zZm9ybSkuc2NhbGVkRGlzdGFuY2UocGVyY2VudGFnZSkuYWRkVG9TVkdUcmFuc2Zvcm0o
ZWZmZWN0aXZlRnJvbSk7CiAgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC0+aXNBY2N1bXVsYXRl
ZCgpICYmIHJlcGVhdENvdW50KSB7Ci0gICAgICAgIGNvbnN0IGF1dG8gZWZmZWN0aXZlVG9BdEVu
ZCA9IHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtTGlzdC5zaXplKCkgPyB0b0F0RW5kT2ZEdXJh
dGlvblRyYW5zZm9ybUxpc3RbMF0gOiBTVkdUcmFuc2Zvcm1WYWx1ZSh0b1RyYW5zZm9ybS50eXBl
KCksIFNWR1RyYW5zZm9ybVZhbHVlOjpDb25zdHJ1Y3RaZXJvVHJhbnNmb3JtKTsKLSAgICAgICAg
YW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkU1ZH
VHJhbnNmb3JtcyhjdXJyZW50VHJhbnNmb3JtLCBlZmZlY3RpdmVUb0F0RW5kLCByZXBlYXRDb3Vu
dCkpOworICAgICAgICBjb25zdCBhdXRvIGVmZmVjdGl2ZVRvQXRFbmQgPSB0b0F0RW5kT2ZEdXJh
dGlvblRyYW5zZm9ybUxpc3Quc2l6ZSgpID8gdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0
LmZpcnN0UmVmZXJlbmNlKCkgOiBTVkdUcmFuc2Zvcm1WYWx1ZSh0b1RyYW5zZm9ybS50eXBlKCks
IFNWR1RyYW5zZm9ybVZhbHVlOjpDb25zdHJ1Y3RaZXJvVHJhbnNmb3JtKTsKKyAgICAgICAgYW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFNWR1RyYW5zZm9ybVZh
bHVlPihTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkU1ZHVHJhbnNmb3JtcyhjdXJyZW50VHJhbnNm
b3JtLCBlZmZlY3RpdmVUb0F0RW5kLCByZXBlYXRDb3VudCkpKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChjdXJyZW50VHJhbnNmb3JtKTsKKyAgICAg
ICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFNWR1RyYW5z
Zm9ybVZhbHVlPihjdXJyZW50VHJhbnNmb3JtKSk7CiB9CiAKIGZsb2F0IFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21T
dHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCkBAIC0xMzUsMTMgKzEzNSwxMyBAQCBmbG9h
dCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6CiAgICAgICAgIHJldHVybiAtMTsK
IAogICAgIEFTU0VSVChpdGVtc0NvdW50ID09IDEpOwotICAgIGlmIChmcm9tVHJhbnNmb3JtTGlz
dFswXS50eXBlKCkgIT0gdG9UcmFuc2Zvcm1MaXN0WzBdLnR5cGUoKSkKKyAgICBpZiAoZnJvbVRy
YW5zZm9ybUxpc3QuZmlyc3RSZWZlcmVuY2UoKS50eXBlKCkgIT0gdG9UcmFuc2Zvcm1MaXN0LmZp
cnN0UmVmZXJlbmNlKCkudHlwZSgpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvLyBTcGVj
OiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYW5pbWF0ZS5odG1sI2NvbXBsZXhEaXN0YW5jZXMK
ICAgICAvLyBQYWNlZCBhbmltYXRpb25zIGFzc3VtZSBhIG5vdGlvbiBvZiBkaXN0YW5jZSBiZXR3
ZWVuIHRoZSB2YXJpb3VzIGFuaW1hdGlvbiB2YWx1ZXMgZGVmaW5lZCBieSB0aGUg4oCYdG/igJks
IOKAmGZyb23igJksIOKAmGJ54oCZIGFuZCDigJh2YWx1ZXPigJkgYXR0cmlidXRlcy4KICAgICAv
LyBEaXN0YW5jZSBpcyBkZWZpbmVkIG9ubHkgZm9yIHNjYWxhciB0eXBlcyAoc3VjaCBhcyA8bGVu
Z3RoPiksIGNvbG9ycyBhbmQgdGhlIHN1YnNldCBvZiB0cmFuc2Zvcm1hdGlvbiB0eXBlcyB0aGF0
IGFyZSBzdXBwb3J0ZWQgYnkg4oCYYW5pbWF0ZVRyYW5zZm9ybeKAmS4KLSAgICByZXR1cm4gU1ZH
VHJhbnNmb3JtRGlzdGFuY2UoZnJvbVRyYW5zZm9ybUxpc3RbMF0sIHRvVHJhbnNmb3JtTGlzdFsw
XSkuZGlzdGFuY2UoKTsKKyAgICByZXR1cm4gU1ZHVHJhbnNmb3JtRGlzdGFuY2UoZnJvbVRyYW5z
Zm9ybUxpc3QuZmlyc3RSZWZlcmVuY2UoKSwgdG9UcmFuc2Zvcm1MaXN0LmZpcnN0UmVmZXJlbmNl
KCkpLmRpc3RhbmNlKCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
eXBlLmgJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgU1ZHVmFsdWVWYXJpYW50IG1fdmFsdWU7CisgICAgU1ZHQW5pbWF0
ZWRUeXBlVmFsdWVWYXJpYW50IG1fdmFsdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjg0LDggKzI4NSw4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFQ29udm9sdmVNYXRyaXgKICAgICBpZiAoaGFzQXR0cmlidXRlKFNWR05hbWVzOjpkaXZp
c29yQXR0cikgJiYgIWRpdmlzb3JWYWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
aWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmRpdmlzb3JBdHRyKSkgewotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGtlcm5lbE1hdHJpeFNpemU7ICsraSkKLSAgICAgICAgICAgIGRpdmlz
b3JWYWx1ZSArPSBrZXJuZWxNYXRyaXguYXQoaSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
dmFsdWUgOiBrZXJuZWxNYXRyaXgpCisgICAgICAgICAgICBkaXZpc29yVmFsdWUgKz0gdmFsdWUt
PmFzPGZsb2F0PigpOwogICAgICAgICBpZiAoIWRpdmlzb3JWYWx1ZSkKICAgICAgICAgICAgIGRp
dmlzb3JWYWx1ZSA9IDE7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aExpc3RWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5n
dGhMaXN0VmFsdWVzLmNwcAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDYsNyArNDcsNyBA
QCB2b2lkIFNWR0xlbmd0aExpc3RWYWx1ZXM6OnBhcnNlKGNvbnN0IFN0CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGlmIChsZW5ndGguc2V0VmFsdWVBc1N0cmluZyh2YWx1ZVN0cmluZyku
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFwcGVuZChsZW5n
dGgpOworICAgICAgICBhcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxTVkdMZW5ndGhWYWx1ZT4obGVu
Z3RoKSk7CiAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0ciwgZW5k
KTsKICAgICB9CiB9CkBAIC02MCw3ICs2MSw3IEBAIFN0cmluZyBTVkdMZW5ndGhMaXN0VmFsdWVz
Ojp2YWx1ZUFzU3RyaW4KICAgICAgICAgaWYgKGkgPiAwKQogICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKIAotICAgICAgICBidWlsZGVyLmFwcGVuZChhdChpKS52YWx1ZUFzU3RyaW5n
KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChhdFJlZmVyZW5jZShpKS52YWx1ZUFzU3RyaW5n
KCkpOwogICAgIH0KIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmgJKHJldmlzaW9uIDIzMDY0NykKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yMSwxNCArMjIsMTQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU1ZH
TGVuZ3RoVmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiU1ZHVmFs
dWVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHTGVuZ3RoOwogY2xh
c3MgU1ZHTGVuZ3RoTGlzdDsKIAotY2xhc3MgU1ZHTGVuZ3RoTGlzdFZhbHVlcyBmaW5hbCA6IHB1
YmxpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHsKK2NsYXNzIFNWR0xlbmd0aExpc3RWYWx1ZXMg
ZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVMaXN0PFNWR0xlbmd0aFZhbHVlPiB7CiBwdWJsaWM6CiAg
ICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlLCBTVkdMZW5ndGhNb2RlKTsKICAgICBT
dHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R051bWJlckxpc3RWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdOdW1iZXJMaXN0VmFsdWVzLmNwcAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiAr
MjMsNyBAQAogI2luY2x1ZGUgIlNWR051bWJlckxpc3RWYWx1ZXMuaCIKIAogI2luY2x1ZGUgIlNW
R1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw3ICs0
MSw3IEBAIHZvaWQgU1ZHTnVtYmVyTGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3QKICAgICB3aGls
ZSAocHRyIDwgZW5kKSB7CiAgICAgICAgIGlmICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIG51bWJl
cikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFwcGVuZChudW1iZXIpOworICAgICAg
ICBhcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxmbG9hdD4obnVtYmVyKSk7CiAgICAgfQogfQogCkBA
IC01Miw3ICs1NCw3IEBAIFN0cmluZyBTVkdOdW1iZXJMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW4K
ICAgICAgICAgaWYgKGkgPiAwKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKIAot
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihhdChpKSk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKGF0UmVmZXJlbmNlKGkpKTsKICAgICB9CiAKICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5o
CShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZh
bHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTQgKzIyLDE0IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgIlNWR1ZhbHVlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNWR051bWJlcjsKIGNsYXNzIFNWR051bWJlckxpc3Q7CiAKLWNsYXNzIFNWR051bWJlckxp
c3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPGZsb2F0PiB7CitjbGFzcyBTVkdOdW1iZXJM
aXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlTGlzdDxmbG9hdD4gewogcHVibGljOgog
ICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmco
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4OSw3IEBAIGJvb2wgcG9pbnRzTGlz
dEZyb21TVkdEYXRhKFNWR1BvaW50TGlzdFYKICAgICAgICAgfQogICAgICAgICBza2lwT3B0aW9u
YWxTVkdTcGFjZXMoY3VyLCBlbmQpOwogCi0gICAgICAgIHBvaW50c0xpc3QuYXBwZW5kKEZsb2F0
UG9pbnQoeFBvcywgeVBvcykpOworICAgICAgICBwb2ludHNMaXN0LmFwcGVuZChTVkdWYWx1ZTo6
Y3JlYXRlPEZsb2F0UG9pbnQ+KEZsb2F0UG9pbnQoeFBvcywgeVBvcykpKTsKICAgICB9CiAgICAg
cmV0dXJuIGN1ciA9PSBlbmQgJiYgIWRlbGltUGFyc2VkOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNyArMzk3LDcg
QEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3RDaGFuZ2VkKAogICAgIGNhc2UgUGF0
aFNlZ1VuYWx0ZXJlZFJvbGU6CiAgICAgICAgIGlmIChsaXN0TW9kaWZpY2F0aW9uID09IExpc3RN
b2RpZmljYXRpb25BcHBlbmQpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9wYXRoU2VnTGlzdC52
YWx1ZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9t
U1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3QoKS5jb3B5UmVmKCksIG1fcGF0aEJ5
dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAgICAgICAgYXBwZW5kU1ZHUGF0aEJ5
dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3RSZWZlcmVuY2Uo
KS5jb3B5UmVmKCksIG1fcGF0aEJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNl
Z0xpc3RWYWx1ZXMobV9wYXRoU2VnTGlzdC52YWx1ZSwgbV9wYXRoQnl0ZVN0cmVhbSwgVW5hbHRl
cmVkUGFyc2luZyk7CiAgICAgICAgIG1fY2FjaGVkUGF0aCA9IHN0ZDo6bnVsbG9wdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG1fdmFsdWVzLT5zaXpl
KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoaXRlbSA9PSBtX3ZhbHVlcy0+YXQoaSkpCisgICAgICAgICAgICBpZiAoaXRlbSA9
PSBtX3ZhbHVlcy0+YXRSZWZlcmVuY2UoaSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAg
ICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0QnVp
bGRlci5jcHAJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDAyLCAyMDAzIFRoZSBLYXJib24gRGV2ZWxvcGVycwogICogQ29weXJpZ2h0
IChDKSAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTgsNzggKzU4LDc4IEBAIFNWR1BhdGhTZWdM
aXN0QnVpbGRlcjo6U1ZHUGF0aFNlZ0xpc3RCdWkKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
Ojptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29yZGlu
YXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0g
ICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNl
Z01vdmV0b0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9s
ZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0
cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzKHRh
cmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogICAgIGVs
c2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQ
YXRoU2VnTW92ZXRvUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhT
ZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8
UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9S
ZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUpKSk7CiB9
CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09
IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0
aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdl
dFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVu
ZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVh
dGVTVkdQYXRoU2VnTGluZXRvQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBt
X3BhdGhTZWdSb2xlKSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQo
bV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsKHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3Qu
YXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVtZW50
LmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9SZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55
KCksIG1fcGF0aFNlZ1JvbGUpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjps
aW5lVG9Ib3Jpem9udGFsKGZsb2F0IHgsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAg
IGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3Qu
YXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMo
eCwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1
ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRo
U2VnTGluZXRvSG9yaXpvbnRhbEFicyh4LCBtX3BhdGhTZWdSb2xlKSkpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2Vn
TGluZXRvSG9yaXpvbnRhbFJlbCh4LCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNl
Z0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhF
bGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKHgsIG1fcGF0aFNlZ1Jv
bGUpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbChm
bG9hdCB5LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNv
bHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVt
ZW50LmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyh5LCBtX3BhdGhTZWdSb2xlKSk7
CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNW
R1BhdGhTZWc+PihtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFi
cyh5LCBtX3BhdGhTZWdSb2xlKSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5h
cHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwoeSwg
bV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6
Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2Vn
TGluZXRvVmVydGljYWxSZWwoeSwgbV9wYXRoU2VnUm9sZSkpKTsKIH0KIAogdm9pZCBTVkdQYXRo
U2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBh
dGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRl
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRo
U2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRl
PFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0
b0N1YmljQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBw
b2ludDEueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogICAg
IGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVT
VkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgp
LCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhT
ZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8
UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBv
aW50MS55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUpKSk7CiB9CiAK
IHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3Jk
aW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykK
LSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgp
LCBwb2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0
aFNlZ0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3Bh
dGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnModGFyZ2V0UG9p
bnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNl
Z1JvbGUpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhF
bGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQu
eCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1Jv
bGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQ
dHI8U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1Ntb290aFJlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQyLngoKSwg
cG9pbnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKIH0KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1
aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBG
bG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAg
aWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5h
cHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficyh0
YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwg
bV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6
Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9p
bnQxLngoKSwgcG9pbnQxLnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54
KCksIHBvaW50MS55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5h
cHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1lbnQu
Y3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJn
ZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCksIG1fcGF0aFNlZ1JvbGUpKSk7CiB9
CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNv
bnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsK
ICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdM
aXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
U21vb3RoQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xl
KSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRy
PFNWR1BhdGhTZWc+PihtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljU21vb3RoQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdS
b2xlKSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxl
bWVudC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCh0YXJnZXRQb2lu
dC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhT
ZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRo
RWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCh0YXJnZXRQ
b2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKIH0KIAogdm9pZCBT
VkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmFyY1RvKGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5n
bGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29uc3QgRmxvYXRQb2ludCYg
dGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09
IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0
aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0FyY0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBv
aW50LnkoKSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIG1fcGF0aFNl
Z1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxS
ZWZQdHI8U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0FyY0Ficyh0
YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNG
bGFnLCBzd2VlcEZsYWcsIG1fcGF0aFNlZ1JvbGUpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3Bh
dGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdBcmNSZWwodGFy
Z2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxh
Zywgc3dlZXBGbGFnLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBw
ZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVtZW50LmNy
ZWF0ZVNWR1BhdGhTZWdBcmNSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHIx
LCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnLCBtX3BhdGhTZWdSb2xlKSkpOwog
fQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6Y2xvc2VQYXRoKCkKIHsKLSAgICBtX3Bh
dGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgo
bV9wYXRoU2VnUm9sZSkpOworICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVh
dGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDbG9z
ZVBhdGgobV9wYXRoU2VnUm9sZSkpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhTZWdMaXN0U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDcg
KzQ0LDcgQEAgYm9vbCBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6aGFzTW9yZURhdGEoKQogCiBib29s
IFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZVNWR1NlZ21lbnRUeXBlKFNWR1BhdGhTZWdUeXBl
JiBwYXRoU2VnVHlwZSkKIHsKLSAgICBtX3NlZ21lbnQgPSBtX3BhdGhTZWdMaXN0LmF0KG1faXRl
bUN1cnJlbnQpOworICAgIG1fc2VnbWVudCA9IG1fcGF0aFNlZ0xpc3QuYXRSZWZlcmVuY2UobV9p
dGVtQ3VycmVudCk7CiAgICAgcGF0aFNlZ1R5cGUgPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnVHlw
ZT4obV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpKTsKICAgICArK21faXRlbUN1cnJlbnQ7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC01MSw3ICs1Miw3IEBAIGJvb2wgU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6
OnBhcnNlU1ZHU2VnbWUKIAogU1ZHUGF0aFNlZ1R5cGUgU1ZHUGF0aFNlZ0xpc3RTb3VyY2U6Om5l
eHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlKQogewotICAgIG1fc2VnbWVudCA9IG1fcGF0aFNlZ0xp
c3QuYXQobV9pdGVtQ3VycmVudCk7CisgICAgbV9zZWdtZW50ID0gbV9wYXRoU2VnTGlzdC5hdFJl
ZmVyZW5jZShtX2l0ZW1DdXJyZW50KTsKICAgICBTVkdQYXRoU2VnVHlwZSBwYXRoU2VnVHlwZSA9
IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdUeXBlPihtX3NlZ21lbnQtPnBhdGhTZWdUeXBlKCkpOwog
ICAgICsrbV9pdGVtQ3VycmVudDsKICAgICByZXR1cm4gcGF0aFNlZ1R5cGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9uIDIzMDY0
NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBTVkdQYXRoU2VnTGlzdFZhbHVlczo6Y29t
bWl0Q2hhbmdlKAogCiB2b2lkIFNWR1BhdGhTZWdMaXN0VmFsdWVzOjpjbGVhckl0ZW1Db250ZXh0
QW5kUm9sZSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBhdXRvJiBpdGVtID0gYXQoaW5kZXgpOwor
ICAgIGF1dG8mIGl0ZW0gPSBhdFJlZmVyZW5jZShpbmRleCk7CiAgICAgc3RhdGljX2Nhc3Q8U1ZH
UGF0aFNlZ1dpdGhDb250ZXh0Jj4oKml0ZW0pLnNldENvbnRleHRBbmRSb2xlKG51bGxwdHIsIFBh
dGhTZWdVbmRlZmluZWRSb2xlKTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdFZhbHVlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTAgKzIw
LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHkuaCIKICNp
bmNsdWRlICJTVkdQYXRoU2VnLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiU1ZHVmFsdWVMaXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDkg
KzMzLDkgQEAgY2xhc3MgU1ZHUGF0aFNlZ0xpc3Q7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKIGNs
YXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKIAotY2xhc3MgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMgOiBw
dWJsaWMgVmVjdG9yPFJlZlB0cjxTVkdQYXRoU2VnPj4geworY2xhc3MgU1ZHUGF0aFNlZ0xpc3RW
YWx1ZXMgOiBwdWJsaWMgU1ZHVmFsdWVMaXN0PFJlZlB0cjxTVkdQYXRoU2VnPj4gewogcHVibGlj
OgotICAgIHVzaW5nIEJhc2UgPSBWZWN0b3I8UmVmUHRyPFNWR1BhdGhTZWc+PjsKKyAgICB1c2lu
ZyBCYXNlID0gU1ZHVmFsdWVMaXN0PFJlZlB0cjxTVkdQYXRoU2VnPj47CiAgICAgCiAgICAgZXhw
bGljaXQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMoU1ZHUGF0aFNlZ1JvbGUgcm9sZSkKICAgICAgICAg
OiBtX3JvbGUocm9sZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5j
cHAJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAsIDIwMTIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMjAsNyArMTIwLDcgQEAgYm9vbCBhcHBl
bmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoUwogICAgIEFTU0VSVChwYXJzaW5nTW9kZSA9
PSBVbmFsdGVyZWRQYXJzaW5nKTsKIAogICAgIFNWR1BhdGhTZWdMaXN0VmFsdWVzIGFwcGVuZGVk
SXRlbUxpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwotICAgIGFwcGVuZGVkSXRlbUxpc3QuYXBw
ZW5kKFdURk1vdmUocGF0aFNlZykpOworICAgIGFwcGVuZGVkSXRlbUxpc3QuYXBwZW5kKFNWR1Zh
bHVlOjpjcmVhdGUoV1RGTW92ZShwYXRoU2VnKSkpOwogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0g
YXBwZW5kZWRCeXRlU3RyZWFtOwogICAgIFNWR1BhdGhTZWdMaXN0U291cmNlIHNvdXJjZShhcHBl
bmRlZEl0ZW1MaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1
ZXMuY3BwCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM1LDcgKzM2LDcgQEAgU3RyaW5nIFNW
R1BvaW50TGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZwogICAgICAgICBpZiAoaSA+IDApCiAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOyAvLyBGSVhNRTogU2hvdWxkbid0IHdlIHVzZSBj
b21tYXMgdG8gc2VwZXJhdGU/CiAKLSAgICAgICAgY29uc3QgYXV0byYgcG9pbnQgPSBhdChpKTsK
KyAgICAgICAgY29uc3QgYXV0byYgcG9pbnQgPSBhdFJlZmVyZW5jZShpKTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIocG9pbnQueCgpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAn
KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocG9pbnQueSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmgJKHJldmlzaW9uIDIzMDY0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTIyLDE0ICsyMywxNCBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNW
R1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlNW
R1ZhbHVlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1BvaW50Owog
Y2xhc3MgU1ZHUG9pbnRMaXN0OwogCi1jbGFzcyBTVkdQb2ludExpc3RWYWx1ZXMgZmluYWwgOiBw
dWJsaWMgVmVjdG9yPEZsb2F0UG9pbnQ+IHsKK2NsYXNzIFNWR1BvaW50TGlzdFZhbHVlcyBmaW5h
bCA6IHB1YmxpYyBTVkdWYWx1ZUxpc3Q8RmxvYXRQb2ludD4gewogcHVibGljOgogICAgIFN0cmlu
ZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0cmluZ0xpc3RWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHJpbmdMaXN0VmFsdWVzLmNwcAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzksNyAr
NDAsNyBAQCB2b2lkIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnJlc2V0KGNvbnN0IFN0CiAKICAgICAv
LyBBZGQgZW1wdHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5LgogICAgIGlmIChpc0VtcHR5KCkp
Ci0gICAgICAgIGFwcGVuZChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgYXBwZW5kKFNWR1ZhbHVl
OjpjcmVhdGU8U3RyaW5nPihlbXB0eVN0cmluZygpKSk7CiB9CiAKIHZvaWQgU1ZHU3RyaW5nTGlz
dFZhbHVlczo6cGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCkBAIC01
Niw3ICs1Nyw3IEBAIHZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3QKICAg
ICAgICAgICAgIHB0cisrOwogICAgICAgICBpZiAocHRyID09IHN0YXJ0KQogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGFwcGVuZChTdHJpbmcoc3RhcnQsIHB0ciAtIHN0YXJ0KSk7CisgICAg
ICAgIGFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFN0cmluZz4oU3RyaW5nKHN0YXJ0LCBwdHIgLSBz
dGFydCkpKTsKICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIocHRyLCBl
bmQsIGRlbGltaXRlcik7CiAgICAgfQogfQpAQCAtNzAsNyArNzEsNyBAQCBTdHJpbmcgU1ZHU3Ry
aW5nTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluCiAgICAgICAgIGlmIChpID4gMCkKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZChhdFJlZmVyZW5jZShpKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHJpbmdMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
cmluZ0xpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0cmluZ0xpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzLDcgKzE0
LDcgQEAKICAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgogICoKICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
b+KIqwogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICov
CkBAIC0yMiw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVk
ZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSAiU1ZHVmFsdWVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzIsNyArMzMs
NyBAQCBjbGFzcyBTVkdTdHJpbmdMaXN0OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gCiBjbGFzcyBT
VkdQcm9wZXJ0eVRlYXJPZmY7CiAKLWNsYXNzIFNWR1N0cmluZ0xpc3RWYWx1ZXMgZmluYWwgOiBw
dWJsaWMgVmVjdG9yPFN0cmluZz4geworY2xhc3MgU1ZHU3RyaW5nTGlzdFZhbHVlcyBmaW5hbCA6
IHB1YmxpYyBTVkdWYWx1ZUxpc3Q8U3RyaW5nPiB7CiBwdWJsaWM6CiAgICAgU1ZHU3RyaW5nTGlz
dFZhbHVlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgICAgICA6IG1f
YXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1Rlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3Bw
CShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTU0LDE2ICsxNTQsMTYgQEAgYm9vbCBTVkdU
ZXN0czo6aGFzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZwogCiBib29sIFNWR1Rlc3RzOjppc1ZhbGlk
KCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBtX3JlcXVpcmVkRmVhdHVyZXMu
dmFsdWUpIHsKLSAgICAgICAgaWYgKGZlYXR1cmUuaXNFbXB0eSgpIHx8ICFzdXBwb3J0ZWRTVkdG
ZWF0dXJlcygpLmNvbnRhaW5zKGZlYXR1cmUpKQorICAgIGZvciAoY29uc3QgYXV0byYgZmVhdHVy
ZSA6IG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSkgeworICAgICAgICBpZiAoZmVhdHVyZS0+YXM8
U3RyaW5nPigpLmlzRW1wdHkoKSB8fCAhc3VwcG9ydGVkU1ZHRmVhdHVyZXMoKS5jb250YWlucyhm
ZWF0dXJlLT5hczxTdHJpbmc+KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogbV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSkgewotICAg
ICAgICBpZiAobGFuZ3VhZ2UgIT0gZGVmYXVsdExhbmd1YWdlKCkuc3Vic3RyaW5nKDAsIDIpKQor
ICAgIGZvciAoY29uc3QgYXV0byYgbGFuZ3VhZ2UgOiBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlKSB7
CisgICAgICAgIGlmIChsYW5ndWFnZS0+YXM8U3RyaW5nPigpICE9IGRlZmF1bHRMYW5ndWFnZSgp
LnN1YnN0cmluZygwLCAyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
Zm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVkRXh0ZW5zaW9ucy52YWx1ZSkgewotICAg
ICAgICBpZiAoIWhhc0V4dGVuc2lvbihleHRlbnNpb24pKQorICAgIGZvciAoY29uc3QgYXV0byYg
ZXh0ZW5zaW9uIDogbV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUpIHsKKyAgICAgICAgaWYgKCFo
YXNFeHRlbnNpb24oZXh0ZW5zaW9uLT5hczxTdHJpbmc+KCkpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9u
IDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTQxLDcgKzQyLDcgQEAgUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcwogCiAgICAgU1ZHVHJhbnNmb3JtVmFsdWUgdHJhbnNmb3JtKG1hdHJpeCk7
CiAgICAgY2xlYXIoKTsKLSAgICBhcHBlbmQodHJhbnNmb3JtKTsKKyAgICBhcHBlbmQoU1ZHVmFs
dWU6OmNyZWF0ZTxTVkdUcmFuc2Zvcm1WYWx1ZT4odHJhbnNmb3JtKSk7CiAgICAgcmV0dXJuIFNW
R1RyYW5zZm9ybTo6Y3JlYXRlKHRyYW5zZm9ybSk7CiB9CiAKQEAgLTUyLDcgKzUzLDcgQEAgYm9v
bCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpjb25jYXRlbmF0ZQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBy
ZXN1bHQgKj0gYXQoaSkubWF0cml4KCk7CisgICAgICAgIHJlc3VsdCAqPSBhdFJlZmVyZW5jZShp
KS5tYXRyaXgoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNjUsNyArNjYsNyBAQCBTdHJp
bmcgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6dmFsdWVBc1N0CiAgICAgICAgIGlmIChpID4gMCkK
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXQoaSkudmFsdWVBc1N0cmluZygpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYXRSZWZl
cmVuY2UoaSkudmFsdWVBc1N0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcy5oCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsMTggKzIxLDE5IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKLSNpbmNsdWRlICJTVkdUcmFu
c2Zvcm0uaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiU1ZHVHJhbnNmb3Jt
VmFsdWUuaCIKKyNpbmNsdWRlICJTVkdWYWx1ZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjsK
IAorY2xhc3MgU1ZHTWF0cml4OworY2xhc3MgU1ZHVHJhbnNmb3JtOwogY2xhc3MgU1ZHVHJhbnNm
b3JtTGlzdDsKIAotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBW
ZWN0b3I8U1ZHVHJhbnNmb3JtVmFsdWUsIDE+IHsKK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3RWYWx1
ZXMgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVMaXN0PFNWR1RyYW5zZm9ybVZhbHVlPiB7CiBwdWJs
aWM6CiAgICAgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChT
VkdNYXRyaXgmKSBjb25zdDsKICAgICBSZWY8U1ZHVHJhbnNmb3JtPiBjb25zb2xpZGF0ZSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmgJKHJldmlzaW9uIDIzMDY0
NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC05MCw1ICs5MSwxMCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR1RyYW5zZm9y
CiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KKyAgICAKK3RlbXBsYXRlPD4gc3RydWN0IFNW
R1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybVZhbHVlPiB7CisgICAgc3RhdGljIFNWR1RyYW5z
Zm9ybVZhbHVlIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQorICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3QgU1ZHVHJhbnNmb3JtVmFsdWUmIHRyYW5zZm9ybSkgeyByZXR1cm4g
dHJhbnNmb3JtLnZhbHVlQXNTdHJpbmcoKTsgfQorfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkocmV2aXNpb24g
MjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMTk3LDcgKzE5OCw3IEBAIGJvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VU
cmFuc2Zvcm1BdHQKICAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybVZhbHVlKHR5cGUsIGN1cnJU
cmFuc2Zvcm0sIGVuZCwgdHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBsaXN0LmFwcGVuZCh0cmFuc2Zvcm0pOworICAgICAgICBsaXN0LmFwcGVuZChTVkdW
YWx1ZTo6Y3JlYXRlPFNWR1RyYW5zZm9ybVZhbHVlPih0cmFuc2Zvcm0pKTsKICAgICAgICAgc2tp
cE9wdGlvbmFsU1ZHU3BhY2VzKGN1cnJUcmFuc2Zvcm0sIGVuZCk7CiAgICAgICAgIGlmIChjdXJy
VHJhbnNmb3JtIDwgZW5kICYmICpjdXJyVHJhbnNmb3JtID09ICcsJykgewogICAgICAgICAgICAg
ZGVsaW1QYXJzZWQgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVlLmgJKHJldmlzaW9uIDIz
MDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlNW
R0FuZ2xlVmFsdWUuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0VmFsdWVzLmgiCkBAIC0zMywx
NyArMzQsMTggQEAKICNpbmNsdWRlICJTVkdNYXJrZXJUeXBlcy5oIgogI2luY2x1ZGUgIlNWR051
bWJlckxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgorI2luY2x1
ZGUgIlNWR1BhdGhTZWdMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFsdWVz
LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCi0jaW5jbHVkZSAi
U1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKICNpbmNs
dWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtVmFs
dWUuaCIKIAogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdXNpbmcgU1ZHVmFsdWVWYXJpYW50ID0gVmFyaWFudDwKK3VzaW5nIFNWR0FuaW1hdGVkVHlw
ZVZhbHVlVmFyaWFudCA9IFZhcmlhbnQ8CiAgICAgc3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVu
c2lnbmVkPiosCiAgICAgYm9vbCosCiAgICAgQ29sb3IqLApAQCAtNjMsNCArNjUsMTMxIEBAIHVz
aW5nIFNWR1ZhbHVlVmFyaWFudCA9IFZhcmlhbnQ8CiAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cyoKID47CiAKK3VzaW5nIFNWR1ZhbHVlVmFyaWFudCA9IFZhcmlhbnQ8CisgICAgU1ZHTGVuZ3Ro
VmFsdWUsCisgICAgZmxvYXQsCisgICAgUmVmUHRyPFNWR1BhdGhTZWc+LAorICAgIEZsb2F0UG9p
bnQsCisgICAgU3RyaW5nLAorICAgIFNWR1RyYW5zZm9ybVZhbHVlCis+OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CitzdHJ1Y3QgU1ZHVHJhaXRIYXNUb1N0cmluZyB7Citwcml2
YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzdGQ6OnRydWVfdHlwZSB0ZXN0
KGRlY2x0eXBlKCZTVkdQcm9wZXJ0eVRyYWl0czxUPjo6dG9TdHJpbmcpKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgc3RkOjpmYWxzZV90eXBlIHRlc3QoLi4uKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
dGVzdDxQcm9wZXJ0eVR5cGU+KDApKSwgc3RkOjp0cnVlX3R5cGU+Ojp2YWx1ZTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK3N0cnVjdCBTVkdUcmFpdEhhc1BhcnNlIHsK
K3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHN0ZDo6dHJ1ZV90eXBl
IHRlc3QoZGVjbHR5cGUoJlNWR1Byb3BlcnR5VHJhaXRzPFQ+OjpwYXJzZSkpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBzdGQ6OmZhbHNlX3R5cGUgdGVzdCguLi4pOworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHN0ZDo6aXNfc2FtZTxkZWNsdHlw
ZSh0ZXN0PFByb3BlcnR5VHlwZT4oMCkpLCBzdGQ6OnRydWVfdHlwZT46OnZhbHVlOworfTsKKwor
Y2xhc3MgU1ZHVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdWYWx1ZT4sIHB1YmxpYyBTVkdW
YWx1ZVZhcmlhbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlw
ZT4KKyAgICBzdGF0aWMgUmVmUHRyPFNWR1ZhbHVlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZTxQcm9wZXJ0eVR5cGU+KFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlw
ZT46OmluaXRpYWxWYWx1ZSgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJvcGVy
dHlUeXBlPgorICAgIHN0YXRpYyBSZWZQdHI8U1ZHVmFsdWU+IGNyZWF0ZShjb25zdCBQcm9wZXJ0
eVR5cGUmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdWYWx1
ZSh2YWx1ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWZQdHI8U1ZHVmFsdWU+IGNyZWF0ZShj
b25zdCBTVkdWYWx1ZSYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNWR1ZhbHVlKHZhbHVlKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVy
dHlUeXBlPgorICAgIGJvb2wgaXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8UHJvcGVydHlUeXBlPigqdGhpcyk7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPGNsYXNzIFByb3BlcnR5VHlwZT4KKyAgICBjb25zdCBQcm9wZXJ0eVR5cGUmIGFzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpczxQcm9wZXJ0eVR5cGU+KCkpOworICAgICAg
ICByZXR1cm4gV1RGOjpnZXQ8UHJvcGVydHlUeXBlPigqdGhpcyk7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPGNsYXNzIFByb3BlcnR5VHlwZT4KKyAgICBQcm9wZXJ0eVR5cGUmIGFzKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpczxQcm9wZXJ0eVR5cGU+KCkpOworICAgICAgICByZXR1cm4gV1RG
OjpnZXQ8UHJvcGVydHlUeXBlPigqdGhpcyk7CisgICAgfQorCisgICAgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFsmXShjb25zdCBhdXRv
JiB2YWx1ZSkgeworICAgICAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gc3RkOjpkZWNheV90
PGRlY2x0eXBlKHZhbHVlKT47CisgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmc8UHJvcGVydHlU
eXBlPih2YWx1ZSk7CisgICAgICAgIH0sIHN0YXRpY19jYXN0PGNvbnN0IFNWR1ZhbHVlVmFyaWFu
dCY+KCp0aGlzKSk7CisgICAgfQorCisgICAgYm9vbCBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4g
V1RGOjp2aXNpdChbJl0oYXV0byYgdmFsdWUpIHsKKyAgICAgICAgICAgIHVzaW5nIFByb3BlcnR5
VHlwZSA9IHN0ZDo6ZGVjYXlfdDxkZWNsdHlwZSh2YWx1ZSk+OworICAgICAgICAgICAgcmV0dXJu
IHBhcnNlPFByb3BlcnR5VHlwZT4odmFsdWUsIGF0dHJOYW1lLCBzdHJpbmcpOworICAgICAgICB9
LCBzdGF0aWNfY2FzdDxTVkdWYWx1ZVZhcmlhbnQmPigqdGhpcykpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgZXhwbGljaXQgU1ZH
VmFsdWUoY29uc3QgUHJvcGVydHlUeXBlJiB2YWx1ZSkKKyAgICAgICAgOiBTVkdWYWx1ZVZhcmlh
bnQodmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQoaXM8UHJvcGVydHlUeXBlPigpKTsKKyAg
ICB9CisKKyAgICBTVkdWYWx1ZShjb25zdCBTVkdWYWx1ZSYgdmFsdWUpCisgICAgICAgIDogU1ZH
VmFsdWVWYXJpYW50KHN0YXRpY19jYXN0PGNvbnN0IFNWR1ZhbHVlVmFyaWFudCY+KHZhbHVlKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCgpID09IHZhbHVlLmluZGV4KCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgc3RkOjplbmFibGVfaWZfdDxT
VkdUcmFpdEhhc1RvU3RyaW5nPFByb3BlcnR5VHlwZT46OnZhbHVlPiogPSBudWxscHRyPgorICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgUHJvcGVydHlUeXBlJiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+Ojp0b1N0cmlu
Zyh2YWx1ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCBz
dGQ6OmVuYWJsZV9pZl90PCFTVkdUcmFpdEhhc1RvU3RyaW5nPFByb3BlcnR5VHlwZT46OnZhbHVl
PiogPSBudWxscHRyPgorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgUHJvcGVydHlU
eXBlJikKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0
eVR5cGUsIHN0ZDo6ZW5hYmxlX2lmX3Q8U1ZHVHJhaXRIYXNQYXJzZTxQcm9wZXJ0eVR5cGU+Ojp2
YWx1ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMgYm9vbCBwYXJzZShQcm9wZXJ0eVR5cGUmIHZh
bHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcp
CisgICAgeworICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9w
ZXJ0eVR5cGU+OjpwYXJzZShhdHRyTmFtZSwgc3RyaW5nKSkgeworICAgICAgICAgICAgdmFsdWUg
PSAqcmVzdWx0OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlw
ZSwgc3RkOjplbmFibGVfaWZfdDwhU1ZHVHJhaXRIYXNQYXJzZTxQcm9wZXJ0eVR5cGU+Ojp2YWx1
ZT4qID0gbnVsbHB0cj4KKyAgICBzdGF0aWMgYm9vbCBwYXJzZShQcm9wZXJ0eVR5cGUmLCBjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikKKyAgICB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVlTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZUxpc3QuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWVMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHVmFsdWU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFByb3BlcnR5VHlwZT4KK2NsYXNzIFNWR1ZhbHVlTGlzdCA6IHB1YmxpYyBWZWN0b3I8UmVmUHRy
PFNWR1ZhbHVlPj4geworcHVibGljOgorICAgIFNWR1ZhbHVlTGlzdCgpID0gZGVmYXVsdDsKKwor
ICAgIFNWR1ZhbHVlTGlzdChjb25zdCBTVkdWYWx1ZUxpc3QmIG90aGVyKQorICAgICAgICA6IFZl
Y3RvcjxSZWZQdHI8U1ZHVmFsdWU+PihvdGhlci5kZWVwQ29weSgpKQorICAgIHsKKyAgICB9CisK
KyAgICBTVkdWYWx1ZUxpc3QmIG9wZXJhdG9yPShjb25zdCBTVkdWYWx1ZUxpc3QmIG90aGVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1ZhbHVlTGlzdCY+KFZlY3RvcjxS
ZWZQdHI8U1ZHVmFsdWU+Pjo6b3BlcmF0b3I9KG90aGVyLmRlZXBDb3B5KCkpKTsKKyAgICB9CisK
KyAgICAvLyBUaGlzIG9wZXJhdG9yIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyIGV4cGVjdHMgYSBW
ZWN0b3Igb2YKKyAgICAvLyBQcm9wZXJ0eVR5cGUsIG5vdCBhIFZlY3RvciBvZiBSZWZQdHI8U1ZH
VmFsdWU+LgorICAgIG9wZXJhdG9yIFZlY3RvcjxQcm9wZXJ0eVR5cGU+KCkgY29uc3QKKyAgICB7
CisgICAgICAgIFZlY3RvcjxQcm9wZXJ0eVR5cGU+IHZhbHVlczsKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiB2YWx1ZSA6ICp0aGlzKQorICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCh2YWx1ZS0+
dGVtcGxhdGUgYXM8UHJvcGVydHlUeXBlPigpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAg
ICB9CisKKyAgICAvLyBWZWN0b3I6OnJlc2l6ZSgpIGlzIG92ZXJyaWRkZW4gdG8gYWxsb2NhdGUg
bmV3IFJlZlBUcjxTVkdWYWx1ZT4KKyAgICAvLyBhbmQgYXNzaWduIHRoZSBkZWZhdWx0IHZhbHVl
IGZvciB0aGUgbmV3IGl0ZW1zLgorICAgIHZvaWQgcmVzaXplKHNpemVfdCBuZXdTaXplKQorICAg
IHsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0gc2l6ZSgpOworICAgICAgICBWZWN0b3I8UmVmUHRy
PFNWR1ZhbHVlPj46OnJlc2l6ZShuZXdTaXplKTsKKyAgICAgICAgZm9yICg7IGluZGV4IDwgbmV3
U2l6ZTsgKytpbmRleCkKKyAgICAgICAgICAgIGF0KGluZGV4KSA9IGRlYWZ1bHRWYWx1ZSgpOwor
ICAgIH0KKworICAgIGNvbnN0IFByb3BlcnR5VHlwZSYgYXRSZWZlcmVuY2Uoc2l6ZV90IGluZGV4
KSBjb25zdCB7IHJldHVybiBhdChpbmRleCktPnRlbXBsYXRlIGFzPFByb3BlcnR5VHlwZT4oKTsg
fQorICAgIFByb3BlcnR5VHlwZSYgYXRSZWZlcmVuY2Uoc2l6ZV90IGluZGV4KSB7IHJldHVybiBh
dChpbmRleCktPnRlbXBsYXRlIGFzPFByb3BlcnR5VHlwZT4oKTsgfQorCisgICAgY29uc3QgUHJv
cGVydHlUeXBlJiBmaXJzdFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGF0UmVmZXJlbmNlKDAp
OyB9CisgICAgUHJvcGVydHlUeXBlJiBmaXJzdFJlZmVyZW5jZSgpIHsgcmV0dXJuIGF0UmVmZXJl
bmNlKDApOyB9CisKKyAgICBjb25zdCBQcm9wZXJ0eVR5cGUmIGxhc3RSZWZlcmVuY2UoKSBjb25z
dCB7IHJldHVybiBhdFJlZmVyZW5jZShzaXplKCkgLSAxKTsgfQorICAgIFByb3BlcnR5VHlwZSYg
bGFzdFJlZmVyZW5jZSgpIHsgcmV0dXJuIGF0UmVmZXJlbmNlKHNpemUoKSAtIDEpOyB9CisgICAg
Citwcml2YXRlOgorICAgIC8vIFRoZSBpbnN0YW50aWF0aW9uIG9mIHRoaXMgbWVtYmVyIGZ1bmN0
aW9uIGJvZHkgaXMgZGVsYXllZCB0aWxsIHRoZSBjYWxsZXIgaXMgYWN0dWFsbHkuCisgICAgLy8g
dXNlZC4gVGhpcyBtYWtlcyBpdCBzdWZmaWNpZW50IHRvIGZvcndhcmQgZGVjbGFyZSBTVkdWYWx1
ZSBhbmQgbm90IGluY2x1ZGUgU1ZHVmFsdWUuaC4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0g
U1ZHVmFsdWU+CisgICAgc3RhdGljIFJlZlB0cjxUPiBkZWFmdWx0VmFsdWUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFQ6OnRlbXBsYXRlIGNyZWF0ZTxQcm9wZXJ0eVR5cGU+KCk7CisgICAgfQor
CisgICAgLy8gU2FtZSBhcyBlYWZ1bHRWYWx1ZSgpLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQg
PSBTVkdWYWx1ZT4KKyAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvcHkoY29uc3QgUmVmUHRyPFQ+JiBv
dGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBUOjpjcmVhdGUoKm90aGVyKTsKKyAgICB9CisK
KyAgICAvLyBUaGUgbmV3IFZlY3RvciBkb2VzIG5vdCByZWZlcmVuY2VzIHRoZSBpdGVtcyBpbiB0
aGlzIFZlY3RvcgorICAgIFZlY3RvcjxSZWZQdHI8U1ZHVmFsdWU+PiBkZWVwQ29weSgpIGNvbnN0
CisgICAgeworICAgICAgICBWZWN0b3I8UmVmUHRyPFNWR1ZhbHVlPj4gdmFsdWVzOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDogKnRoaXMpCisgICAgICAgICAgICB2YWx1ZXMuYXBw
ZW5kKGNvcHkodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICB9Cit9OworCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
TWFjcm9zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5Lmgi
CiAjaW5jbHVkZSAiU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIgogI2luY2x1ZGUgIlNWR1By
b3BlcnR5VHJhaXRzLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCShyZXZp
c2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJv
cGVydHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSwxNCArMjYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWVudW0gTGlzdE1vZGlmaWNhdGlvbiB7Ci0gICAgTGlzdE1vZGlmaWNhdGlvblVua25v
d24gPSAwLAotICAgIExpc3RNb2RpZmljYXRpb25JbnNlcnQgPSAxLAotICAgIExpc3RNb2RpZmlj
YXRpb25SZXBsYWNlID0gMiwKLSAgICBMaXN0TW9kaWZpY2F0aW9uUmVtb3ZlID0gMywKLSAgICBM
aXN0TW9kaWZpY2F0aW9uQXBwZW5kID0gNAotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVy
dHlUeXBlPgogY2xhc3MgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOwogCkBAIC0xMzUs
NyArMTI4LDcgQEAgcHVibGljOgogCiAgICAgICAgIC8vIFNwZWM6IENsZWFycyBhbGwgZXhpc3Rp
bmcgY3VycmVudCBpdGVtcyBmcm9tIHRoZSBsaXN0IGFuZCByZS1pbml0aWFsaXplcyB0aGUgbGlz
dCB0byBob2xkIHRoZSBzaW5nbGUgaXRlbSBzcGVjaWZpZWQgYnkgdGhlIHBhcmFtZXRlci4KICAg
ICAgICAgbV92YWx1ZXMtPmNsZWFyKCk7Ci0gICAgICAgIG1fdmFsdWVzLT5hcHBlbmQobmV3SXRl
bSk7CisgICAgICAgIG1fdmFsdWVzLT5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxMaXN0SXRlbVR5
cGU+KG5ld0l0ZW0pKTsKIAogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJu
IExpc3RJdGVtVHlwZSB7IG5ld0l0ZW0gfTsKQEAgLTE2MSw3ICsxNTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGRldGFjaExpc3RXcmFwcGVycygwKTsKICAgICAgICAgbV92YWx1ZXMtPmNsZWFyKCk7
CiAKLSAgICAgICAgbV92YWx1ZXMtPmFwcGVuZChuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgp
KTsKKyAgICAgICAgbV92YWx1ZXMtPmFwcGVuZChuZXdJdGVtLT52YWx1ZSgpKTsKICAgICAgICAg
bV93cmFwcGVycy0+YXBwZW5kKG5ld0l0ZW0tPmNyZWF0ZVdlYWtQdHIoKSk7CiAKICAgICAgICAg
Y29tbWl0Q2hhbmdlKCk7CkBAIC0xODUsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAogICAgICAgICAvLyBTcGVjOiBSZXR1
cm5zIHRoZSBzcGVjaWZpZWQgaXRlbSBmcm9tIHRoZSBsaXN0LiBUaGUgcmV0dXJuZWQgaXRlbSBp
cyB0aGUgaXRlbSBpdHNlbGYgYW5kIG5vdCBhIGNvcHkuCi0gICAgICAgIHJldHVybiBMaXN0SXRl
bVR5cGUgeyBtX3ZhbHVlcy0+YXQoaW5kZXgpIH07CisgICAgICAgIHJldHVybiBMaXN0SXRlbVR5
cGUgeyBtX3ZhbHVlcy0+YXRSZWZlcmVuY2UoaW5kZXgpIH07CiAgICAgfQogCiAgICAgRXhjZXB0
aW9uT3I8UmVmPExpc3RJdGVtVGVhck9mZj4+IGdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyhBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkTGlzdCwgdW5zaWduZWQgaW5kZXgpCkBA
IC0yMDUsNyArMTk4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyB3cmFw
cGVyLCB3aGljaCBpcyBhbGxvd2VkIHRvIGRpcmVjdGx5IG1vZGlmeSB0aGUgaXRlbSBpbiB0aGUg
bGlzdCwgdy9vIGNvcHlpbmcgYW5kIGNhY2hlIHRoZSB3cmFwcGVyIGluIG91ciBtYXAuCiAgICAg
ICAgICAgICAvLyBJdCBpcyBhbHNvIGFzc29jaWF0ZWQgd2l0aCBvdXIgYW5pbWF0ZWQgcHJvcGVy
dHksIHNvIGl0IGNhbiBub3RpZnkgdGhlIFNWRyBFbGVtZW50IHdoaWNoIGhvbGRzIHRoZSBTVkdB
bmltYXRlZCpMaXN0CiAgICAgICAgICAgICAvLyB0aGF0IGl0IGhhcyBiZWVuIG1vZGlmaWVkIChh
bmQgdGh1cyBjYW4gY2FsbCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGFzc29jaWF0ZWRBdHRyaWJ1dGVO
YW1lKSkuCi0gICAgICAgICAgICB3cmFwcGVyID0gTGlzdEl0ZW1UZWFyT2ZmOjpjcmVhdGUoYW5p
bWF0ZWRMaXN0LCBVbmRlZmluZWRSb2xlLCBtX3ZhbHVlcy0+YXQoaW5kZXgpKTsKKyAgICAgICAg
ICAgIHdyYXBwZXIgPSBMaXN0SXRlbVRlYXJPZmY6OmNyZWF0ZShhbmltYXRlZExpc3QsIFVuZGVm
aW5lZFJvbGUsIG1fdmFsdWVzLT5hdFJlZmVyZW5jZShpbmRleCkpOwogICAgICAgICAgICAgbV93
cmFwcGVycy0+YXQoaW5kZXgpID0gd3JhcHBlci0+Y3JlYXRlV2Vha1B0cigpOwogICAgICAgICB9
CiAKQEAgLTIzMiw3ICsyMjUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gU3BlYzogSW5zZXJ0
cyBhIG5ldyBpdGVtIGludG8gdGhlIGxpc3QgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gVGhl
IGluZGV4IG9mIHRoZSBpdGVtIGJlZm9yZSB3aGljaCB0aGUgbmV3IGl0ZW0gaXMgdG8gYmUKICAg
ICAgICAgLy8gaW5zZXJ0ZWQuIFRoZSBmaXJzdCBpdGVtIGlzIG51bWJlciAwLiBJZiB0aGUgaW5k
ZXggaXMgZXF1YWwgdG8gMCwgdGhlbiB0aGUgbmV3IGl0ZW0gaXMgaW5zZXJ0ZWQgYXQgdGhlIGZy
b250IG9mIHRoZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy0+aW5zZXJ0KGluZGV4LCBuZXdJdGVt
KTsKKyAgICAgICAgbV92YWx1ZXMtPmluc2VydChpbmRleCwgU1ZHVmFsdWU6OmNyZWF0ZTxMaXN0
SXRlbVR5cGU+KG5ld0l0ZW0pKTsKIAogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAg
cmV0dXJuIExpc3RJdGVtVHlwZSB7IG5ld0l0ZW0gfTsKQEAgLTI2MSw3ICsyNTQsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgLy8gU3BlYzogSW5zZXJ0cyBhIG5ldyBpdGVtIGludG8gdGhlIGxpc3Qg
YXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gVGhlIGluZGV4IG9mIHRoZSBpdGVtIGJlZm9yZSB3
aGljaCB0aGUgbmV3IGl0ZW0gaXMgdG8gYmUKICAgICAgICAgLy8gaW5zZXJ0ZWQuIFRoZSBmaXJz
dCBpdGVtIGlzIG51bWJlciAwLiBJZiB0aGUgaW5kZXggaXMgZXF1YWwgdG8gMCwgdGhlbiB0aGUg
bmV3IGl0ZW0gaXMgaW5zZXJ0ZWQgYXQgdGhlIGZyb250IG9mIHRoZSBsaXN0LgotICAgICAgICBt
X3ZhbHVlcy0+aW5zZXJ0KGluZGV4LCBuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAg
ICAgICAgbV92YWx1ZXMtPmluc2VydChpbmRleCwgbmV3SXRlbS0+dmFsdWUoKSk7CiAKICAgICAg
ICAgLy8gU3RvcmUgbmV3IHdyYXBwZXIgYXQgcG9zaXRpb24gJ2luZGV4JywgY2hhbmdlIGl0cyB1
bmRlcmx5aW5nIHZhbHVlLCBzbyBtdXRhdGlvbnMgb2YgbmV3SXRlbSwgZGlyZWN0bHkgYWZmZWN0
IHRoZSBpdGVtIGluIHRoZSBsaXN0LgogICAgICAgICBtX3dyYXBwZXJzLT5pbnNlcnQoaW5kZXgs
IG5ld0l0ZW0tPmNyZWF0ZVdlYWtQdHIoKSk7CkBAIC0zMDQsNyArMjk3LDcgQEAgcHVibGljOgog
ICAgICAgICB9CiAKICAgICAgICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhdCB0aGUgZGVzaXJlZCBw
b3NpdGlvbiAnaW5kZXgnLiAKLSAgICAgICAgbV92YWx1ZXMtPmF0KGluZGV4KSA9IG5ld0l0ZW07
CisgICAgICAgIG1fdmFsdWVzLT5hdFJlZmVyZW5jZShpbmRleCkgPSBuZXdJdGVtOwogCiAgICAg
ICAgIGNvbW1pdENoYW5nZSgpOwogICAgICAgICByZXR1cm4gTGlzdEl0ZW1UeXBlIHsgbmV3SXRl
bSB9OwpAQCAtMzQwLDcgKzMzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9sZEl0ZW0tPmRl
dGFjaFdyYXBwZXIoKTsKIAogICAgICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCB0aGUgd3Jh
cHBlciBhdCB0aGUgZGVzaXJlZCBwb3NpdGlvbiAnaW5kZXgnLiAKLSAgICAgICAgbV92YWx1ZXMt
PmF0KGluZGV4KSA9IG5ld0l0ZW0tPnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIG1fdmFs
dWVzLT5hdChpbmRleCkgPSBuZXdJdGVtLT52YWx1ZSgpOwogICAgICAgICBtX3dyYXBwZXJzLT5h
dChpbmRleCkgPSBuZXdJdGVtLT5jcmVhdGVXZWFrUHRyKCk7CiAKICAgICAgICAgY29tbWl0Q2hh
bmdlKCk7CkBAIC0zNjgsNyArMzYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCkpOwogCi0gICAgICAgIExpc3RJdGVtVHlwZSBvbGRJdGVtID0gbV92YWx1ZXMt
PmF0KGluZGV4KTsKKyAgICAgICAgTGlzdEl0ZW1UeXBlIG9sZEl0ZW0gPSBtX3ZhbHVlcy0+YXRS
ZWZlcmVuY2UoaW5kZXgpOwogICAgICAgICBtX3ZhbHVlcy0+cmVtb3ZlKGluZGV4KTsKIAogICAg
ICAgICBjb21taXRDaGFuZ2UoKTsKQEAgLTM4OSw3ICszODIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IC8vIERldGFjaCB0aGUgZXhpc3Rpbmcgd3JhcHBlci4KICAgICAgICAgUmVmUHRyPExpc3RJdGVt
VGVhck9mZj4gb2xkSXRlbSA9IHN0YXRpY19jYXN0PExpc3RJdGVtVGVhck9mZio+KG1fd3JhcHBl
cnMtPmF0KGluZGV4KS5nZXQoKSk7CiAgICAgICAgIGlmICghb2xkSXRlbSkKLSAgICAgICAgICAg
IG9sZEl0ZW0gPSBMaXN0SXRlbVRlYXJPZmY6OmNyZWF0ZShhbmltYXRlZExpc3QsIFVuZGVmaW5l
ZFJvbGUsIG1fdmFsdWVzLT5hdChpbmRleCkpOworICAgICAgICAgICAgb2xkSXRlbSA9IExpc3RJ
dGVtVGVhck9mZjo6Y3JlYXRlKGFuaW1hdGVkTGlzdCwgVW5kZWZpbmVkUm9sZSwgbV92YWx1ZXMt
PmF0UmVmZXJlbmNlKGluZGV4KSk7CiAKICAgICAgICAgb2xkSXRlbS0+ZGV0YWNoV3JhcHBlcigp
OwogICAgICAgICBtX3dyYXBwZXJzLT5yZW1vdmUoaW5kZXgpOwpAQCAtNDExLDcgKzQwNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShuZXdJdGVtLCAw
KTsKIAogICAgICAgICAvLyBBcHBlbmQgdGhlIHZhbHVlIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3Qu
Ci0gICAgICAgIG1fdmFsdWVzLT5hcHBlbmQobmV3SXRlbSk7CisgICAgICAgIG1fdmFsdWVzLT5h
cHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxMaXN0SXRlbVR5cGU+KG5ld0l0ZW0pKTsKIAogICAgICAg
ICBjb21taXRDaGFuZ2UoTGlzdE1vZGlmaWNhdGlvbkFwcGVuZCk7CiAgICAgICAgIHJldHVybiBM
aXN0SXRlbVR5cGUgeyBuZXdJdGVtIH07CkBAIC00MzQsNyArNDI3LDcgQEAgcHVibGljOgogICAg
ICAgICBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIobmV3SXRlbSwgMCk7CiAKICAgICAg
ICAgLy8gQXBwZW5kIHRoZSB2YWx1ZSBhbmQgd3JhcHBlciBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0
LgotICAgICAgICBtX3ZhbHVlcy0+YXBwZW5kKG5ld0l0ZW0tPnByb3BlcnR5UmVmZXJlbmNlKCkp
OworICAgICAgICBtX3ZhbHVlcy0+YXBwZW5kKG5ld0l0ZW0tPnZhbHVlKCkpOwogICAgICAgICBt
X3dyYXBwZXJzLT5hcHBlbmQobmV3SXRlbS0+Y3JlYXRlV2Vha1B0cigpKTsKIAogICAgICAgICBj
b21taXRDaGFuZ2UoTGlzdE1vZGlmaWNhdGlvbkFwcGVuZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oCShy
ZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0
UHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNDAsNyArMTQxLDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgaXRlbS0+c2V0QW5pbWF0ZWRQcm9wZXJ0eShtX2FuaW1hdGVkUHJvcGVydHkucHRy
KCkpOwotICAgICAgICAgICAgaXRlbS0+c2V0VmFsdWUobV92YWx1ZXMtPmF0KGkpKTsKKyAgICAg
ICAgICAgIGl0ZW0tPnNldFZhbHVlKG1fdmFsdWVzLT5hdFJlZmVyZW5jZShpKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPmNvbW1pdENoYW5nZSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2Zm
LmgJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNp
bmNsdWRlICJTVkdQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlLmgiCiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGUoaW5pdGlhbFZhbHVlLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpKTsKICAgICB9CiAKKyAgICBSZWZQdHI8U1ZHVmFsdWU+IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gU1ZHVmFsdWU6OmNyZWF0ZTxQcm9wZXJ0eVR5cGU+KCptX3ZhbHVlKTsgfQogICAgIHZp
cnR1YWwgUHJvcGVydHlUeXBlJiBwcm9wZXJ0eVJlZmVyZW5jZSgpIHsgcmV0dXJuICptX3ZhbHVl
OyB9CiAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0eS5nZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHJldmlzaW9uIDIz
MDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDE0IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2VudW0gTGlzdE1vZGlm
aWNhdGlvbiB7CisgICAgTGlzdE1vZGlmaWNhdGlvblVua25vd24gPSAwLAorICAgIExpc3RNb2Rp
ZmljYXRpb25JbnNlcnQgPSAxLAorICAgIExpc3RNb2RpZmljYXRpb25SZXBsYWNlID0gMiwKKyAg
ICBMaXN0TW9kaWZpY2F0aW9uUmVtb3ZlID0gMywKKyAgICBMaXN0TW9kaWZpY2F0aW9uQXBwZW5k
ID0gNAorfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgogc3RydWN0IFNWR1By
b3BlcnR5VHJhaXRzIHsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338051</attachid>
            <date>2018-04-16 15:53:58 -0700</date>
            <delta_ts>2018-04-16 18:16:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184670-20180416155357.patch</filename>
            <type>text/plain</type>
            <size>85310</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NyBAQAorMjAxOC0wNC0xNiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgYWxs
IHRoZSBpdGVtcyBvZiB0aGUgU1ZHIHRlYXItb2ZmIHByb3BlcnRpZXMgbGlzdCBiZSBSZWZDb3Vu
dGVkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIEl0IGFkZHMg
dGhlIGNsYXNzIFNWR1ZhbHVlIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBhbGwgdGhlIHR5cGVzIG9m
IHRoZQorICAgICAgICAgICBTVkcgcHJvcGVydGllcyBsaXN0LgorCisgICAgICAgIC0tIEl0IGFk
ZHMgdGhlIGNsYXNzIFNWR1ZhbHVlTGlzdCB3aGljaCBpcyBkZXJpdmVkIGZvcm0gVmVjdG9yPFJl
ZlB0cjxTVkdWYWx1ZT4+LgorIAorICAgICAgICAtLSBJdCBtYWtlcyBhbGwgdGhlIFNWRyBsaXN0
IHByb3BlcnR5IGNsYXNzZXMgYmUgZGVyaXZlZCBmcm9tIFNWR1ZhbHVlTGlzdC4KKworICAgICAg
ICAtLSBJdCBtYW5hZ2VzIGFkZGluZyBhIFJlZlB0cjxTVkdWYWx1ZT4gdG8gdGhlIGxpc3QgcHJv
cGVydHkgdmVjdG9yIGZyb20KKyAgICAgICAgICAgdGhlIHVuZGVybGF5aW5nIGl0ZW0gZGF0YS4K
KworICAgICAgICAtLSBBIHJlZmVyZW5jZSB0byB0aGUgdW5kZXJsYXlpbmcgaXRlbSBkYXRhIGlz
IG9idGFpbmVkIGZyb20gdGhlIFJlZlB0cjxTVkdWYWx1ZT4KKyAgICAgICAgICAgYW5kIHBhc3Nl
ZCB0byB0aGUgd3JhcHBlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWxsIHRoZSBTVkcgbGlzdCBwcm9wZXJ0aWVzIGhlYWRlciAKKyAgICAgICAgZmls
ZXMgYXJlIHByaXZhdGUuIFNWR1ZhbHVlLmggYW5kIFNWR1ZhbHVlTGlzdC5oIGFuZCBhbGwgdGhl
IGZpbGVzIHRoZXkKKyAgICAgICAgaW5jbHVkZSBoYXZlIHRvIGJlIHByaXZhdGUgYXMgd2VsbC4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBhdGhGcm9tUG9seWdvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEZyb21Q
b2x5bGluZUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXNCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUNoYXJhY3RlckRh
dGEpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmFk
ZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRU
eXBlLmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoTGlzdFZhbHVlczo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlz
dFZhbHVlczo6dmFsdWVBc1N0cmluZyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExp
c3RWYWx1ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdOdW1iZXJMaXN0VmFsdWVzOjpwYXJzZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdOdW1iZXJMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5oOgorICAgICAgICAqIHN2Zy9TVkdQYXJzZXJVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRzTGlzdEZyb21TVkdEYXRhKToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdM
aXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUb0hvcml6b250YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21v
b3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJjVG8pOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VTVkdTZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdFNvdXJjZTo6bmV4dENvbW1hbmQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTGlzdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlz
dFZhbHVlczo6Y2xlYXJJdGVtQ29udGV4dEFuZFJvbGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXRo
U2VnTGlzdFZhbHVlcy5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgor
ICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9pbnRMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHUG9pbnRMaXN0VmFsdWVzLmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6cGFyc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZyBjb25zdCk6CisgICAgICAg
ICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAq
IHN2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6IAorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNv
bnNvbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNv
bmNhdGVuYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1
ZXM6OnZhbHVlQXNTdHJpbmcgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzLmg6IFJlc29sdmUgYSBjeWNsaWMgaGVhZGVyIGZpbGUgcmVmZXJlbmNlcy4KKyAgICAg
ICAgKiBzdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1RyYW5zZm9ybVZhbHVlPjo6aW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybVZhbHVlPjo6dG9TdHJpbmcpOgor
ICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcv
U1ZHVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVmFsdWU6OmlzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zh
bHVlOjphcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZTo6YXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVmFsdWU6OlNWR1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zh
bHVlOjp0b1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR1ZhbHVlTGlzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6U1ZHVmFsdWVMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1ZhbHVlTGlzdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zh
bHVlTGlzdDo6b3BlcmF0b3IgVmVjdG9yPFByb3BlcnR5VHlwZT4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpyZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFs
dWVMaXN0OjphdFJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZUxp
c3Q6OmF0UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6Zmlyc3RS
ZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpmaXJzdFJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZUxpc3Q6Omxhc3RSZWZlcmVuY2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpsYXN0UmVmZXJlbmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6ZGVhZnVsdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1
ZUxpc3Q6OmRlZXBDb3B5IGNvbnN0KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5TWFjcm9zLmg6IFdlIG5lZWQgdG8gaW5jbHVkZSBTVkdWYWx1ZS5oCisgICAg
ICAgIGZyb20gYSBXZWJDb3JlIHByaXZhdGUgaGVhZGVyIGZpbGUgc28gV2ViS2l0IGFuZCBXZWJL
aXRMZWdhY3kgY2FuIGluc3RhbnRpYXRlCisgICAgICAgIHRoZSBsaXN0IHByb3BlcnRpZXMgY2xh
c3NlcyBrbm93aW5nIHRoZSBzaXplIG9mIHRoZSBTVkdWYWx1ZS4KKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9w
ZXJ0eTo6aW5pdGlhbGl6ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVy
dHk6OmluaXRpYWxpemVWYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
aXN0UHJvcGVydHk6OmdldEl0ZW1WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFBy
b3BlcnR5OjpnZXRJdGVtVmFsdWVzQW5kV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGlzdFByb3BlcnR5OjppbnNlcnRJdGVtQmVmb3JlVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xpc3RQcm9wZXJ0eTo6aW5zZXJ0SXRlbUJlZm9yZVZhbHVlc0FuZFdyYXBwZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6cmVwbGFjZUl0ZW1WYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjpyZXBsYWNlSXRlbVZhbHVlc0FuZFdyYXBw
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6cmVtb3ZlSXRlbVZhbHVl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OnJlbW92ZUl0ZW1WYWx1ZXNB
bmRXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OmFwcGVuZEl0
ZW1WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjphcHBlbmRJdGVt
VmFsdWVzQW5kV3JhcHBlcnMpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0
eVRlYXJPZmY6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVRyYWl0cy5oOiBSZW1vdmUgY3ljbGljIHJlZmVyZW5jZXMuCisgICAgICAgIFNWR1BhdGhT
ZWdMaXN0VmFsdWVzLmggbmVlZHMgdG8gaW5jbHVkZSBTVkdMaXN0UHJvcGVydHkuaCBvbmx5IGZv
ciB0aGUKKyAgICAgICAgZGVmaW5pdGlvbiBvZiBMaXN0TW9kaWZpY2F0aW9uLgorCiAyMDE4LTA0
LTE2ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBb
V2luQ2Fpcm9dIE1lZGlhIGVsZW1lbnRzIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY5MSw2ICsxNjkxLDE1IEBACiAJ
CTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMg
LyogSW1hZ2VGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU1QTMzNkY3MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBMzM2RjYxRDgyMDlG
NDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi87IH07CiAJCTU1QTMzNkY5MUQ4MjFFM0MwMDIy
QzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2lu
Z1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTVBNDUwNEUyMDg1MjNBODAwM0NEMEQwIC8qIFNWR1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBNDUwNEEyMDg1MDI4OTAwM0NE
MEQwIC8qIFNWR1ZhbHVlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTU1QTQ1MDRGMjA4NTJCOEIwMDNDRDBEMCAvKiBTVkdWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUxMzdCMzQyMDND
RUI3MTAwMDEwMDRCIC8qIFNWR1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVBNDUwNTAyMDg1MkJBQjAwM0NEMEQwIC8qIFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMzlDMzZEMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVB
NDUwNTEyMDg1MkJDMDAwM0NEMEQwIC8qIFNWR1BhdGhTZWdMaXN0VmFsdWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5QzM2RjFEREJBM0UwMDBG
RUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0NTA1MjIwODUyQkNGMDAzQ0QwRDAgLyogU1ZH
TnVtYmVyTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MzOUMzNjkxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0
NTA1MzIwODUyQzE4MDAzQ0QwRDAgLyogU1ZHQW5nbGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RjIyNDMxREQzQjNCOTAwRTkyREEzIC8q
IFNWR0FuZ2xlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1NUE0NTA1NDIwODUyQzQ2MDAzQ0QwRDAgLyogU1ZHTWFya2VyVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MTM3QjJDMjAz
NzlFNTUwMDAxMDA0QiAvKiBTVkdNYXJrZXJUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1QTQ1MDU1MjA4NTJENDcwMDNDRDBEMCAvKiBT
VkdQb2ludExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDMzlDMzZCMUREQjg3MUMwMEZFRkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0
NTA1NjIwODUyRDdEMDAzQ0QwRDAgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhGMjI0NjFERDNE
MUM1MDBFOTJEQTMgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBRjE0RTYxRUFBQzU5QjAw
MjZFRUFBIC8qIFVUSVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NUFGMTRFNDFFQUFDNTlCMDAyNkVFQUEgLyogVVRJUmVnaXN0cnkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUVDOTU5
OTIwNkFBN0EwMDA3REQwQTkgLyogUGFpbnRGcmVxdWVuY3lUcmFja2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVDOTU5NzIwNjlDOTJEMDA3REQw
QTkgLyogUGFpbnRGcmVxdWVuY3lUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcwNDQwNUExRTUzOTM2MjAwMzU2NjAxIC8qIEpTQWVz
Q2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzA0NDA1OTFFNTM5MzYyMDAzNTY2MDEgLyogSlNBZXNDYmNDZmJQYXJhbXMuaCAqLzsg
fTsKQEAgLTE5OTcsNyArMjAwNiw3IEBACiAJCTcxNUFENzIwMjA1MDUxMzIwMEQ1OTJEQyAvKiBE
ZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzE1QUQ3MUQyMDUwNTEyNDAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzE1QUQ3MjEyMDUwNTEzRjAwRDU5MkRDIC8qIENTU1RyYW5zaXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMjNDMTg2MjA0NzM5QkEwMDc4OTM5
MiAvKiBDU1NUcmFuc2l0aW9uLmggKi87IH07CiAJCTcxQTFCNjA4MURFRTVBRDcwMDczQkNGQiAv
KiBtb2Rlcm4tbWVkaWEtY29udHJvbHMtbG9jYWxpemVkLXN0cmluZ3MuanMgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQTFCNjA2MURFRTVBODIwMDcz
QkNGQiAvKiBtb2Rlcm4tbWVkaWEtY29udHJvbHMtbG9jYWxpemVkLXN0cmluZ3MuanMgKi87IH07
Ci0JCTcxQTU3REYyMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUE1N0RGMDE1NEJFMjVD
MDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oICovOyB9OworCQk3MUE1N0RGMjE1NEJFMjVD
MDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhV
dGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MUIyODQyNzIwM0NFQzRDMDAzNkFBNUQgLyogSlNDU1NBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjI4NDI2MjAzQ0VDMEQw
MDM2QUE1RCAvKiBKU0NTU0FuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcxQzI5RTMyMjAzQ0U3ODEwMDhGMzZEMiAvKiBDU1NBbmlt
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
QzI5RTMwMjAzQ0U3NkIwMDhGMzZEMiAvKiBDU1NBbmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MUM5MTYwODFEMTQ4M0EzMDBBQ0E0
N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjEwMSw3ICsyMTEwLDcgQEAKIAkJN0MzMEQ5ODYxRjgx
NUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzBEOTgxMUY4MTVBQzEwMDI2ODM1NiAvKiBKU0Fib3J0
U2lnbmFsLmggKi87IH07CiAJCTdDMzMwQTAyMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDMzMwQTAxMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0NvbnRleHQzREF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QzMzMEEwODFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMwQTA2MURGOUY5
NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovOyB9OwotCQk3QzM5QzM2NTFEREE4
NjUyMDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjMxRERBODY0OTAwRkVGQjI5IC8qIFNW
R0xlbmd0aExpc3RWYWx1ZXMuaCAqLzsgfTsKKwkJN0MzOUMzNjUxRERBODY1MjAwRkVGQjI5IC8q
IFNWR0xlbmd0aExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMzlDMzYzMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFs
dWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0MzOUMzNzcxRERCRTE3MDAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzY3MUREQjgyQ0Yw
MEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQTkxRTYxQzk2M0I4ODAwRDFBN0UzIC8qIENs
aXBib2FyZEFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1Bv
bGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NkYxOTA4NzU3
QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CkBAIC0yMjM0LDggKzIy
NDMsOCBAQAogCQk3Q0UxOTE3QjFGMkFCRTcxMDAyNzJGNzggLyogSlNGZXRjaFJlcXVlc3RSZWRp
cmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NF
MTkxNkExRjJBQjcwNjAwMjcyRjc4IC8qIEpTRmV0Y2hSZXF1ZXN0UmVkaXJlY3QuaCAqLzsgfTsK
IAkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNWR1BvaW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U1OEQ0OTFERDY0QTVCMDAxMjg1NTIg
LyogU1ZHUG9pbnQuaCAqLzsgfTsKIAkJN0NFNThENTAxREQ2OUExRTAwMTI4NTUyIC8qIFNWR051
bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NF
NThENEYxREQ2OUExRTAwMTI4NTUyIC8qIFNWR051bWJlci5oICovOyB9OwotCQk3Q0U1OEQ1ODFE
RDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTU4RDU2MUREN0Q5NkQwMDEyODU1MiAvKiBT
VkdUcmFuc2Zvcm1WYWx1ZS5oICovOyB9OwotCQk3Q0U1OEQ1QzFERDdFQzlDMDAxMjg1NTIgLyog
U1ZHTWF0cml4VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDRTU4RDVCMUREN0VDOUMwMDEyODU1MiAvKiBTVkdNYXRyaXhWYWx1ZS5oICovOyB9
OworCQk3Q0U1OEQ1ODFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTU4RDU2MUREN0Q5
NkQwMDEyODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDRTU4RDVDMUREN0VDOUMwMDEyODU1MiAvKiBT
VkdNYXRyaXhWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NFNThENUIxREQ3RUM5QzAwMTI4NTUyIC8qIFNWR01hdHJpeFZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NFNjgzNDQxOTIx
NDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNjgzNDIxOTIxNDNBODAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwICovOyB9OwogCQk3Q0U2
ODM0NTE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNjgzNDMxOTIx
NDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0U2ODM0NzE5MjE4MjE1
MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2ODM0NjE5MjE4MjE1MDBG
NEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzgsNyArMjM4Nyw3IEBA
CiAJCTgzRkU3Q0E3MURBOUYxQTcwMDM3MjM3QyAvKiBVSUV2ZW50SW5pdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGRTdDQTQxREE5RjE2NjAwMzcy
MzdDIC8qIFVJRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODNGRTdDQTgxREE5RjFCNjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJ
bml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZF
N0NBMzFEQTlGMTY1MDAzNzIzN0MgLyogRXZlbnRNb2RpZmllckluaXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0ZFOTAyNzFFMzA3QzMwMDAz
RTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZFOTAyNjFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFu
Y2VNb25pdG9yLmggKi87IH07Ci0JCTg0MTlEMkE3MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRo
Qnl0ZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQxOUQyQTQxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtLmggKi87IH07
CisJCTg0MTlEMkE3MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQTQxMjBEOTJE
MDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQxOUQyQTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNW
R1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODQxOUQyQTYxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3Ry
ZWFtQnVpbGRlci5oICovOyB9OwogCQk4NDE5RDJBRDEyMEQ5MkZDMDAxNDFGOEYgLyogU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0MTlEMkFCMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNv
dXJjZS5oICovOyB9OwogCQk4NDE5RDJCQTEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmlu
Z0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0MTlEMkI4MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5oICovOyB9
OwpAQCAtMjQwNSw3ICsyNDE0LDcgQEAKIAkJODQ3MzBEOTMxMjQ4RjBCMzAwRDNBOUM5IC8qIFNw
b3RMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODQ3MzBENzYxMjQ4RjBCMzAwRDNBOUM5IC8qIFNwb3RMaWdodFNvdXJjZS5oICovOyB9
OwogCQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDc2QzlFNDEx
REY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggKi87IH07CiAJCTg0NzZD
OUVCMTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRoQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ3NkM5RTgxMURGNkEyOTAwNTU1QjAyIC8q
IFNWR1BhdGhCdWlsZGVyLmggKi87IH07Ci0JCTg0NzZDOUVDMTFERjZBMjkwMDU1NUIwMiAvKiBT
VkdQYXRoQ29uc3VtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg0NzZDOUU5MTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRoQ29uc3VtZXIuaCAqLzsg
fTsKKwkJODQ3NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ3NkM5RTkxMURGNkEy
OTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg0NzZDOUYwMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQ
YXRoUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NDc2QzlFRTExREY2QTU4MDA1NTVCMDIgLyogU1ZHUGF0aFBhcnNlci5oICovOyB9OwogCQk4
NDgwMTk1NTEwOEJBRkIzMDBDQjJCMUYgLyogRkVHYXVzc2lhbkJsdXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0ODAxOTUzMTA4QkFGQjMwMENCMkIx
RiAvKiBGRUdhdXNzaWFuQmx1ci5oICovOyB9OwogCQk4NDgyQjc0NjExOThDMzU0MDBCRkIwMDUg
LyogSGFzaENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNDQyQkJGODExOTRDOUQzMDBENDk0NjkgLyogSGFzaENoYW5nZUV2ZW50Lmgg
Ki87IH07CkBAIC0zMzU3LDcgKzMzNjYsNyBAQAogCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc4QkIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyN0E1NzBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhDMTBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHUGFyc2VyVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQjIyMjdBNTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhD
MzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBNUIw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEM1MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRo
U2VnLmggKi87IH07CisJCUIyMjI3QTVCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhDNTBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3QTVFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQ
YXRoU2VnQXJjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzhDODBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0FyYy5oICovOyB9OwogCQlC
MjIyN0E2MjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4Q0MwRDAwQkYyMDAw
NzFCNzgyIC8qIFNWR1BhdGhTZWdDbG9zZVBhdGguaCAqLzsgfTsKIAkJQjIyMjdBNjUwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OENGMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdQYXRoU2VnQ3VydmV0b0N1YmljLmggKi87IH07CkBAIC04Mjc3LDYgKzgyODYsNyBAQAogCQk1
NTk3RkNDQjIwNzZDMDY4MDBEMzVCQjAgLyogR2x5cGhEaXNwbGF5TGlzdENhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoRGlzcGxheUxpc3RDYWNoZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3
IC8qIEltYWdlQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QTQ1
MDRBMjA4NTAyODkwMDNDRDBEMCAvKiBTVkdWYWx1ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1QUYxNEUzMUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVVElSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1QUYxNEU0MUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVVElSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUQ0MDhGNzFB
N0M2MzE4MDBDNzg0NTAgLyogU1ZHSW1hZ2VDbGllbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjMxMTQsNiArMjMxMjQsNyBAQAogCQkJCUIyMjI3OTU3MEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdVc2VFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5NTgwRDAwQkYyMTAwNzFCNzgyIC8qIFNW
R1VzZUVsZW1lbnQuaWRsICovLAogCQkJCTU1MTM3QjM0MjAzQ0VCNzEwMDAxMDA0QiAvKiBTVkdW
YWx1ZS5oICovLAorCQkJCTU1QTQ1MDRBMjA4NTAyODkwMDNDRDBEMCAvKiBTVkdWYWx1ZUxpc3Qu
aCAqLywKIAkJCQlCMjIyNzk1OTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVmlld0VsZW1lbnQuY3Bw
ICovLAogCQkJCUIyMjI3OTVBMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5oICov
LAogCQkJCUIyMjI3OTVCMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5pZGwgKi8s
CkBAIC0zMDAyMyw2ICszMDAzNCw3IEBACiAJCQkJNjU2NTNGMkUwRDk3MjdEMjAwQ0E5NzIzIC8q
IFNWR0FsdEdseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyQjgxM0NBOUE2
OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTVBNDUwNTMyMDg1MkMxODAwM0NEMEQwIC8qIFNWR0FuZ2xlVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OTdBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODdCODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZH
QW5pbWF0ZWRBbmdsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1Nzk3MDkxMjc4Mzk0QzAwQThF
QzVGIC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDEzNyw2ICsz
MDE0OSw3IEBACiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RUUxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtl
ckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTQ0MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdNYXJrZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUE0NTA1NDIwODUyQzQ2MDAz
Q0QwRDAgLyogU1ZHTWFya2VyVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTQ3MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgw
NkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDhDQTNENDQxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzAxNDYsNiArMzAxNTksNyBAQAogCQkJCUIyMjI3QTRFMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdNUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDUwMURENjlB
MUUwMDEyODU1MiAvKiBTVkdOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTUxMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUE0
NTA1MjIwODUyQkNGMDAzQ0QwRDAgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBNTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNp
bmdFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRDNjc4NEQxMjE0ODE0NzAwQTkyOTAyIC8q
IFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMTg0LDYgKzMwMTk4LDcgQEAK
IAkJCQlCMjIyN0E4MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0NzZDOUU2MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0QjZCOTc4MTIwRjEzRTUwMEI4RUZBRiAvKiBT
VkdQYXRoU2VnTGlzdFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTVBNDUwNTEyMDg1MkJD
MDAwM0NEMEQwIC8qIFNWR1BhdGhTZWdMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0MxRDQzNTE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ01vdmV0b0Ficy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODNDMUQ0MzYxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhTZWdNb3ZldG9S
ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MkRFNDJEMTI5MjYyMTYwMEQ5MjNERiAvKiBTVkdQ
YXRoU2VnV2l0aENvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzAxOTUsMTAgKzMwMjEwLDEy
IEBACiAJCQkJQjIyMjdBODgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0U1OEQ0QTFERDY0QTVCMDAxMjg1NTIgLyogU1ZHUG9pbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QThDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2lu
dExpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1QTQ1MDU1MjA4NTJENDcwMDNDRDBEMCAvKiBT
VkdQb2ludExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QThGMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOTEw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0E5NDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpby5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTVBNDUwNTYyMDg1MkQ3RDAwM0NEMEQwIC8q
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBF
MEExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
ODFERDQ5QzEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODhBMEUwQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmgg
aW4gSGVhZGVycyAqLywKQEAgLTMwMjUwLDYgKzMwMjY3LDcgQEAKIAkJCQlCMjIyN0FEQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBREQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FERjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTVBNDUwNTAyMDg1MkJBQjAwM0NEMEQwIC8qIFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDU4MUREN0Q5NkQwMDEy
ODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTIw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyN0FFNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTMwMjU3LDYgKzMwMjc1LDggQEAKIAkJCQkzN0M3MzhFRDFFREJENUJDMDAzRjJCMEIg
LyogU1ZHVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUVBMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdVUklSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QUVEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdVc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NUE0NTA0RjIwODUyQjhCMDAzQ0QwRDAgLyogU1ZHVmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1QTQ1MDRFMjA4NTIzQTgwMDNDRDBEMCAvKiBTVkdWYWx1ZUxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3QUYwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ZpZXdTcGVj
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDg1MjI4QjExOTAxNzNDMDA2RURDN0YgLyogU1ZHVktl
cm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUGF0aERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA1LDEx
ICsxMDYsMTEgQEAgc3RhdGljIFBhdGggcGF0aEZyb21Qb2x5Z29uRWxlbWVudChTVkdFbAogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGgubW92ZVRvKHBvaW50
cy5maXJzdCgpKTsKKyAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3RSZWZlcmVuY2UoKSk7CiAK
ICAgICB1bnNpZ25lZCBzaXplID0gcG9pbnRzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXQoaSkp
OworICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXRSZWZlcmVuY2UoaSkpOwogCiAgICAg
cGF0aC5jbG9zZVN1YnBhdGgoKTsKICAgICByZXR1cm4gcGF0aDsKQEAgLTEyMiwxMSArMTIzLDEx
IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUG9seWxpbmVFbGVtZW50KFNWR0UKICAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3Qo
KSk7CisgICAgcGF0aC5tb3ZlVG8ocG9pbnRzLmZpcnN0UmVmZXJlbmNlKCkpOwogCiAgICAgdW5z
aWduZWQgc2l6ZSA9IHBvaW50cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgcGF0aC5hZGRMaW5lVG8ocG9pbnRzLmF0KGkpKTsKKyAgICAg
ICAgcGF0aC5hZGRMaW5lVG8ocG9pbnRzLmF0UmVmZXJlbmNlKGkpKTsKICAgICByZXR1cm4gcGF0
aDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAkocmV2aXNpb24gMjMw
NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC0yMDExLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2MywxNSArMTY0LDE1IEBAIHZv
aWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWkKIHN0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVDaGFyYWN0ZXJEYXRhKHVuc2lnbmVkIGksIGZsb2F0JiBsYXN0Um90YXRpb24sIFNW
R0NoYXJhY3RlckRhdGEmIGRhdGEsIGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGxlbmd0aENvbnRl
eHQsIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHhMaXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0
VmFsdWVzKiB5TGlzdCwgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHhMaXN0LCBjb25zdCBT
VkdMZW5ndGhMaXN0VmFsdWVzKiBkeUxpc3QsIGNvbnN0IFNWR051bWJlckxpc3RWYWx1ZXMqIHJv
dGF0ZUxpc3QpCiB7CiAgICAgaWYgKHhMaXN0KQotICAgICAgICBkYXRhLnggPSB4TGlzdC0+YXQo
aSkudmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAgICAgIGRhdGEueCA9IHhMaXN0LT5hdFJlZmVy
ZW5jZShpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKICAgICBpZiAoeUxpc3QpCi0gICAgICAgIGRh
dGEueSA9IHlMaXN0LT5hdChpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgZGF0YS55
ID0geUxpc3QtPmF0UmVmZXJlbmNlKGkpLnZhbHVlKGxlbmd0aENvbnRleHQpOwogICAgIGlmIChk
eExpc3QpCi0gICAgICAgIGRhdGEuZHggPSBkeExpc3QtPmF0KGkpLnZhbHVlKGxlbmd0aENvbnRl
eHQpOworICAgICAgICBkYXRhLmR4ID0gZHhMaXN0LT5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5n
dGhDb250ZXh0KTsKICAgICBpZiAoZHlMaXN0KQotICAgICAgICBkYXRhLmR5ID0gZHlMaXN0LT5h
dChpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgZGF0YS5keSA9IGR5TGlzdC0+YXRS
ZWZlcmVuY2UoaSkudmFsdWUobGVuZ3RoQ29udGV4dCk7CiAgICAgaWYgKHJvdGF0ZUxpc3QpIHsK
LSAgICAgICAgZGF0YS5yb3RhdGUgPSByb3RhdGVMaXN0LT5hdChpKTsKKyAgICAgICAgZGF0YS5y
b3RhdGUgPSByb3RhdGVMaXN0LT5hdFJlZmVyZW5jZShpKTsKICAgICAgICAgbGFzdFJvdGF0aW9u
ID0gZGF0YS5yb3RhdGU7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkTGVuZ3RoTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NSw3ICs3
Niw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEEKIAogICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChtX2NvbnRleHRFbGVtZW50KTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJvbUxlbmd0aExpc3RTaXplOyArK2kpCi0gICAgICAgIHRv
TGVuZ3RoTGlzdFtpXS5zZXRWYWx1ZSh0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4
dCkgKyBmcm9tTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4
dCk7CisgICAgICAgIHRvTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS5zZXRWYWx1ZSh0b0xlbmd0
aExpc3QuYXRSZWZlcmVuY2UoaSkudmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tTGVuZ3RoTGlz
dC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7CiB9
CiAKIHN0YXRpYyBTVkdMZW5ndGhMaXN0VmFsdWVzIHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmco
U1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCkBAIC0xMDgsMTggKzEwOSwxOCBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yOjpjYWxjCiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQobV9jb250ZXh0
RWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvTGVuZ3RoTGlzdFNpemU7
ICsraSkgewotICAgICAgICBmbG9hdCBhbmltYXRlZE51bWJlciA9IGFuaW1hdGVkTGVuZ3RoTGlz
dFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KTsKLSAgICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlw
ZSA9IHRvTGVuZ3RoTGlzdFtpXS51bml0VHlwZSgpOworICAgICAgICBmbG9hdCBhbmltYXRlZE51
bWJlciA9IGFuaW1hdGVkTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250
ZXh0KTsKKyAgICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSA9IHRvTGVuZ3RoTGlzdC5hdFJl
ZmVyZW5jZShpKS51bml0VHlwZSgpOwogICAgICAgICBmbG9hdCBlZmZlY3RpdmVGcm9tID0gMDsK
ICAgICAgICAgaWYgKGZyb21MZW5ndGhMaXN0U2l6ZSkgewogICAgICAgICAgICAgaWYgKHBlcmNl
bnRhZ2UgPCAwLjUpCi0gICAgICAgICAgICAgICAgdW5pdFR5cGUgPSBmcm9tTGVuZ3RoTGlzdFtp
XS51bml0VHlwZSgpOwotICAgICAgICAgICAgZWZmZWN0aXZlRnJvbSA9IGZyb21MZW5ndGhMaXN0
W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgICAgICAgICAgICAgIHVuaXRUeXBlID0gZnJv
bUxlbmd0aExpc3QuYXRSZWZlcmVuY2UoaSkudW5pdFR5cGUoKTsKKyAgICAgICAgICAgIGVmZmVj
dGl2ZUZyb20gPSBmcm9tTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250
ZXh0KTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBlZmZlY3RpdmVUb0F0RW5kID0gaSA8IHRv
QXRFbmRPZkR1cmF0aW9uTGlzdFNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3RbaV0u
dmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOworICAgICAgICBmbG9hdCBlZmZlY3RpdmVUb0F0RW5k
ID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uTGlzdFNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0
aExpc3QuYXRSZWZlcmVuY2UoaSkudmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOwogCi0gICAgICAg
IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJl
cGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLCB0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29u
dGV4dCksIGVmZmVjdGl2ZVRvQXRFbmQsIGFuaW1hdGVkTnVtYmVyKTsKLSAgICAgICAgYW5pbWF0
ZWRMZW5ndGhMaXN0W2ldLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBt
X2xlbmd0aE1vZGUsIHVuaXRUeXBlKTsKKyAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmlt
YXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20s
IHRvTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgZWZmZWN0
aXZlVG9BdEVuZCwgYW5pbWF0ZWROdW1iZXIpOworICAgICAgICBhbmltYXRlZExlbmd0aExpc3Qu
YXRSZWZlcmVuY2UoaSkuc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgYW5pbWF0ZWROdW1iZXIsIG1f
bGVuZ3RoTW9kZSwgdW5pdFR5cGUpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDIzMDY0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmFk
ZEEKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyb21O
dW1iZXJMaXN0U2l6ZTsgKytpKQotICAgICAgICB0b051bWJlckxpc3RbaV0gKz0gZnJvbU51bWJl
ckxpc3RbaV07CisgICAgICAgIHRvTnVtYmVyTGlzdC5hdFJlZmVyZW5jZShpKSArPSBmcm9tTnVt
YmVyTGlzdC5hdFJlZmVyZW5jZShpKTsKIH0KIAogdm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRv
LCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFu
aW1hdGVkKQpAQCAtOTMsOSArOTMsOSBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1h
dG9yOjpjYWxjCiAgICAgdW5zaWduZWQgdG9BdEVuZE9mRHVyYXRpb25TaXplID0gdG9BdEVuZE9m
RHVyYXRpb25OdW1iZXJMaXN0LnNpemUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b051bWJlckxpc3RTaXplOyArK2kpIHsKLSAgICAgICAgZmxvYXQgZWZmZWN0aXZlRnJvbSA9
IGZyb21OdW1iZXJMaXN0U2l6ZSA/IGZyb21OdW1iZXJMaXN0W2ldIDogMDsKLSAgICAgICAgZmxv
YXQgZWZmZWN0aXZlVG9BdEVuZCA9IGkgPCB0b0F0RW5kT2ZEdXJhdGlvblNpemUgPyB0b0F0RW5k
T2ZEdXJhdGlvbk51bWJlckxpc3RbaV0gOiAwOwotICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQt
PmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZl
RnJvbSwgdG9OdW1iZXJMaXN0W2ldLCBlZmZlY3RpdmVUb0F0RW5kLCBhbmltYXRlZE51bWJlckxp
c3RbaV0pOworICAgICAgICBmbG9hdCBlZmZlY3RpdmVGcm9tID0gZnJvbU51bWJlckxpc3RTaXpl
ID8gZnJvbU51bWJlckxpc3QuYXRSZWZlcmVuY2UoaSkgOiAwOworICAgICAgICBmbG9hdCBlZmZl
Y3RpdmVUb0F0RW5kID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uU2l6ZSA/IHRvQXRFbmRPZkR1cmF0
aW9uTnVtYmVyTGlzdC5hdFJlZmVyZW5jZShpKSA6IDA7CisgICAgICAgIG1fYW5pbWF0aW9uRWxl
bWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBlZmZl
Y3RpdmVGcm9tLCB0b051bWJlckxpc3QuYXRSZWZlcmVuY2UoaSksIGVmZmVjdGl2ZVRvQXRFbmQs
IGFuaW1hdGVkTnVtYmVyTGlzdC5hdFJlZmVyZW5jZShpKSk7CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAJKHJldmlzaW9uIDIz
MDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtNzUsNyArNzYsNyBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0
QW5pbWF0b3I6OmFkZEFuCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmcm9tUG9pbnRMaXN0U2l6ZTsgKytpKQotICAgICAgICB0b1BvaW50TGlzdFtpXSAr
PSBmcm9tUG9pbnRMaXN0W2ldOworICAgICAgICB0b1BvaW50TGlzdC5hdFJlZmVyZW5jZShpKSAr
PSBmcm9tUG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVkUG9p
bnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRU
eXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvbiwgU1ZHQW5pbWF0ZWRU
eXBlKiBhbmltYXRlZCkKQEAgLTk2LDE0ICs5NywxNCBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3I6OmNhbGN1CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvUG9pbnRM
aXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIEZsb2F0UG9pbnQgZWZmZWN0aXZlRnJvbTsKICAgICAg
ICAgaWYgKGZyb21Qb2ludExpc3RTaXplKQotICAgICAgICAgICAgZWZmZWN0aXZlRnJvbSA9IGZy
b21Qb2ludExpc3RbaV07Ci0gICAgICAgIEZsb2F0UG9pbnQgZWZmZWN0aXZlVG9BdEVuZCA9IGkg
PCB0b0F0RW5kT2ZEdXJhdGlvblNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvblBvaW50TGlzdFtpXSA6
IEZsb2F0UG9pbnQoKTsKKyAgICAgICAgICAgIGVmZmVjdGl2ZUZyb20gPSBmcm9tUG9pbnRMaXN0
LmF0UmVmZXJlbmNlKGkpOworICAgICAgICBGbG9hdFBvaW50IGVmZmVjdGl2ZVRvQXRFbmQgPSBp
IDwgdG9BdEVuZE9mRHVyYXRpb25TaXplID8gdG9BdEVuZE9mRHVyYXRpb25Qb2ludExpc3QuYXRS
ZWZlcmVuY2UoaSkgOiBGbG9hdFBvaW50KCk7CiAKLSAgICAgICAgZmxvYXQgYW5pbWF0ZWRYID0g
YW5pbWF0ZWRQb2ludExpc3RbaV0ueCgpOwotICAgICAgICBmbG9hdCBhbmltYXRlZFkgPSBhbmlt
YXRlZFBvaW50TGlzdFtpXS55KCk7Ci0gICAgICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLngo
KSwgdG9Qb2ludExpc3RbaV0ueCgpLCBlZmZlY3RpdmVUb0F0RW5kLngoKSwgYW5pbWF0ZWRYKTsK
LSAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2Vu
dGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20ueSgpLCB0b1BvaW50TGlzdFtpXS55KCks
IGVmZmVjdGl2ZVRvQXRFbmQueSgpLCBhbmltYXRlZFkpOwotICAgICAgICBhbmltYXRlZFBvaW50
TGlzdFtpXSA9IEZsb2F0UG9pbnQoYW5pbWF0ZWRYLCBhbmltYXRlZFkpOworICAgICAgICBmbG9h
dCBhbmltYXRlZFggPSBhbmltYXRlZFBvaW50TGlzdC5hdFJlZmVyZW5jZShpKS54KCk7CisgICAg
ICAgIGZsb2F0IGFuaW1hdGVkWSA9IGFuaW1hdGVkUG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkpLnko
KTsKKyAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVy
Y2VudGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20ueCgpLCB0b1BvaW50TGlzdC5hdFJl
ZmVyZW5jZShpKS54KCksIGVmZmVjdGl2ZVRvQXRFbmQueCgpLCBhbmltYXRlZFgpOworICAgICAg
ICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCBy
ZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbS55KCksIHRvUG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkp
LnkoKSwgZWZmZWN0aXZlVG9BdEVuZC55KCksIGFuaW1hdGVkWSk7CisgICAgICAgIGFuaW1hdGVk
UG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkpID0gRmxvYXRQb2ludChhbmltYXRlZFgsIGFuaW1hdGVk
WSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC04
MSw4ICs4MSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmEKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGZyb21UcmFuc2Zvcm1MaXN0U2l6ZSA9PSAxKTsK
LSAgICBjb25zdCBhdXRvJiBmcm9tVHJhbnNmb3JtID0gZnJvbVRyYW5zZm9ybUxpc3RbMF07Ci0g
ICAgYXV0byYgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9ybUxpc3RbMF07CisgICAgY29uc3QgYXV0
byYgZnJvbVRyYW5zZm9ybSA9IGZyb21UcmFuc2Zvcm1MaXN0LmZpcnN0UmVmZXJlbmNlKCk7Cisg
ICAgYXV0byYgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9ybUxpc3QuZmlyc3RSZWZlcmVuY2UoKTsK
IAogICAgIEFTU0VSVChmcm9tVHJhbnNmb3JtLnR5cGUoKSA9PSB0b1RyYW5zZm9ybS50eXBlKCkp
OwogICAgIHRvVHJhbnNmb3JtID0gU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9y
bXMoZnJvbVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm0pOwpAQCAtMTA5LDE0ICsxMDksMTQgQEAgdm9p
ZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6YwogICAgICAgICBhbmltYXRlZFRy
YW5zZm9ybUxpc3QuY2xlYXIoKTsKIAogICAgIGF1dG8gZnJvbVRyYW5zZm9ybUxpc3RTaXplID0g
ZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgpOwotICAgIGNvbnN0IGF1dG8mIHRvVHJhbnNmb3JtID0g
dG9UcmFuc2Zvcm1MaXN0WzBdOwotICAgIGNvbnN0IGF1dG8gZWZmZWN0aXZlRnJvbSA9IGZyb21U
cmFuc2Zvcm1MaXN0U2l6ZSA/IGZyb21UcmFuc2Zvcm1MaXN0WzBdIDogU1ZHVHJhbnNmb3JtVmFs
dWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29uc3RydWN0WmVyb1Ry
YW5zZm9ybSk7CisgICAgY29uc3QgYXV0byYgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9ybUxpc3Qu
Zmlyc3RSZWZlcmVuY2UoKTsKKyAgICBjb25zdCBhdXRvIGVmZmVjdGl2ZUZyb20gPSBmcm9tVHJh
bnNmb3JtTGlzdFNpemUgPyBmcm9tVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpIDogU1ZH
VHJhbnNmb3JtVmFsdWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29u
c3RydWN0WmVyb1RyYW5zZm9ybSk7CiAgICAgYXV0byBjdXJyZW50VHJhbnNmb3JtID0gU1ZHVHJh
bnNmb3JtRGlzdGFuY2UoZWZmZWN0aXZlRnJvbSwgdG9UcmFuc2Zvcm0pLnNjYWxlZERpc3RhbmNl
KHBlcmNlbnRhZ2UpLmFkZFRvU1ZHVHJhbnNmb3JtKGVmZmVjdGl2ZUZyb20pOwogICAgIGlmICht
X2FuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11bGF0ZWQoKSAmJiByZXBlYXRDb3VudCkgewotICAg
ICAgICBjb25zdCBhdXRvIGVmZmVjdGl2ZVRvQXRFbmQgPSB0b0F0RW5kT2ZEdXJhdGlvblRyYW5z
Zm9ybUxpc3Quc2l6ZSgpID8gdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0WzBdIDogU1ZH
VHJhbnNmb3JtVmFsdWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29u
c3RydWN0WmVyb1RyYW5zZm9ybSk7Ci0gICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5hcHBl
bmQoU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMoY3VycmVudFRyYW5zZm9y
bSwgZWZmZWN0aXZlVG9BdEVuZCwgcmVwZWF0Q291bnQpKTsKKyAgICAgICAgY29uc3QgYXV0byBl
ZmZlY3RpdmVUb0F0RW5kID0gdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0LnNpemUoKSA/
IHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpIDogU1ZHVHJh
bnNmb3JtVmFsdWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29uc3Ry
dWN0WmVyb1RyYW5zZm9ybSk7CisgICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5hcHBlbmQo
U1ZHVmFsdWU6OmNyZWF0ZTxTVkdUcmFuc2Zvcm1WYWx1ZT4oU1ZHVHJhbnNmb3JtRGlzdGFuY2U6
OmFkZFNWR1RyYW5zZm9ybXMoY3VycmVudFRyYW5zZm9ybSwgZWZmZWN0aXZlVG9BdEVuZCwgcmVw
ZWF0Q291bnQpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5h
cHBlbmQoY3VycmVudFRyYW5zZm9ybSk7CisgICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5h
cHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxTVkdUcmFuc2Zvcm1WYWx1ZT4oY3VycmVudFRyYW5zZm9y
bSkpOwogfQogCiBmbG9hdCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKQpAQCAtMTM1LDEzICsxMzUsMTMgQEAgZmxvYXQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I6OgogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBBU1NFUlQoaXRlbXNDb3VudCA9
PSAxKTsKLSAgICBpZiAoZnJvbVRyYW5zZm9ybUxpc3RbMF0udHlwZSgpICE9IHRvVHJhbnNmb3Jt
TGlzdFswXS50eXBlKCkpCisgICAgaWYgKGZyb21UcmFuc2Zvcm1MaXN0LmZpcnN0UmVmZXJlbmNl
KCkudHlwZSgpICE9IHRvVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpLnR5cGUoKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZH
L2FuaW1hdGUuaHRtbCNjb21wbGV4RGlzdGFuY2VzCiAgICAgLy8gUGFjZWQgYW5pbWF0aW9ucyBh
c3N1bWUgYSBub3Rpb24gb2YgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdmFyaW91cyBhbmltYXRpb24g
dmFsdWVzIGRlZmluZWQgYnkgdGhlIOKAmHRv4oCZLCDigJhmcm9t4oCZLCDigJhieeKAmSBhbmQg
4oCYdmFsdWVz4oCZIGF0dHJpYnV0ZXMuCiAgICAgLy8gRGlzdGFuY2UgaXMgZGVmaW5lZCBvbmx5
IGZvciBzY2FsYXIgdHlwZXMgKHN1Y2ggYXMgPGxlbmd0aD4pLCBjb2xvcnMgYW5kIHRoZSBzdWJz
ZXQgb2YgdHJhbnNmb3JtYXRpb24gdHlwZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IOKAmGFuaW1h
dGVUcmFuc2Zvcm3igJkuCi0gICAgcmV0dXJuIFNWR1RyYW5zZm9ybURpc3RhbmNlKGZyb21UcmFu
c2Zvcm1MaXN0WzBdLCB0b1RyYW5zZm9ybUxpc3RbMF0pLmRpc3RhbmNlKCk7CisgICAgcmV0dXJu
IFNWR1RyYW5zZm9ybURpc3RhbmNlKGZyb21UcmFuc2Zvcm1MaXN0LmZpcnN0UmVmZXJlbmNlKCks
IHRvVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpKS5kaXN0YW5jZSgpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lvbiAyMzA2NDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR1ZhbHVl
VmFyaWFudCBtX3ZhbHVlOworICAgIFNWR0FuaW1hdGVkVHlwZVZhbHVlVmFyaWFudCBtX3ZhbHVl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzA2NDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBE
aXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4NCw4
ICsyODUsOCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4CiAgICAg
aWYgKGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6ZGl2aXNvckF0dHIpICYmICFkaXZpc29yVmFsdWUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVz
OjpkaXZpc29yQXR0cikpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrZXJuZWxNYXRy
aXhTaXplOyArK2kpCi0gICAgICAgICAgICBkaXZpc29yVmFsdWUgKz0ga2VybmVsTWF0cml4LmF0
KGkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDoga2VybmVsTWF0cml4KQorICAg
ICAgICAgICAgZGl2aXNvclZhbHVlICs9IHZhbHVlLT5hczxmbG9hdD4oKTsKICAgICAgICAgaWYg
KCFkaXZpc29yVmFsdWUpCiAgICAgICAgICAgICBkaXZpc29yVmFsdWUgPSAxOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9u
IDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQ2LDcgKzQ3LDcgQEAgdm9pZCBTVkdMZW5ndGhMaXN0VmFsdWVz
OjpwYXJzZShjb25zdCBTdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAobGVuZ3Ro
LnNldFZhbHVlQXNTdHJpbmcodmFsdWVTdHJpbmcpLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBhcHBlbmQobGVuZ3RoKTsKKyAgICAgICAgYXBwZW5kKFNWR1Zh
bHVlOjpjcmVhdGU8U1ZHTGVuZ3RoVmFsdWU+KGxlbmd0aCkpOwogICAgICAgICBza2lwT3B0aW9u
YWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCk7CiAgICAgfQogfQpAQCAtNjAsNyArNjEs
NyBAQCBTdHJpbmcgU1ZHTGVuZ3RoTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluCiAgICAgICAgIGlm
IChpID4gMCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoYXQoaSkudmFsdWVBc1N0cmluZygpKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXRSZWZlcmVuY2UoaSkudmFsdWVBc1N0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExp
c3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5oCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTQgKzIyLDE0IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCi0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlNWR1ZhbHVlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNWR0xlbmd0aDsKIGNsYXNzIFNWR0xlbmd0aExpc3Q7CiAKLWNsYXNz
IFNWR0xlbmd0aExpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR0xlbmd0aFZhbHVl
PiB7CitjbGFzcyBTVkdMZW5ndGhMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlTGlz
dDxTVkdMZW5ndGhWYWx1ZT4gewogcHVibGljOgogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSk7CiAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAJKHJl
dmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIzLDcgQEAKICNpbmNsdWRlICJTVkdOdW1i
ZXJMaXN0VmFsdWVzLmgiCiAKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJTVkdWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDEsNyBAQCB2b2lkIFNWR051bWJlckxpc3RW
YWx1ZXM6OnBhcnNlKGNvbnN0IFN0CiAgICAgd2hpbGUgKHB0ciA8IGVuZCkgewogICAgICAgICBp
ZiAoIXBhcnNlTnVtYmVyKHB0ciwgZW5kLCBudW1iZXIpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBhcHBlbmQobnVtYmVyKTsKKyAgICAgICAgYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8
ZmxvYXQ+KG51bWJlcikpOwogICAgIH0KIH0KIApAQCAtNTIsNyArNTQsNyBAQCBTdHJpbmcgU1ZH
TnVtYmVyTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluCiAgICAgICAgIGlmIChpID4gMCkKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIoYXQoaSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihhdFJlZmVyZW5jZShpKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTIxLDE0ICsyMiwxNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRy
YWl0cy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJTVkdWYWx1ZUxpc3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdOdW1iZXI7CiBjbGFzcyBTVkdO
dW1iZXJMaXN0OwogCi1jbGFzcyBTVkdOdW1iZXJMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZl
Y3RvcjxmbG9hdD4geworY2xhc3MgU1ZHTnVtYmVyTGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBT
VkdWYWx1ZUxpc3Q8ZmxvYXQ+IHsKIHB1YmxpYzoKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmlu
ZyYpOwogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4OSw3ICsyODksNyBAQCBib29sIHBvaW50c0xpc3RGcm9tU1ZHRGF0YShTVkdQb2ludExpc3RW
CiAgICAgICAgIH0KICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1ciwgZW5kKTsKIAot
ICAgICAgICBwb2ludHNMaXN0LmFwcGVuZChGbG9hdFBvaW50KHhQb3MsIHlQb3MpKTsKKyAgICAg
ICAgcG9pbnRzTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxGbG9hdFBvaW50PihGbG9hdFBv
aW50KHhQb3MsIHlQb3MpKSk7CiAgICAgfQogICAgIHJldHVybiBjdXIgPT0gZW5kICYmICFkZWxp
bVBhcnNlZDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2
aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBh
dGhTZWdMaXN0Q2hhbmdlZCgKICAgICBjYXNlIFBhdGhTZWdVbmFsdGVyZWRSb2xlOgogICAgICAg
ICBpZiAobGlzdE1vZGlmaWNhdGlvbiA9PSBMaXN0TW9kaWZpY2F0aW9uQXBwZW5kKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1fcGF0aFNlZ0xpc3QudmFsdWUuaXNFbXB0eSgpKTsKLSAgICAgICAg
ICAgIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcobV9wYXRoU2VnTGlzdC52
YWx1ZS5sYXN0KCkuY29weVJlZigpLCBtX3BhdGhCeXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5n
KTsKKyAgICAgICAgICAgIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcobV9w
YXRoU2VnTGlzdC52YWx1ZS5sYXN0UmVmZXJlbmNlKCkuY29weVJlZigpLCBtX3BhdGhCeXRlU3Ry
ZWFtLCBVbmFsdGVyZWRQYXJzaW5nKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBidWls
ZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0VmFsdWVzKG1fcGF0aFNlZ0xpc3Qu
dmFsdWUsIG1fcGF0aEJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICBtX2Nh
Y2hlZFBhdGggPSBzdGQ6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3QuaAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgICAg
IHVuc2lnbmVkIHNpemUgPSBtX3ZhbHVlcy0+c2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbV92YWx1ZXMt
PmF0KGkpKQorICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbV92YWx1ZXMtPmF0UmVmZXJlbmNlKGkp
KQogICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyMzA2NDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBUaGUg
S2FyYm9uIERldmVsb3BlcnMKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4YW5kZXIgS2VsbGV0
dCA8bHlwYW5vdkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
QEAgLTU4LDc4ICs1OCw3OCBAQCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OlNWR1BhdGhTZWdMaXN0
QnVpCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQm
IHRhcmdldFBvaW50LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAo
bW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVu
ZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnModGFyZ2V0UG9pbnQueCgp
LCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlz
dC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1l
bnQuY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50
LnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3Qu
YXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbCh0YXJnZXRQb2lu
dC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhT
ZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRo
RWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0
UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0
ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAg
ICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdM
aW5ldG9BYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUp
KTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8
U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0Ficyh0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0
aFNlZ0xpbmV0b1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2Vn
Um9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJl
ZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVs
KHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogfQog
CiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bGluZVRvSG9yaXpvbnRhbChmbG9hdCB4LCBQ
YXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3Jk
aW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0
ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzKHgsIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAg
ICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNl
Zz4+KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoeCwg
bV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5k
KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwoeCwgbV9w
YXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3Jl
YXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGlu
ZXRvSG9yaXpvbnRhbFJlbCh4LCBtX3BhdGhTZWdSb2xlKSkpOwogfQogCiB2b2lkIFNWR1BhdGhT
ZWdMaXN0QnVpbGRlcjo6bGluZVRvVmVydGljYWwoZmxvYXQgeSwgUGF0aENvb3JkaW5hdGVNb2Rl
IG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAg
bV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGluZXRv
VmVydGljYWxBYnMoeSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFw
cGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5j
cmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMoeSwgbV9wYXRoU2VnUm9sZSkpKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRl
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKHksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAg
bV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+
KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKHksIG1fcGF0
aFNlZ1JvbGUpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3Vi
aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNv
bnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsK
ICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdM
aXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMo
dGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCks
IHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRo
U2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+KG1fcGF0
aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyh0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9p
bnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xp
c3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCh0
YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwg
cG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhT
ZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRo
RWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2lu
dDIueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRl
cjo6Y3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxv
YXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlm
IChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBw
ZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyh0
YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwg
bV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6
Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBw
b2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2lu
dDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xp
c3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVt
ZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQueCgp
LCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUp
KSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljKGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBh
dGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRl
U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2lu
dC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAg
bV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+
KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnModGFyZ2V0
UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCksIG1fcGF0
aFNlZ1JvbGUpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3Bh
dGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKHRhcmdldFBvaW50
LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBtX3BhdGhTZWdS
b2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVm
UHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBw
b2ludDEueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6Y3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2lu
dCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVD
b29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5j
cmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyh0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0
LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVu
dC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyh0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1f
cGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNy
ZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCks
IG1fcGF0aFNlZ1JvbGUpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjphcmNU
byhmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9v
bCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0
ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAg
ICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdB
cmNBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxh
cmdlQXJjRmxhZywgc3dlZXBGbGFnLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNl
Z0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhF
bGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdBcmNBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2lu
dC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnLCBtX3BhdGhTZWdS
b2xlKSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxl
bWVudC5jcmVhdGVTVkdQYXRoU2VnQXJjUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZywgbV9wYXRoU2VnUm9s
ZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0
cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQXJjUmVsKHRhcmdl
dFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcs
IHN3ZWVwRmxhZywgbV9wYXRoU2VnUm9sZSkpKTsKIH0KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1
aWxkZXI6OmNsb3NlUGF0aCgpCiB7Ci0gICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxl
bWVudC5jcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKG1fcGF0aFNlZ1JvbGUpKTsKKyAgICBtX3Bh
dGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9w
YXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKG1fcGF0aFNlZ1JvbGUpKSk7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmNw
cAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0
U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Myw3ICs0NCw3IEBAIGJvb2wgU1ZHUGF0aFNlZ0xp
c3RTb3VyY2U6Omhhc01vcmVEYXRhKCkKIAogYm9vbCBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFy
c2VTVkdTZWdtZW50VHlwZShTVkdQYXRoU2VnVHlwZSYgcGF0aFNlZ1R5cGUpCiB7Ci0gICAgbV9z
ZWdtZW50ID0gbV9wYXRoU2VnTGlzdC5hdChtX2l0ZW1DdXJyZW50KTsKKyAgICBtX3NlZ21lbnQg
PSBtX3BhdGhTZWdMaXN0LmF0UmVmZXJlbmNlKG1faXRlbUN1cnJlbnQpOwogICAgIHBhdGhTZWdU
eXBlID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1R5cGU+KG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUo
KSk7CiAgICAgKyttX2l0ZW1DdXJyZW50OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTEsNyArNTIs
NyBAQCBib29sIFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZVNWR1NlZ21lCiAKIFNWR1BhdGhT
ZWdUeXBlIFNWR1BhdGhTZWdMaXN0U291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkK
IHsKLSAgICBtX3NlZ21lbnQgPSBtX3BhdGhTZWdMaXN0LmF0KG1faXRlbUN1cnJlbnQpOworICAg
IG1fc2VnbWVudCA9IG1fcGF0aFNlZ0xpc3QuYXRSZWZlcmVuY2UobV9pdGVtQ3VycmVudCk7CiAg
ICAgU1ZHUGF0aFNlZ1R5cGUgcGF0aFNlZ1R5cGUgPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnVHlw
ZT4obV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpKTsKICAgICArK21faXRlbUN1cnJlbnQ7CiAgICAg
cmV0dXJuIHBhdGhTZWdUeXBlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Z0xpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBA
IHZvaWQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXM6OmNvbW1pdENoYW5nZSgKIAogdm9pZCBTVkdQYXRo
U2VnTGlzdFZhbHVlczo6Y2xlYXJJdGVtQ29udGV4dEFuZFJvbGUodW5zaWduZWQgaW5kZXgpCiB7
Ci0gICAgYXV0byYgaXRlbSA9IGF0KGluZGV4KTsKKyAgICBhdXRvJiBpdGVtID0gYXRSZWZlcmVu
Y2UoaW5kZXgpOwogICAgIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4dCY+KCppdGVt
KS5zZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CiB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaAkocmV2
aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDEwICsyMCw5IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgogI2lu
Y2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgIlNWR1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCw5ICszMyw5IEBAIGNsYXNzIFNWR1BhdGhTZWdM
aXN0OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gCiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CiAK
LWNsYXNzIFNWR1BhdGhTZWdMaXN0VmFsdWVzIDogcHVibGljIFZlY3RvcjxSZWZQdHI8U1ZHUGF0
aFNlZz4+IHsKK2NsYXNzIFNWR1BhdGhTZWdMaXN0VmFsdWVzIDogcHVibGljIFNWR1ZhbHVlTGlz
dDxSZWZQdHI8U1ZHUGF0aFNlZz4+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gVmVjdG9y
PFJlZlB0cjxTVkdQYXRoU2VnPj47CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVlTGlzdDxSZWZQ
dHI8U1ZHUGF0aFNlZz4+OwogICAgIAogICAgIGV4cGxpY2l0IFNWR1BhdGhTZWdMaXN0VmFsdWVz
KFNWR1BhdGhTZWdSb2xlIHJvbGUpCiAgICAgICAgIDogbV9yb2xlKHJvbGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMzA2NDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZH
UGF0aFMKICAgICBBU1NFUlQocGFyc2luZ01vZGUgPT0gVW5hbHRlcmVkUGFyc2luZyk7CiAKICAg
ICBTVkdQYXRoU2VnTGlzdFZhbHVlcyBhcHBlbmRlZEl0ZW1MaXN0KFBhdGhTZWdVbmFsdGVyZWRS
b2xlKTsKLSAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChXVEZNb3ZlKHBhdGhTZWcpKTsKKyAg
ICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlKFdURk1vdmUocGF0aFNl
ZykpKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtIGFwcGVuZGVkQnl0ZVN0cmVhbTsKICAgICBT
VkdQYXRoU2VnTGlzdFNvdXJjZSBzb3VyY2UoYXBwZW5kZWRJdGVtTGlzdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAkocmV2aXNpb24gMjMwNjQ3KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0zNSw3ICszNiw3IEBAIFN0cmluZyBTVkdQb2ludExpc3RWYWx1ZXM6OnZhbHVlQXNT
dHJpbmcKICAgICAgICAgaWYgKGkgPiAwKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAn
KTsgLy8gRklYTUU6IFNob3VsZG4ndCB3ZSB1c2UgY29tbWFzIHRvIHNlcGVyYXRlPwogCi0gICAg
ICAgIGNvbnN0IGF1dG8mIHBvaW50ID0gYXQoaSk7CisgICAgICAgIGNvbnN0IGF1dG8mIHBvaW50
ID0gYXRSZWZlcmVuY2UoaSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHBvaW50Lngo
KSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKHBvaW50LnkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZh
bHVlcy5oCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiwxNCArMjMsMTQgQEAKIAogI2luY2x1
ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJTVkdWYWx1ZUxpc3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdQb2ludDsKIGNsYXNzIFNWR1BvaW50TGlzdDsKIAotY2xh
c3MgU1ZHUG9pbnRMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZlY3RvcjxGbG9hdFBvaW50PiB7
CitjbGFzcyBTVkdQb2ludExpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVMaXN0PEZs
b2F0UG9pbnQ+IHsKIHB1YmxpYzoKICAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAJKHJl
dmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDcgKzQwLDcgQEAgdm9pZCBTVkdTdHJpbmdMaXN0
VmFsdWVzOjpyZXNldChjb25zdCBTdAogCiAgICAgLy8gQWRkIGVtcHR5IHN0cmluZywgaWYgbGlz
dCBpcyBlbXB0eS4KICAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICBhcHBlbmQoZW1wdHlTdHJp
bmcoKSk7CisgICAgICAgIGFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFN0cmluZz4oZW1wdHlTdHJp
bmcoKSkpOwogfQogCiB2b2lkIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnBhcnNlKGNvbnN0IFN0cmlu
ZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyKQpAQCAtNTYsNyArNTcsNyBAQCB2b2lkIFNWR1N0cmlu
Z0xpc3RWYWx1ZXM6OnBhcnNlKGNvbnN0IFN0CiAgICAgICAgICAgICBwdHIrKzsKICAgICAgICAg
aWYgKHB0ciA9PSBzdGFydCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBhcHBlbmQoU3Ry
aW5nKHN0YXJ0LCBwdHIgLSBzdGFydCkpOworICAgICAgICBhcHBlbmQoU1ZHVmFsdWU6OmNyZWF0
ZTxTdHJpbmc+KFN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpKSk7CiAgICAgICAgIHNraXBPcHRp
b25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0ciwgZW5kLCBkZWxpbWl0ZXIpOwogICAgIH0KIH0K
QEAgLTcwLDcgKzcxLDcgQEAgU3RyaW5nIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnZhbHVlQXNTdHJp
bgogICAgICAgICBpZiAoaSA+IDApCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwog
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0KGkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
YXRSZWZlcmVuY2UoaSkpOwogICAgIH0KIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgJKHJldmlzaW9u
IDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMyw3ICsxNCw3IEBACiAgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqCiAgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG/iiKsKICAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCiAgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwpAQCAtMjIsNyArMjMsNyBAQAogCiAjaW5j
bHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlNWR1ZhbHVlTGlzdC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMyLDcgKzMzLDcgQEAgY2xhc3MgU1ZHU3RyaW5nTGlzdDsK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IAogY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2ZmOwogCi1jbGFz
cyBTVkdTdHJpbmdMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZlY3RvcjxTdHJpbmc+IHsKK2Ns
YXNzIFNWR1N0cmluZ0xpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVMaXN0PFN0cmlu
Zz4gewogcHVibGljOgogICAgIFNWR1N0cmluZ0xpc3RWYWx1ZXMoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkKICAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFt
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTE1NCwxNiArMTU0LDE2IEBAIGJvb2wgU1ZHVGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBT
dHJpbmcKIAogYm9vbCBTVkdUZXN0czo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRv
JiBmZWF0dXJlIDogbV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlKSB7Ci0gICAgICAgIGlmIChmZWF0
dXJlLmlzRW1wdHkoKSB8fCAhc3VwcG9ydGVkU1ZHRmVhdHVyZXMoKS5jb250YWlucyhmZWF0dXJl
KSkKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZlYXR1cmUgOiBtX3JlcXVpcmVkRmVhdHVyZXMudmFs
dWUpIHsKKyAgICAgICAgaWYgKGZlYXR1cmUtPmFzPFN0cmluZz4oKS5pc0VtcHR5KCkgfHwgIXN1
cHBvcnRlZFNWR0ZlYXR1cmVzKCkuY29udGFpbnMoZmVhdHVyZS0+YXM8U3RyaW5nPigpKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6
IG1fc3lzdGVtTGFuZ3VhZ2UudmFsdWUpIHsKLSAgICAgICAgaWYgKGxhbmd1YWdlICE9IGRlZmF1
bHRMYW5ndWFnZSgpLnN1YnN0cmluZygwLCAyKSkKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGxhbmd1
YWdlIDogbV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSkgeworICAgICAgICBpZiAobGFuZ3VhZ2UtPmFz
PFN0cmluZz4oKSAhPSBkZWZhdWx0TGFuZ3VhZ2UoKS5zdWJzdHJpbmcoMCwgMikpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogbV9y
ZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUpIHsKLSAgICAgICAgaWYgKCFoYXNFeHRlbnNpb24oZXh0
ZW5zaW9uKSkKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGV4dGVuc2lvbiA6IG1fcmVxdWlyZWRFeHRl
bnNpb25zLnZhbHVlKSB7CisgICAgICAgIGlmICghaGFzRXh0ZW5zaW9uKGV4dGVuc2lvbi0+YXM8
U3RyaW5nPigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJu
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHJldmlzaW9u
IDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yMiw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MSw3ICs0Miw3
IEBAIFJlZjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMKIAogICAgIFNWR1Ry
YW5zZm9ybVZhbHVlIHRyYW5zZm9ybShtYXRyaXgpOwogICAgIGNsZWFyKCk7Ci0gICAgYXBwZW5k
KHRyYW5zZm9ybSk7CisgICAgYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8U1ZHVHJhbnNmb3JtVmFs
dWU+KHRyYW5zZm9ybSkpOwogICAgIHJldHVybiBTVkdUcmFuc2Zvcm06OmNyZWF0ZSh0cmFuc2Zv
cm0pOwogfQogCkBAIC01Miw3ICs1Myw3IEBAIGJvb2wgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6
Y29uY2F0ZW5hdGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcmVzdWx0ICo9IGF0KGkpLm1hdHJpeCgpOwor
ICAgICAgICByZXN1bHQgKj0gYXRSZWZlcmVuY2UoaSkubWF0cml4KCk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTY1LDcgKzY2LDcgQEAgU3RyaW5nIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6
OnZhbHVlQXNTdAogICAgICAgICBpZiAoaSA+IDApCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOwogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0KGkpLnZhbHVlQXNTdHJpbmcoKSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0UmVmZXJlbmNlKGkpLnZhbHVlQXNTdHJpbmcoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjMwNjQ3KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTIwLDE4ICsyMSwxOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR1Byb3Bl
cnR5VHJhaXRzLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybVZhbHVlLmgiCisjaW5jbHVkZSAiU1ZHVmFs
dWVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IGNsYXNzIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY7CiAKK2NsYXNzIFNWR01hdHJpeDsKK2NsYXNz
IFNWR1RyYW5zZm9ybTsKIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAKLWNsYXNzIFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR1RyYW5zZm9ybVZhbHVlLCAx
PiB7CitjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFNWR1ZhbHVl
TGlzdDxTVkdUcmFuc2Zvcm1WYWx1ZT4gewogcHVibGljOgogICAgIFJlZjxTVkdUcmFuc2Zvcm0+
IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4JikgY29uc3Q7CiAgICAgUmVm
PFNWR1RyYW5zZm9ybT4gY29uc29saWRhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm1WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
cmFuc2Zvcm1WYWx1ZS5oCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodCBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTAsNSArOTEsMTAgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTVkdUcmFuc2ZvcgogewogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CisgICAgCit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zv
cm1WYWx1ZT4geworICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm1WYWx1ZSBpbml0aWFsVmFsdWUoKSB7
IHJldHVybiB7IH07IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1RyYW5z
Zm9ybVZhbHVlJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHRyYW5zZm9ybS52YWx1ZUFzU3RyaW5nKCk7
IH0KK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtYWJsZS5jcHAJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5Nyw3ICsxOTgsNyBA
QCBib29sIFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0CiAgICAgICAgIGlmICgh
cGFyc2VUcmFuc2Zvcm1WYWx1ZSh0eXBlLCBjdXJyVHJhbnNmb3JtLCBlbmQsIHRyYW5zZm9ybSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbGlzdC5hcHBlbmQodHJhbnNm
b3JtKTsKKyAgICAgICAgbGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxTVkdUcmFuc2Zvcm1W
YWx1ZT4odHJhbnNmb3JtKSk7CiAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXJyVHJh
bnNmb3JtLCBlbmQpOwogICAgICAgICBpZiAoY3VyclRyYW5zZm9ybSA8IGVuZCAmJiAqY3VyclRy
YW5zZm9ybSA9PSAnLCcpIHsKICAgICAgICAgICAgIGRlbGltUGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWYWx1ZS5oCShyZXZpc2lvbiAyMzA2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJTVkdBbmdsZVZhbHVlLmgiCiAjaW5jbHVkZSAi
U1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIgpAQCAtMzMsMTcgKzM0LDE4IEBACiAjaW5jbHVkZSAiU1ZH
TWFya2VyVHlwZXMuaCIKICNpbmNsdWRlICJTVkdOdW1iZXJMaXN0VmFsdWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdFZhbHVlcy5o
IgogI2luY2x1ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZS5oIgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5SW5mby5oIgogI2luY2x1
ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cy5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybVZhbHVlLmgiCiAKICNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIFNWR1ZhbHVlVmFyaWFudCA9
IFZhcmlhbnQ8Cit1c2luZyBTVkdBbmltYXRlZFR5cGVWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PAog
ICAgIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4qLAogICAgIGJvb2wqLAogICAg
IENvbG9yKiwKQEAgLTYzLDQgKzY1LDY3IEBAIHVzaW5nIFNWR1ZhbHVlVmFyaWFudCA9IFZhcmlh
bnQ8CiAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyoKID47CiAKK3VzaW5nIFNWR1ZhbHVlVmFy
aWFudCA9IFZhcmlhbnQ8CisgICAgU1ZHTGVuZ3RoVmFsdWUsCisgICAgZmxvYXQsCisgICAgUmVm
UHRyPFNWR1BhdGhTZWc+LAorICAgIEZsb2F0UG9pbnQsCisgICAgU3RyaW5nLAorICAgIFNWR1Ry
YW5zZm9ybVZhbHVlCis+OworCitjbGFzcyBTVkdWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNW
R1ZhbHVlPiwgcHVibGljIFNWR1ZhbHVlVmFyaWFudCB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgUHJvcGVydHlUeXBlPgorICAgIHN0YXRpYyBSZWZQdHI8U1ZHVmFsdWU+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlPFByb3BlcnR5VHlwZT4oU1ZHUHJvcGVy
dHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6aW5pdGlhbFZhbHVlKCkpOworICAgIH0KKworICAgIHRl
bXBsYXRlIDxjbGFzcyBQcm9wZXJ0eVR5cGU+CisgICAgc3RhdGljIFJlZlB0cjxTVkdWYWx1ZT4g
Y3JlYXRlKGNvbnN0IFByb3BlcnR5VHlwZSYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR1ZhbHVlKHZhbHVlKSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZlB0
cjxTVkdWYWx1ZT4gY3JlYXRlKGNvbnN0IFNWR1ZhbHVlJiB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHVmFsdWUodmFsdWUpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CisgICAgYm9vbCBpcygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxQcm9wZXJ0eVR5cGU+KCp0aGlz
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJvcGVydHlUeXBlPgorICAgIGNvbnN0
IFByb3BlcnR5VHlwZSYgYXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzPFByb3Bl
cnR5VHlwZT4oKSk7CisgICAgICAgIHJldHVybiBXVEY6OmdldDxQcm9wZXJ0eVR5cGU+KCp0aGlz
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJvcGVydHlUeXBlPgorICAgIFByb3Bl
cnR5VHlwZSYgYXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzPFByb3BlcnR5VHlwZT4oKSk7
CisgICAgICAgIHJldHVybiBXVEY6OmdldDxQcm9wZXJ0eVR5cGU+KCp0aGlzKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgorICAgIGV4cGxp
Y2l0IFNWR1ZhbHVlKGNvbnN0IFByb3BlcnR5VHlwZSYgdmFsdWUpCisgICAgICAgIDogU1ZHVmFs
dWVWYXJpYW50KHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzPFByb3BlcnR5VHlwZT4o
KSk7CisgICAgfQorCisgICAgU1ZHVmFsdWUoY29uc3QgU1ZHVmFsdWUmIHZhbHVlKQorICAgICAg
ICA6IFNWR1ZhbHVlVmFyaWFudChzdGF0aWNfY2FzdDxjb25zdCBTVkdWYWx1ZVZhcmlhbnQmPih2
YWx1ZSkpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXgoKSA9PSB2YWx1ZS5pbmRleCgpKTsK
KyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVmFsdWVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ZhbHVlTGlzdC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1
ZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdWYWx1ZTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgorY2xhc3MgU1ZHVmFsdWVMaXN0IDog
cHVibGljIFZlY3RvcjxSZWZQdHI8U1ZHVmFsdWU+PiB7CitwdWJsaWM6CisgICAgU1ZHVmFsdWVM
aXN0KCkgPSBkZWZhdWx0OworCisgICAgU1ZHVmFsdWVMaXN0KGNvbnN0IFNWR1ZhbHVlTGlzdCYg
b3RoZXIpCisgICAgICAgIDogVmVjdG9yPFJlZlB0cjxTVkdWYWx1ZT4+KG90aGVyLmRlZXBDb3B5
KCkpCisgICAgeworICAgIH0KKworICAgIFNWR1ZhbHVlTGlzdCYgb3BlcmF0b3I9KGNvbnN0IFNW
R1ZhbHVlTGlzdCYgb3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZH
VmFsdWVMaXN0Jj4oVmVjdG9yPFJlZlB0cjxTVkdWYWx1ZT4+OjpvcGVyYXRvcj0ob3RoZXIuZGVl
cENvcHkoKSkpOworICAgIH0KKworICAgIC8vIFRoaXMgb3BlcmF0b3IgaXMgdXNlZCB3aGVuIHRo
ZSBjYWxsZXIgZXhwZWN0cyBhIFZlY3RvciBvZgorICAgIC8vIFByb3BlcnR5VHlwZSwgbm90IGEg
VmVjdG9yIG9mIFJlZlB0cjxTVkdWYWx1ZT4uCisgICAgb3BlcmF0b3IgVmVjdG9yPFByb3BlcnR5
VHlwZT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPFByb3BlcnR5VHlwZT4gdmFsdWVz
OworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDogKnRoaXMpCisgICAgICAgICAgICB2
YWx1ZXMuYXBwZW5kKHZhbHVlLT50ZW1wbGF0ZSBhczxQcm9wZXJ0eVR5cGU+KCkpOworICAgICAg
ICByZXR1cm4gdmFsdWVzOworICAgIH0KKworICAgIC8vIFZlY3Rvcjo6cmVzaXplKCkgaXMgb3Zl
cnJpZGRlbiB0byBhbGxvY2F0ZSBuZXcgUmVmUFRyPFNWR1ZhbHVlPgorICAgIC8vIGFuZCBhc3Np
Z24gdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBuZXcgaXRlbXMuCisgICAgdm9pZCByZXNpemUo
c2l6ZV90IG5ld1NpemUpCisgICAgeworICAgICAgICBzaXplX3QgaW5kZXggPSBzaXplKCk7Cisg
ICAgICAgIFZlY3RvcjxSZWZQdHI8U1ZHVmFsdWU+Pjo6cmVzaXplKG5ld1NpemUpOworICAgICAg
ICBmb3IgKDsgaW5kZXggPCBuZXdTaXplOyArK2luZGV4KQorICAgICAgICAgICAgYXQoaW5kZXgp
ID0gZGVhZnVsdFZhbHVlKCk7CisgICAgfQorCisgICAgY29uc3QgUHJvcGVydHlUeXBlJiBhdFJl
ZmVyZW5jZShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KS0+dGVtcGxhdGUg
YXM8UHJvcGVydHlUeXBlPigpOyB9CisgICAgUHJvcGVydHlUeXBlJiBhdFJlZmVyZW5jZShzaXpl
X3QgaW5kZXgpIHsgcmV0dXJuIGF0KGluZGV4KS0+dGVtcGxhdGUgYXM8UHJvcGVydHlUeXBlPigp
OyB9CisKKyAgICBjb25zdCBQcm9wZXJ0eVR5cGUmIGZpcnN0UmVmZXJlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gYXRSZWZlcmVuY2UoMCk7IH0KKyAgICBQcm9wZXJ0eVR5cGUmIGZpcnN0UmVmZXJlbmNl
KCkgeyByZXR1cm4gYXRSZWZlcmVuY2UoMCk7IH0KKworICAgIGNvbnN0IFByb3BlcnR5VHlwZSYg
bGFzdFJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGF0UmVmZXJlbmNlKHNpemUoKSAtIDEpOyB9
CisgICAgUHJvcGVydHlUeXBlJiBsYXN0UmVmZXJlbmNlKCkgeyByZXR1cm4gYXRSZWZlcmVuY2Uo
c2l6ZSgpIC0gMSk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgLy8gVGhlIGluc3RhbnRpYXRpb24g
b2YgdGhpcyBtZW1iZXIgZnVuY3Rpb24gYm9keSBpcyBkZWxheWVkIHRpbGwgdGhlIGNhbGxlciBp
cyBhY3R1YWxseS4KKyAgICAvLyB1c2VkLiBUaGlzIG1ha2VzIGl0IHN1ZmZpY2llbnQgdG8gZm9y
d2FyZCBkZWNsYXJlIFNWR1ZhbHVlIGFuZCBub3QgaW5jbHVkZSBTVkdWYWx1ZS5oLgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQgPSBTVkdWYWx1ZT4KKyAgICBzdGF0aWMgUmVmUHRyPFQ+IGRlYWZ1
bHRWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gVDo6dGVtcGxhdGUgY3JlYXRlPFByb3Bl
cnR5VHlwZT4oKTsKKyAgICB9CisKKyAgICAvLyBTYW1lIGFzIGVhZnVsdFZhbHVlKCkuCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCA9IFNWR1ZhbHVlPgorICAgIHN0YXRpYyBSZWZQdHI8VD4gY29w
eShjb25zdCBSZWZQdHI8VD4mIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFQ6OmNyZWF0
ZSgqb3RoZXIpOworICAgIH0KKworICAgIC8vIFRoZSBuZXcgVmVjdG9yIGRvZXMgbm90IHJlZmVy
ZW5jZXMgdGhlIGl0ZW1zIGluIHRoaXMgVmVjdG9yCisgICAgVmVjdG9yPFJlZlB0cjxTVkdWYWx1
ZT4+IGRlZXBDb3B5KCkgY29uc3QKKyAgICB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8U1ZHVmFs
dWU+PiB2YWx1ZXM7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFsdWUgOiAqdGhpcykKKyAg
ICAgICAgICAgIHZhbHVlcy5hcHBlbmQoY29weSh2YWx1ZSkpOworICAgICAgICByZXR1cm4gdmFs
dWVzOworICAgIH0KK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJKHJldmlzaW9uIDIz
MDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlNYWNyb3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKKyNpbmNsdWRlICJTVkdWYWx1ZS5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFBy
b3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
TGlzdFByb3BlcnR5LmgJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDE0ICsyNiw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBMaXN0TW9kaWZpY2F0aW9uIHsKLSAgICBM
aXN0TW9kaWZpY2F0aW9uVW5rbm93biA9IDAsCi0gICAgTGlzdE1vZGlmaWNhdGlvbkluc2VydCA9
IDEsCi0gICAgTGlzdE1vZGlmaWNhdGlvblJlcGxhY2UgPSAyLAotICAgIExpc3RNb2RpZmljYXRp
b25SZW1vdmUgPSAzLAotICAgIExpc3RNb2RpZmljYXRpb25BcHBlbmQgPSA0Ci19OwotCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CiBjbGFzcyBTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY7CiAKQEAgLTEzNSw3ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gU3Bl
YzogQ2xlYXJzIGFsbCBleGlzdGluZyBjdXJyZW50IGl0ZW1zIGZyb20gdGhlIGxpc3QgYW5kIHJl
LWluaXRpYWxpemVzIHRoZSBsaXN0IHRvIGhvbGQgdGhlIHNpbmdsZSBpdGVtIHNwZWNpZmllZCBi
eSB0aGUgcGFyYW1ldGVyLgogICAgICAgICBtX3ZhbHVlcy0+Y2xlYXIoKTsKLSAgICAgICAgbV92
YWx1ZXMtPmFwcGVuZChuZXdJdGVtKTsKKyAgICAgICAgbV92YWx1ZXMtPmFwcGVuZChTVkdWYWx1
ZTo6Y3JlYXRlPExpc3RJdGVtVHlwZT4obmV3SXRlbSkpOwogCiAgICAgICAgIGNvbW1pdENoYW5n
ZSgpOwogICAgICAgICByZXR1cm4gTGlzdEl0ZW1UeXBlIHsgbmV3SXRlbSB9OwpAQCAtMTYxLDcg
KzE1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgZGV0YWNoTGlzdFdyYXBwZXJzKDApOwogICAgICAg
ICBtX3ZhbHVlcy0+Y2xlYXIoKTsKIAotICAgICAgICBtX3ZhbHVlcy0+YXBwZW5kKG5ld0l0ZW0t
PnByb3BlcnR5UmVmZXJlbmNlKCkpOworICAgICAgICBtX3ZhbHVlcy0+YXBwZW5kKG5ld0l0ZW0t
PnZhbHVlKCkpOwogICAgICAgICBtX3dyYXBwZXJzLT5hcHBlbmQobmV3SXRlbS0+Y3JlYXRlV2Vh
a1B0cigpKTsKIAogICAgICAgICBjb21taXRDaGFuZ2UoKTsKQEAgLTE4NSw3ICsxNzgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwogCiAg
ICAgICAgIC8vIFNwZWM6IFJldHVybnMgdGhlIHNwZWNpZmllZCBpdGVtIGZyb20gdGhlIGxpc3Qu
IFRoZSByZXR1cm5lZCBpdGVtIGlzIHRoZSBpdGVtIGl0c2VsZiBhbmQgbm90IGEgY29weS4KLSAg
ICAgICAgcmV0dXJuIExpc3RJdGVtVHlwZSB7IG1fdmFsdWVzLT5hdChpbmRleCkgfTsKKyAgICAg
ICAgcmV0dXJuIExpc3RJdGVtVHlwZSB7IG1fdmFsdWVzLT5hdFJlZmVyZW5jZShpbmRleCkgfTsK
ICAgICB9CiAKICAgICBFeGNlcHRpb25PcjxSZWY8TGlzdEl0ZW1UZWFyT2ZmPj4gZ2V0SXRlbVZh
bHVlc0FuZFdyYXBwZXJzKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRMaXN0
LCB1bnNpZ25lZCBpbmRleCkKQEAgLTIwNSw3ICsxOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAvLyBDcmVhdGUgbmV3IHdyYXBwZXIsIHdoaWNoIGlzIGFsbG93ZWQgdG8gZGlyZWN0bHkgbW9k
aWZ5IHRoZSBpdGVtIGluIHRoZSBsaXN0LCB3L28gY29weWluZyBhbmQgY2FjaGUgdGhlIHdyYXBw
ZXIgaW4gb3VyIG1hcC4KICAgICAgICAgICAgIC8vIEl0IGlzIGFsc28gYXNzb2NpYXRlZCB3aXRo
IG91ciBhbmltYXRlZCBwcm9wZXJ0eSwgc28gaXQgY2FuIG5vdGlmeSB0aGUgU1ZHIEVsZW1lbnQg
d2hpY2ggaG9sZHMgdGhlIFNWR0FuaW1hdGVkKkxpc3QKICAgICAgICAgICAgIC8vIHRoYXQgaXQg
aGFzIGJlZW4gbW9kaWZpZWQgKGFuZCB0aHVzIGNhbiBjYWxsIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpKS4KLSAgICAgICAgICAgIHdyYXBwZXIgPSBMaXN0SXRl
bVRlYXJPZmY6OmNyZWF0ZShhbmltYXRlZExpc3QsIFVuZGVmaW5lZFJvbGUsIG1fdmFsdWVzLT5h
dChpbmRleCkpOworICAgICAgICAgICAgd3JhcHBlciA9IExpc3RJdGVtVGVhck9mZjo6Y3JlYXRl
KGFuaW1hdGVkTGlzdCwgVW5kZWZpbmVkUm9sZSwgbV92YWx1ZXMtPmF0UmVmZXJlbmNlKGluZGV4
KSk7CiAgICAgICAgICAgICBtX3dyYXBwZXJzLT5hdChpbmRleCkgPSB3cmFwcGVyLT5jcmVhdGVX
ZWFrUHRyKCk7CiAgICAgICAgIH0KIApAQCAtMjMyLDcgKzIyNSw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICAvLyBTcGVjOiBJbnNlcnRzIGEgbmV3IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3Bl
Y2lmaWVkIHBvc2l0aW9uLiBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBu
ZXcgaXRlbSBpcyB0byBiZQogICAgICAgICAvLyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMg
bnVtYmVyIDAuIElmIHRoZSBpbmRleCBpcyBlcXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBp
cyBpbnNlcnRlZCBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuCi0gICAgICAgIG1fdmFsdWVzLT5p
bnNlcnQoaW5kZXgsIG5ld0l0ZW0pOworICAgICAgICBtX3ZhbHVlcy0+aW5zZXJ0KGluZGV4LCBT
VkdWYWx1ZTo6Y3JlYXRlPExpc3RJdGVtVHlwZT4obmV3SXRlbSkpOwogCiAgICAgICAgIGNvbW1p
dENoYW5nZSgpOwogICAgICAgICByZXR1cm4gTGlzdEl0ZW1UeXBlIHsgbmV3SXRlbSB9OwpAQCAt
MjYxLDcgKzI1NCw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBTcGVjOiBJbnNlcnRzIGEgbmV3
IGl0ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBUaGUgaW5kZXgg
b2YgdGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBpcyB0byBiZQogICAgICAgICAv
LyBpbnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVyIDAuIElmIHRoZSBpbmRleCBpcyBl
cXVhbCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNlcnRlZCBhdCB0aGUgZnJvbnQgb2Yg
dGhlIGxpc3QuCi0gICAgICAgIG1fdmFsdWVzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0tPnByb3Bl
cnR5UmVmZXJlbmNlKCkpOworICAgICAgICBtX3ZhbHVlcy0+aW5zZXJ0KGluZGV4LCBuZXdJdGVt
LT52YWx1ZSgpKTsKIAogICAgICAgICAvLyBTdG9yZSBuZXcgd3JhcHBlciBhdCBwb3NpdGlvbiAn
aW5kZXgnLCBjaGFuZ2UgaXRzIHVuZGVybHlpbmcgdmFsdWUsIHNvIG11dGF0aW9ucyBvZiBuZXdJ
dGVtLCBkaXJlY3RseSBhZmZlY3QgdGhlIGl0ZW0gaW4gdGhlIGxpc3QuCiAgICAgICAgIG1fd3Jh
cHBlcnMtPmluc2VydChpbmRleCwgbmV3SXRlbS0+Y3JlYXRlV2Vha1B0cigpKTsKQEAgLTMwNCw3
ICsyOTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICAvLyBVcGRhdGUgdGhlIHZh
bHVlIGF0IHRoZSBkZXNpcmVkIHBvc2l0aW9uICdpbmRleCcuIAotICAgICAgICBtX3ZhbHVlcy0+
YXQoaW5kZXgpID0gbmV3SXRlbTsKKyAgICAgICAgbV92YWx1ZXMtPmF0UmVmZXJlbmNlKGluZGV4
KSA9IG5ld0l0ZW07CiAKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CiAgICAgICAgIHJldHVybiBM
aXN0SXRlbVR5cGUgeyBuZXdJdGVtIH07CkBAIC0zNDAsNyArMzMzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgb2xkSXRlbS0+ZGV0YWNoV3JhcHBlcigpOwogCiAgICAgICAgIC8vIFVwZGF0ZSB0
aGUgdmFsdWUgYW5kIHRoZSB3cmFwcGVyIGF0IHRoZSBkZXNpcmVkIHBvc2l0aW9uICdpbmRleCcu
IAotICAgICAgICBtX3ZhbHVlcy0+YXQoaW5kZXgpID0gbmV3SXRlbS0+cHJvcGVydHlSZWZlcmVu
Y2UoKTsKKyAgICAgICAgbV92YWx1ZXMtPmF0KGluZGV4KSA9IG5ld0l0ZW0tPnZhbHVlKCk7CiAg
ICAgICAgIG1fd3JhcHBlcnMtPmF0KGluZGV4KSA9IG5ld0l0ZW0tPmNyZWF0ZVdlYWtQdHIoKTsK
IAogICAgICAgICBjb21taXRDaGFuZ2UoKTsKQEAgLTM2OCw3ICszNjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgQVNT
RVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAKLSAgICAgICAgTGlzdEl0ZW1UeXBl
IG9sZEl0ZW0gPSBtX3ZhbHVlcy0+YXQoaW5kZXgpOworICAgICAgICBMaXN0SXRlbVR5cGUgb2xk
SXRlbSA9IG1fdmFsdWVzLT5hdFJlZmVyZW5jZShpbmRleCk7CiAgICAgICAgIG1fdmFsdWVzLT5y
ZW1vdmUoaW5kZXgpOwogCiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwpAQCAtMzg5LDcgKzM4Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRGV0YWNoIHRoZSBleGlzdGluZyB3cmFwcGVyLgogICAg
ICAgICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiBvbGRJdGVtID0gc3RhdGljX2Nhc3Q8TGlzdEl0
ZW1UZWFyT2ZmKj4obV93cmFwcGVycy0+YXQoaW5kZXgpLmdldCgpKTsKICAgICAgICAgaWYgKCFv
bGRJdGVtKQotICAgICAgICAgICAgb2xkSXRlbSA9IExpc3RJdGVtVGVhck9mZjo6Y3JlYXRlKGFu
aW1hdGVkTGlzdCwgVW5kZWZpbmVkUm9sZSwgbV92YWx1ZXMtPmF0KGluZGV4KSk7CisgICAgICAg
ICAgICBvbGRJdGVtID0gTGlzdEl0ZW1UZWFyT2ZmOjpjcmVhdGUoYW5pbWF0ZWRMaXN0LCBVbmRl
ZmluZWRSb2xlLCBtX3ZhbHVlcy0+YXRSZWZlcmVuY2UoaW5kZXgpKTsKIAogICAgICAgICBvbGRJ
dGVtLT5kZXRhY2hXcmFwcGVyKCk7CiAgICAgICAgIG1fd3JhcHBlcnMtPnJlbW92ZShpbmRleCk7
CkBAIC00MTEsNyArNDA0LDcgQEAgcHVibGljOgogICAgICAgICBwcm9jZXNzSW5jb21pbmdMaXN0
SXRlbVZhbHVlKG5ld0l0ZW0sIDApOwogCiAgICAgICAgIC8vIEFwcGVuZCB0aGUgdmFsdWUgYXQg
dGhlIGVuZCBvZiB0aGUgbGlzdC4KLSAgICAgICAgbV92YWx1ZXMtPmFwcGVuZChuZXdJdGVtKTsK
KyAgICAgICAgbV92YWx1ZXMtPmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPExpc3RJdGVtVHlwZT4o
bmV3SXRlbSkpOwogCiAgICAgICAgIGNvbW1pdENoYW5nZShMaXN0TW9kaWZpY2F0aW9uQXBwZW5k
KTsKICAgICAgICAgcmV0dXJuIExpc3RJdGVtVHlwZSB7IG5ld0l0ZW0gfTsKQEAgLTQzNCw3ICs0
MjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihu
ZXdJdGVtLCAwKTsKIAogICAgICAgICAvLyBBcHBlbmQgdGhlIHZhbHVlIGFuZCB3cmFwcGVyIGF0
IHRoZSBlbmQgb2YgdGhlIGxpc3QuCi0gICAgICAgIG1fdmFsdWVzLT5hcHBlbmQobmV3SXRlbS0+
cHJvcGVydHlSZWZlcmVuY2UoKSk7CisgICAgICAgIG1fdmFsdWVzLT5hcHBlbmQobmV3SXRlbS0+
dmFsdWUoKSk7CiAgICAgICAgIG1fd3JhcHBlcnMtPmFwcGVuZChuZXdJdGVtLT5jcmVhdGVXZWFr
UHRyKCkpOwogCiAgICAgICAgIGNvbW1pdENoYW5nZShMaXN0TW9kaWZpY2F0aW9uQXBwZW5kKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0
UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIzMDY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE0MCw3
ICsxNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpdGVtLT5zZXRBbmltYXRlZFByb3BlcnR5KG1f
YW5pbWF0ZWRQcm9wZXJ0eS5wdHIoKSk7Ci0gICAgICAgICAgICBpdGVtLT5zZXRWYWx1ZShtX3Zh
bHVlcy0+YXQoaSkpOworICAgICAgICAgICAgaXRlbS0+c2V0VmFsdWUobV92YWx1ZXMtPmF0UmVm
ZXJlbmNlKGkpKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y29t
bWl0Q2hhbmdlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5LmgiCisjaW5jbHVkZSAiU1ZH
VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC02MCw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZShpbml0aWFs
VmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIH0KIAorICAgIFJlZlB0cjxTVkdWYWx1
ZT4gdmFsdWUoKSBjb25zdCB7IHJldHVybiBTVkdWYWx1ZTo6Y3JlYXRlPFByb3BlcnR5VHlwZT4o
Km1fdmFsdWUpOyB9CiAgICAgdmlydHVhbCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5UmVmZXJlbmNl
KCkgeyByZXR1cm4gKm1fdmFsdWU7IH0KICAgICBTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRl
ZFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5LmdldCgpOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlU
cmFpdHMuaAkocmV2aXNpb24gMjMwNjQ3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTQgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAorZW51bSBMaXN0TW9kaWZpY2F0aW9uIHsKKyAgICBMaXN0TW9kaWZpY2F0aW9uVW5rbm93
biA9IDAsCisgICAgTGlzdE1vZGlmaWNhdGlvbkluc2VydCA9IDEsCisgICAgTGlzdE1vZGlmaWNh
dGlvblJlcGxhY2UgPSAyLAorICAgIExpc3RNb2RpZmljYXRpb25SZW1vdmUgPSAzLAorICAgIExp
c3RNb2RpZmljYXRpb25BcHBlbmQgPSA0Cit9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0
eVR5cGU+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHMgeyB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338066</attachid>
            <date>2018-04-16 18:16:20 -0700</date>
            <delta_ts>2021-11-01 12:05:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184670-20180416181620.patch</filename>
            <type>text/plain</type>
            <size>85053</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NyBAQAorMjAxOC0wNC0xNiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgYWxs
IHRoZSBpdGVtcyBvZiB0aGUgU1ZHIHRlYXItb2ZmIHByb3BlcnRpZXMgbGlzdCBiZSBSZWZDb3Vu
dGVkIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIEl0IGFkZHMg
dGhlIGNsYXNzIFNWR1ZhbHVlIHdoaWNoIGlzIGEgdmFyaWFudCBvZiBhbGwgdGhlIHR5cGVzIG9m
IHRoZQorICAgICAgICAgICBTVkcgcHJvcGVydGllcyBsaXN0LgorCisgICAgICAgIC0tIEl0IGFk
ZHMgdGhlIGNsYXNzIFNWR1ZhbHVlTGlzdCB3aGljaCBpcyBkZXJpdmVkIGZvcm0gVmVjdG9yPFJl
ZlB0cjxTVkdWYWx1ZT4+LgorIAorICAgICAgICAtLSBJdCBtYWtlcyBhbGwgdGhlIFNWRyBsaXN0
IHByb3BlcnR5IGNsYXNzZXMgYmUgZGVyaXZlZCBmcm9tIFNWR1ZhbHVlTGlzdC4KKworICAgICAg
ICAtLSBJdCBtYW5hZ2VzIGFkZGluZyBhIFJlZlB0cjxTVkdWYWx1ZT4gdG8gdGhlIGxpc3QgcHJv
cGVydHkgdmVjdG9yIGZyb20KKyAgICAgICAgICAgdGhlIHVuZGVybGF5aW5nIGl0ZW0gZGF0YS4K
KworICAgICAgICAtLSBBIHJlZmVyZW5jZSB0byB0aGUgdW5kZXJsYXlpbmcgaXRlbSBkYXRhIGlz
IG9idGFpbmVkIGZyb20gdGhlIFJlZlB0cjxTVkdWYWx1ZT4KKyAgICAgICAgICAgYW5kIHBhc3Nl
ZCB0byB0aGUgd3JhcHBlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWxsIHRoZSBTVkcgbGlzdCBwcm9wZXJ0aWVzIGhlYWRlciAKKyAgICAgICAgZmls
ZXMgYXJlIHByaXZhdGUuIFNWR1ZhbHVlLmggYW5kIFNWR1ZhbHVlTGlzdC5oIGFuZCBhbGwgdGhl
IGZpbGVzIHRoZXkKKyAgICAgICAgaW5jbHVkZSBoYXZlIHRvIGJlIHByaXZhdGUgYXMgd2VsbC4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBhdGhGcm9tUG9seWdvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEZyb21Q
b2x5bGluZUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXNCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUNoYXJhY3RlckRh
dGEpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmFk
ZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRU
eXBlLmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoTGlzdFZhbHVlczo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlz
dFZhbHVlczo6dmFsdWVBc1N0cmluZyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExp
c3RWYWx1ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdOdW1iZXJMaXN0VmFsdWVzOjpwYXJzZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdOdW1iZXJMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5oOgorICAgICAgICAqIHN2Zy9TVkdQYXJzZXJVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRzTGlzdEZyb21TVkdEYXRhKToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdM
aXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmxpbmVUb0hvcml6b250YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9DdWJpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21v
b3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6YXJjVG8pOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFyc2VTVkdTZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnTGlzdFNvdXJjZTo6bmV4dENvbW1hbmQpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTGlzdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGlz
dFZhbHVlczo6Y2xlYXJJdGVtQ29udGV4dEFuZFJvbGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXRo
U2VnTGlzdFZhbHVlcy5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgor
ICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9pbnRMaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHUG9pbnRMaXN0VmFsdWVzLmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6cGFyc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3RyaW5nTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZyBjb25zdCk6CisgICAgICAg
ICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAq
IHN2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6IAorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNv
bnNvbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNv
bmNhdGVuYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RWYWx1
ZXM6OnZhbHVlQXNTdHJpbmcgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzLmg6IFJlc29sdmUgYSBjeWNsaWMgaGVhZGVyIGZpbGUgcmVmZXJlbmNlcy4KKyAgICAg
ICAgKiBzdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1RyYW5zZm9ybVZhbHVlPjo6aW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybVZhbHVlPjo6dG9TdHJpbmcpOgor
ICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcv
U1ZHVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVmFsdWU6OmlzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zh
bHVlOjphcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZTo6YXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVmFsdWU6OlNWR1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zh
bHVlOjp0b1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR1ZhbHVlTGlzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6U1ZHVmFsdWVMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1ZhbHVlTGlzdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zh
bHVlTGlzdDo6b3BlcmF0b3IgVmVjdG9yPFByb3BlcnR5VHlwZT4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpyZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFs
dWVMaXN0OjphdFJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZUxp
c3Q6OmF0UmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6Zmlyc3RS
ZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpmaXJzdFJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZUxpc3Q6Omxhc3RSZWZlcmVuY2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVMaXN0OjpsYXN0UmVmZXJlbmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1ZhbHVlTGlzdDo6Y29weVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1ZhbHVlTGlzdDo6ZGVlcENvcHkgY29uc3QpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaDogV2UgbmVlZCB0byBpbmNsdWRlIFNWR1ZhbHVlLmgK
KyAgICAgICAgZnJvbSBhIFdlYkNvcmUgcHJpdmF0ZSBoZWFkZXIgZmlsZSBzbyBXZWJLaXQgYW5k
IFdlYktpdExlZ2FjeSBjYW4gaW5zdGFudGlhdGUKKyAgICAgICAgdGhlIGxpc3QgcHJvcGVydGll
cyBjbGFzc2VzIGtub3dpbmcgdGhlIHNpemUgb2YgdGhlIFNWR1ZhbHVlLgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlz
dFByb3BlcnR5Ojppbml0aWFsaXplVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQ
cm9wZXJ0eTo6aW5pdGlhbGl6ZVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xpc3RQcm9wZXJ0eTo6Z2V0SXRlbVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
aXN0UHJvcGVydHk6OmdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaXN0UHJvcGVydHk6Omluc2VydEl0ZW1CZWZvcmVWYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGlzdFByb3BlcnR5OjppbnNlcnRJdGVtQmVmb3JlVmFsdWVzQW5kV3JhcHBlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjpyZXBsYWNlSXRlbVZhbHVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OnJlcGxhY2VJdGVtVmFsdWVzQW5k
V3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjpyZW1vdmVJdGVt
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6cmVtb3ZlSXRlbVZh
bHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6YXBw
ZW5kSXRlbVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OmFwcGVu
ZEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1By
b3BlcnR5VGVhck9mZjo6dmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VHJhaXRzLmg6IFJlbW92ZSBjeWNsaWMgcmVmZXJlbmNlcy4KKyAgICAgICAgU1ZH
UGF0aFNlZ0xpc3RWYWx1ZXMuaCBuZWVkcyB0byBpbmNsdWRlIFNWR0xpc3RQcm9wZXJ0eS5oIG9u
bHkgZm9yIHRoZQorICAgICAgICBkZWZpbml0aW9uIG9mIExpc3RNb2RpZmljYXRpb24uCisKIDIw
MTgtMDQtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBOZXR3b3JrTG9hZENoZWNrZXIgdG8gaGFuZGxlIHN5bmNocm9ub3VzIEhUVFAgbG9hZHMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY5MSw2ICsxNjkxLDE1IEBACiAJ
CTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMg
LyogSW1hZ2VGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU1QTMzNkY3MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBMzM2RjYxRDgyMDlG
NDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi87IH07CiAJCTU1QTMzNkY5MUQ4MjFFM0MwMDIy
QzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2lu
Z1N0b3JlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTVBNDUwNEUyMDg1MjNBODAwM0NEMEQwIC8qIFNWR1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBNDUwNEEyMDg1MDI4OTAwM0NE
MEQwIC8qIFNWR1ZhbHVlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTU1QTQ1MDRGMjA4NTJCOEIwMDNDRDBEMCAvKiBTVkdWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUxMzdCMzQyMDND
RUI3MTAwMDEwMDRCIC8qIFNWR1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVBNDUwNTAyMDg1MkJBQjAwM0NEMEQwIC8qIFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMzlDMzZEMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVB
NDUwNTEyMDg1MkJDMDAwM0NEMEQwIC8qIFNWR1BhdGhTZWdMaXN0VmFsdWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5QzM2RjFEREJBM0UwMDBG
RUZCMjkgLyogU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0NTA1MjIwODUyQkNGMDAzQ0QwRDAgLyogU1ZH
TnVtYmVyTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MzOUMzNjkxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0
NTA1MzIwODUyQzE4MDAzQ0QwRDAgLyogU1ZHQW5nbGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RjIyNDMxREQzQjNCOTAwRTkyREEzIC8q
IFNWR0FuZ2xlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1NUE0NTA1NDIwODUyQzQ2MDAzQ0QwRDAgLyogU1ZHTWFya2VyVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MTM3QjJDMjAz
NzlFNTUwMDAxMDA0QiAvKiBTVkdNYXJrZXJUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU1QTQ1MDU1MjA4NTJENDcwMDNDRDBEMCAvKiBT
VkdQb2ludExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDMzlDMzZCMUREQjg3MUMwMEZFRkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUE0
NTA1NjIwODUyRDdEMDAzQ0QwRDAgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhGMjI0NjFERDNE
MUM1MDBFOTJEQTMgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVBRjE0RTYxRUFBQzU5QjAw
MjZFRUFBIC8qIFVUSVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NUFGMTRFNDFFQUFDNTlCMDAyNkVFQUEgLyogVVRJUmVnaXN0cnkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NUVDOTU5
OTIwNkFBN0EwMDA3REQwQTkgLyogUGFpbnRGcmVxdWVuY3lUcmFja2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVDOTU5NzIwNjlDOTJEMDA3REQw
QTkgLyogUGFpbnRGcmVxdWVuY3lUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcwNDQwNUExRTUzOTM2MjAwMzU2NjAxIC8qIEpTQWVz
Q2JjQ2ZiUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzA0NDA1OTFFNTM5MzYyMDAzNTY2MDEgLyogSlNBZXNDYmNDZmJQYXJhbXMuaCAqLzsg
fTsKQEAgLTE5OTcsNyArMjAwNiw3IEBACiAJCTcxNUFENzIwMjA1MDUxMzIwMEQ1OTJEQyAvKiBE
ZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzE1QUQ3MUQyMDUwNTEyNDAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzE1QUQ3MjEyMDUwNTEzRjAwRDU5MkRDIC8qIENTU1RyYW5zaXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMjNDMTg2MjA0NzM5QkEwMDc4OTM5
MiAvKiBDU1NUcmFuc2l0aW9uLmggKi87IH07CiAJCTcxQTFCNjA4MURFRTVBRDcwMDczQkNGQiAv
KiBtb2Rlcm4tbWVkaWEtY29udHJvbHMtbG9jYWxpemVkLXN0cmluZ3MuanMgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQTFCNjA2MURFRTVBODIwMDcz
QkNGQiAvKiBtb2Rlcm4tbWVkaWEtY29udHJvbHMtbG9jYWxpemVkLXN0cmluZ3MuanMgKi87IH07
Ci0JCTcxQTU3REYyMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUE1N0RGMDE1NEJFMjVD
MDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oICovOyB9OworCQk3MUE1N0RGMjE1NEJFMjVD
MDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhV
dGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MUIyODQyNzIwM0NFQzRDMDAzNkFBNUQgLyogSlNDU1NBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjI4NDI2MjAzQ0VDMEQw
MDM2QUE1RCAvKiBKU0NTU0FuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcxQzI5RTMyMjAzQ0U3ODEwMDhGMzZEMiAvKiBDU1NBbmlt
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
QzI5RTMwMjAzQ0U3NkIwMDhGMzZEMiAvKiBDU1NBbmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MUM5MTYwODFEMTQ4M0EzMDBBQ0E0
N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjEwMSw3ICsyMTEwLDcgQEAKIAkJN0MzMEQ5ODYxRjgx
NUFFQzAwMjY4MzU2IC8qIEpTQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzBEOTgxMUY4MTVBQzEwMDI2ODM1NiAvKiBKU0Fib3J0
U2lnbmFsLmggKi87IH07CiAJCTdDMzMwQTAyMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDMzMwQTAxMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0NvbnRleHQzREF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3QzMzMEEwODFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMwQTA2MURGOUY5
NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovOyB9OwotCQk3QzM5QzM2NTFEREE4
NjUyMDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjMxRERBODY0OTAwRkVGQjI5IC8qIFNW
R0xlbmd0aExpc3RWYWx1ZXMuaCAqLzsgfTsKKwkJN0MzOUMzNjUxRERBODY1MjAwRkVGQjI5IC8q
IFNWR0xlbmd0aExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMzlDMzYzMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFs
dWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0MzOUMzNzcxRERCRTE3MDAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzY3MUREQjgyQ0Yw
MEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MzQTkxRTYxQzk2M0I4ODAwRDFBN0UzIC8qIENs
aXBib2FyZEFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0UzIC8qIENsaXBib2FyZEFjY2Vzc1Bv
bGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdDM0I3OTcxMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NkYxOTA4NzU3
QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CkBAIC0yMjM0LDggKzIy
NDMsOCBAQAogCQk3Q0UxOTE3QjFGMkFCRTcxMDAyNzJGNzggLyogSlNGZXRjaFJlcXVlc3RSZWRp
cmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NF
MTkxNkExRjJBQjcwNjAwMjcyRjc4IC8qIEpTRmV0Y2hSZXF1ZXN0UmVkaXJlY3QuaCAqLzsgfTsK
IAkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNWR1BvaW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U1OEQ0OTFERDY0QTVCMDAxMjg1NTIg
LyogU1ZHUG9pbnQuaCAqLzsgfTsKIAkJN0NFNThENTAxREQ2OUExRTAwMTI4NTUyIC8qIFNWR051
bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NF
NThENEYxREQ2OUExRTAwMTI4NTUyIC8qIFNWR051bWJlci5oICovOyB9OwotCQk3Q0U1OEQ1ODFE
RDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTU4RDU2MUREN0Q5NkQwMDEyODU1MiAvKiBT
VkdUcmFuc2Zvcm1WYWx1ZS5oICovOyB9OwotCQk3Q0U1OEQ1QzFERDdFQzlDMDAxMjg1NTIgLyog
U1ZHTWF0cml4VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDRTU4RDVCMUREN0VDOUMwMDEyODU1MiAvKiBTVkdNYXRyaXhWYWx1ZS5oICovOyB9
OworCQk3Q0U1OEQ1ODFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTU4RDU2MUREN0Q5
NkQwMDEyODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDRTU4RDVDMUREN0VDOUMwMDEyODU1MiAvKiBT
VkdNYXRyaXhWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NFNThENUIxREQ3RUM5QzAwMTI4NTUyIC8qIFNWR01hdHJpeFZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NFNjgzNDQxOTIx
NDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNjgzNDIxOTIxNDNBODAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwICovOyB9OwogCQk3Q0U2
ODM0NTE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNjgzNDMxOTIx
NDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Q0U2ODM0NzE5MjE4MjE1
MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2ODM0NjE5MjE4MjE1MDBG
NEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIzNzgsNyArMjM4Nyw3IEBA
CiAJCTgzRkU3Q0E3MURBOUYxQTcwMDM3MjM3QyAvKiBVSUV2ZW50SW5pdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGRTdDQTQxREE5RjE2NjAwMzcy
MzdDIC8qIFVJRXZlbnRJbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODNGRTdDQTgxREE5RjFCNjAwMzcyMzdDIC8qIEV2ZW50TW9kaWZpZXJJ
bml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZF
N0NBMzFEQTlGMTY1MDAzNzIzN0MgLyogRXZlbnRNb2RpZmllckluaXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0ZFOTAyNzFFMzA3QzMwMDAz
RTkxOTkgLyogUGVyZm9ybWFuY2VNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZFOTAyNjFFMzA3QzFDMDAzRTkxOTkgLyogUGVyZm9ybWFu
Y2VNb25pdG9yLmggKi87IH07Ci0JCTg0MTlEMkE3MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRo
Qnl0ZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQxOUQyQTQxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtLmggKi87IH07
CisJCTg0MTlEMkE3MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQxOUQyQTQxMjBEOTJE
MDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQxOUQyQTkxMjBEOTJEMDAwMTQxRjhGIC8qIFNW
R1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODQxOUQyQTYxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3Ry
ZWFtQnVpbGRlci5oICovOyB9OwogCQk4NDE5RDJBRDEyMEQ5MkZDMDAxNDFGOEYgLyogU1ZHUGF0
aEJ5dGVTdHJlYW1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0MTlEMkFCMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNv
dXJjZS5oICovOyB9OwogCQk4NDE5RDJCQTEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmlu
Z0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0MTlEMkI4MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5oICovOyB9
OwpAQCAtMjQwNSw3ICsyNDE0LDcgQEAKIAkJODQ3MzBEOTMxMjQ4RjBCMzAwRDNBOUM5IC8qIFNw
b3RMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODQ3MzBENzYxMjQ4RjBCMzAwRDNBOUM5IC8qIFNwb3RMaWdodFNvdXJjZS5oICovOyB9
OwogCQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDc2QzlFNDEx
REY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggKi87IH07CiAJCTg0NzZD
OUVCMTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRoQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ3NkM5RTgxMURGNkEyOTAwNTU1QjAyIC8q
IFNWR1BhdGhCdWlsZGVyLmggKi87IH07Ci0JCTg0NzZDOUVDMTFERjZBMjkwMDU1NUIwMiAvKiBT
VkdQYXRoQ29uc3VtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg0NzZDOUU5MTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRoQ29uc3VtZXIuaCAqLzsg
fTsKKwkJODQ3NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ3NkM5RTkxMURGNkEy
OTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg0NzZDOUYwMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQ
YXRoUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NDc2QzlFRTExREY2QTU4MDA1NTVCMDIgLyogU1ZHUGF0aFBhcnNlci5oICovOyB9OwogCQk4
NDgwMTk1NTEwOEJBRkIzMDBDQjJCMUYgLyogRkVHYXVzc2lhbkJsdXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0ODAxOTUzMTA4QkFGQjMwMENCMkIx
RiAvKiBGRUdhdXNzaWFuQmx1ci5oICovOyB9OwogCQk4NDgyQjc0NjExOThDMzU0MDBCRkIwMDUg
LyogSGFzaENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNDQyQkJGODExOTRDOUQzMDBENDk0NjkgLyogSGFzaENoYW5nZUV2ZW50Lmgg
Ki87IH07CkBAIC0zMzU3LDcgKzMzNjYsNyBAQAogCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjIyMjc4QkIwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR051bWJlckxpc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjIyN0E1NzBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhDMTBEMDBCRjIwMDA3MUI3ODIgLyog
U1ZHUGFyc2VyVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQjIyMjdBNTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhD
MzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBNUIw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEM1MEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYXRo
U2VnLmggKi87IH07CisJCUIyMjI3QTVCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhDNTBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3QTVFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQ
YXRoU2VnQXJjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjIyNzhDODBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0FyYy5oICovOyB9OwogCQlC
MjIyN0E2MjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc4Q0MwRDAwQkYyMDAw
NzFCNzgyIC8qIFNWR1BhdGhTZWdDbG9zZVBhdGguaCAqLzsgfTsKIAkJQjIyMjdBNjUwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OENGMEQwMEJGMjAwMDcxQjc4MiAvKiBT
VkdQYXRoU2VnQ3VydmV0b0N1YmljLmggKi87IH07CkBAIC04Mjc3LDYgKzgyODYsNyBAQAogCQk1
NTk3RkNDQjIwNzZDMDY4MDBEMzVCQjAgLyogR2x5cGhEaXNwbGF5TGlzdENhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoRGlzcGxheUxpc3RDYWNoZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBMzM2RjgxRDgyMUUzQzAwMjJDNEM3
IC8qIEltYWdlQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1QTQ1
MDRBMjA4NTAyODkwMDNDRDBEMCAvKiBTVkdWYWx1ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1QUYxNEUzMUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVVElSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1QUYxNEU0MUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVVElSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUQ0MDhGNzFB
N0M2MzE4MDBDNzg0NTAgLyogU1ZHSW1hZ2VDbGllbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjMxMTQsNiArMjMxMjQsNyBAQAogCQkJCUIyMjI3OTU3MEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdVc2VFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5NTgwRDAwQkYyMTAwNzFCNzgyIC8qIFNW
R1VzZUVsZW1lbnQuaWRsICovLAogCQkJCTU1MTM3QjM0MjAzQ0VCNzEwMDAxMDA0QiAvKiBTVkdW
YWx1ZS5oICovLAorCQkJCTU1QTQ1MDRBMjA4NTAyODkwMDNDRDBEMCAvKiBTVkdWYWx1ZUxpc3Qu
aCAqLywKIAkJCQlCMjIyNzk1OTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVmlld0VsZW1lbnQuY3Bw
ICovLAogCQkJCUIyMjI3OTVBMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5oICov
LAogCQkJCUIyMjI3OTVCMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5pZGwgKi8s
CkBAIC0zMDAyMyw2ICszMDAzNCw3IEBACiAJCQkJNjU2NTNGMkUwRDk3MjdEMjAwQ0E5NzIzIC8q
IFNWR0FsdEdseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyQjgxM0NBOUE2
OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTVBNDUwNTMyMDg1MkMxODAwM0NEMEQwIC8qIFNWR0FuZ2xlVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OTdBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODdCODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZH
QW5pbWF0ZWRBbmdsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1Nzk3MDkxMjc4Mzk0QzAwQThF
QzVGIC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDEzNyw2ICsz
MDE0OSw3IEBACiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RUUxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtl
ckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTQ0MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdNYXJrZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUE0NTA1NDIwODUyQzQ2MDAz
Q0QwRDAgLyogU1ZHTWFya2VyVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTQ3MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgw
NkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDhDQTNENDQxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzAxNDYsNiArMzAxNTksNyBAQAogCQkJCUIyMjI3QTRFMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdNUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDUwMURENjlB
MUUwMDEyODU1MiAvKiBTVkdOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTUxMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUE0
NTA1MjIwODUyQkNGMDAzQ0QwRDAgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBNTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNp
bmdFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRDNjc4NEQxMjE0ODE0NzAwQTkyOTAyIC8q
IFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMTg0LDYgKzMwMTk4LDcgQEAK
IAkJCQlCMjIyN0E4MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0xpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0NzZDOUU2MTFERjZBMEIwMDU1NUIwMiAvKiBTVkdQYXRoU2VnTGlzdEJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0QjZCOTc4MTIwRjEzRTUwMEI4RUZBRiAvKiBT
VkdQYXRoU2VnTGlzdFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTVBNDUwNTEyMDg1MkJD
MDAwM0NEMEQwIC8qIFNWR1BhdGhTZWdMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0MxRDQzNTE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ01vdmV0b0Ficy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODNDMUQ0MzYxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhTZWdNb3ZldG9S
ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MkRFNDJEMTI5MjYyMTYwMEQ5MjNERiAvKiBTVkdQ
YXRoU2VnV2l0aENvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzAxOTUsMTAgKzMwMjEwLDEy
IEBACiAJCQkJQjIyMjdBODgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0U1OEQ0QTFERDY0QTVCMDAxMjg1NTIgLyogU1ZHUG9pbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QThDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2lu
dExpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1QTQ1MDU1MjA4NTJENDcwMDNDRDBEMCAvKiBT
VkdQb2ludExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QThGMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOTEw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0E5NDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpby5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTVBNDUwNTYyMDg1MkQ3RDAwM0NEMEQwIC8q
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBF
MEExMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
ODFERDQ5QzEzQkExQTYwMDBEQzc2MjcgLyogU1ZHUHJvcGVydHlJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODhBMEUwQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmgg
aW4gSGVhZGVycyAqLywKQEAgLTMwMjUwLDYgKzMwMjY3LDcgQEAKIAkJCQlCMjIyN0FEQTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBREQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybURpc3RhbmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FERjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTVBNDUwNTAyMDg1MkJBQjAwM0NEMEQwIC8qIFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDU4MUREN0Q5NkQwMDEy
ODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTIw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyN0FFNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTMwMjU3LDYgKzMwMjc1LDggQEAKIAkJCQkzN0M3MzhFRDFFREJENUJDMDAzRjJCMEIg
LyogU1ZHVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUVBMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdVUklSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QUVEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdVc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NUE0NTA0RjIwODUyQjhCMDAzQ0QwRDAgLyogU1ZHVmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU1QTQ1MDRFMjA4NTIzQTgwMDNDRDBEMCAvKiBTVkdWYWx1ZUxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3QUYwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ZpZXdTcGVj
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDg1MjI4QjExOTAxNzNDMDA2RURDN0YgLyogU1ZHVktl
cm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUGF0aERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCShyZXZpc2lvbiAyMzA2OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA1LDEx
ICsxMDYsMTEgQEAgc3RhdGljIFBhdGggcGF0aEZyb21Qb2x5Z29uRWxlbWVudChTVkdFbAogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGgubW92ZVRvKHBvaW50
cy5maXJzdCgpKTsKKyAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3RSZWZlcmVuY2UoKSk7CiAK
ICAgICB1bnNpZ25lZCBzaXplID0gcG9pbnRzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXQoaSkp
OworICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXRSZWZlcmVuY2UoaSkpOwogCiAgICAg
cGF0aC5jbG9zZVN1YnBhdGgoKTsKICAgICByZXR1cm4gcGF0aDsKQEAgLTEyMiwxMSArMTIzLDEx
IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUG9seWxpbmVFbGVtZW50KFNWR0UKICAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3Qo
KSk7CisgICAgcGF0aC5tb3ZlVG8ocG9pbnRzLmZpcnN0UmVmZXJlbmNlKCkpOwogCiAgICAgdW5z
aWduZWQgc2l6ZSA9IHBvaW50cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgcGF0aC5hZGRMaW5lVG8ocG9pbnRzLmF0KGkpKTsKKyAgICAg
ICAgcGF0aC5hZGRMaW5lVG8ocG9pbnRzLmF0UmVmZXJlbmNlKGkpKTsKICAgICByZXR1cm4gcGF0
aDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAkocmV2aXNpb24gMjMw
NjkzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC0yMDExLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2MywxNSArMTY0LDE1IEBAIHZv
aWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWkKIHN0YXRpYyBpbmxpbmUgdm9p
ZCB1cGRhdGVDaGFyYWN0ZXJEYXRhKHVuc2lnbmVkIGksIGZsb2F0JiBsYXN0Um90YXRpb24sIFNW
R0NoYXJhY3RlckRhdGEmIGRhdGEsIGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGxlbmd0aENvbnRl
eHQsIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMqIHhMaXN0LCBjb25zdCBTVkdMZW5ndGhMaXN0
VmFsdWVzKiB5TGlzdCwgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyogZHhMaXN0LCBjb25zdCBT
VkdMZW5ndGhMaXN0VmFsdWVzKiBkeUxpc3QsIGNvbnN0IFNWR051bWJlckxpc3RWYWx1ZXMqIHJv
dGF0ZUxpc3QpCiB7CiAgICAgaWYgKHhMaXN0KQotICAgICAgICBkYXRhLnggPSB4TGlzdC0+YXQo
aSkudmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAgICAgIGRhdGEueCA9IHhMaXN0LT5hdFJlZmVy
ZW5jZShpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKICAgICBpZiAoeUxpc3QpCi0gICAgICAgIGRh
dGEueSA9IHlMaXN0LT5hdChpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgZGF0YS55
ID0geUxpc3QtPmF0UmVmZXJlbmNlKGkpLnZhbHVlKGxlbmd0aENvbnRleHQpOwogICAgIGlmIChk
eExpc3QpCi0gICAgICAgIGRhdGEuZHggPSBkeExpc3QtPmF0KGkpLnZhbHVlKGxlbmd0aENvbnRl
eHQpOworICAgICAgICBkYXRhLmR4ID0gZHhMaXN0LT5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5n
dGhDb250ZXh0KTsKICAgICBpZiAoZHlMaXN0KQotICAgICAgICBkYXRhLmR5ID0gZHlMaXN0LT5h
dChpKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgZGF0YS5keSA9IGR5TGlzdC0+YXRS
ZWZlcmVuY2UoaSkudmFsdWUobGVuZ3RoQ29udGV4dCk7CiAgICAgaWYgKHJvdGF0ZUxpc3QpIHsK
LSAgICAgICAgZGF0YS5yb3RhdGUgPSByb3RhdGVMaXN0LT5hdChpKTsKKyAgICAgICAgZGF0YS5y
b3RhdGUgPSByb3RhdGVMaXN0LT5hdFJlZmVyZW5jZShpKTsKICAgICAgICAgbGFzdFJvdGF0aW9u
ID0gZGF0YS5yb3RhdGU7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkTGVuZ3RoTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAJKHJldmlzaW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NSw3ICs3
Niw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEEKIAogICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChtX2NvbnRleHRFbGVtZW50KTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJvbUxlbmd0aExpc3RTaXplOyArK2kpCi0gICAgICAgIHRv
TGVuZ3RoTGlzdFtpXS5zZXRWYWx1ZSh0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4
dCkgKyBmcm9tTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4
dCk7CisgICAgICAgIHRvTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS5zZXRWYWx1ZSh0b0xlbmd0
aExpc3QuYXRSZWZlcmVuY2UoaSkudmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tTGVuZ3RoTGlz
dC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7CiB9
CiAKIHN0YXRpYyBTVkdMZW5ndGhMaXN0VmFsdWVzIHBhcnNlTGVuZ3RoTGlzdEZyb21TdHJpbmco
U1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCkBAIC0xMDgsMTggKzEwOSwxOCBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yOjpjYWxjCiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQobV9jb250ZXh0
RWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvTGVuZ3RoTGlzdFNpemU7
ICsraSkgewotICAgICAgICBmbG9hdCBhbmltYXRlZE51bWJlciA9IGFuaW1hdGVkTGVuZ3RoTGlz
dFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KTsKLSAgICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlw
ZSA9IHRvTGVuZ3RoTGlzdFtpXS51bml0VHlwZSgpOworICAgICAgICBmbG9hdCBhbmltYXRlZE51
bWJlciA9IGFuaW1hdGVkTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250
ZXh0KTsKKyAgICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSA9IHRvTGVuZ3RoTGlzdC5hdFJl
ZmVyZW5jZShpKS51bml0VHlwZSgpOwogICAgICAgICBmbG9hdCBlZmZlY3RpdmVGcm9tID0gMDsK
ICAgICAgICAgaWYgKGZyb21MZW5ndGhMaXN0U2l6ZSkgewogICAgICAgICAgICAgaWYgKHBlcmNl
bnRhZ2UgPCAwLjUpCi0gICAgICAgICAgICAgICAgdW5pdFR5cGUgPSBmcm9tTGVuZ3RoTGlzdFtp
XS51bml0VHlwZSgpOwotICAgICAgICAgICAgZWZmZWN0aXZlRnJvbSA9IGZyb21MZW5ndGhMaXN0
W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgICAgICAgICAgICAgIHVuaXRUeXBlID0gZnJv
bUxlbmd0aExpc3QuYXRSZWZlcmVuY2UoaSkudW5pdFR5cGUoKTsKKyAgICAgICAgICAgIGVmZmVj
dGl2ZUZyb20gPSBmcm9tTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250
ZXh0KTsKICAgICAgICAgfQotICAgICAgICBmbG9hdCBlZmZlY3RpdmVUb0F0RW5kID0gaSA8IHRv
QXRFbmRPZkR1cmF0aW9uTGlzdFNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3RbaV0u
dmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOworICAgICAgICBmbG9hdCBlZmZlY3RpdmVUb0F0RW5k
ID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uTGlzdFNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0
aExpc3QuYXRSZWZlcmVuY2UoaSkudmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOwogCi0gICAgICAg
IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJl
cGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLCB0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29u
dGV4dCksIGVmZmVjdGl2ZVRvQXRFbmQsIGFuaW1hdGVkTnVtYmVyKTsKLSAgICAgICAgYW5pbWF0
ZWRMZW5ndGhMaXN0W2ldLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBt
X2xlbmd0aE1vZGUsIHVuaXRUeXBlKTsKKyAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmlt
YXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20s
IHRvTGVuZ3RoTGlzdC5hdFJlZmVyZW5jZShpKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgZWZmZWN0
aXZlVG9BdEVuZCwgYW5pbWF0ZWROdW1iZXIpOworICAgICAgICBhbmltYXRlZExlbmd0aExpc3Qu
YXRSZWZlcmVuY2UoaSkuc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgYW5pbWF0ZWROdW1iZXIsIG1f
bGVuZ3RoTW9kZSwgdW5pdFR5cGUpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDIzMDY5MykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmFk
ZEEKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyb21O
dW1iZXJMaXN0U2l6ZTsgKytpKQotICAgICAgICB0b051bWJlckxpc3RbaV0gKz0gZnJvbU51bWJl
ckxpc3RbaV07CisgICAgICAgIHRvTnVtYmVyTGlzdC5hdFJlZmVyZW5jZShpKSArPSBmcm9tTnVt
YmVyTGlzdC5hdFJlZmVyZW5jZShpKTsKIH0KIAogdm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRv
LCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFu
aW1hdGVkKQpAQCAtOTMsOSArOTMsOSBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1h
dG9yOjpjYWxjCiAgICAgdW5zaWduZWQgdG9BdEVuZE9mRHVyYXRpb25TaXplID0gdG9BdEVuZE9m
RHVyYXRpb25OdW1iZXJMaXN0LnNpemUoKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b051bWJlckxpc3RTaXplOyArK2kpIHsKLSAgICAgICAgZmxvYXQgZWZmZWN0aXZlRnJvbSA9
IGZyb21OdW1iZXJMaXN0U2l6ZSA/IGZyb21OdW1iZXJMaXN0W2ldIDogMDsKLSAgICAgICAgZmxv
YXQgZWZmZWN0aXZlVG9BdEVuZCA9IGkgPCB0b0F0RW5kT2ZEdXJhdGlvblNpemUgPyB0b0F0RW5k
T2ZEdXJhdGlvbk51bWJlckxpc3RbaV0gOiAwOwotICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQt
PmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZl
RnJvbSwgdG9OdW1iZXJMaXN0W2ldLCBlZmZlY3RpdmVUb0F0RW5kLCBhbmltYXRlZE51bWJlckxp
c3RbaV0pOworICAgICAgICBmbG9hdCBlZmZlY3RpdmVGcm9tID0gZnJvbU51bWJlckxpc3RTaXpl
ID8gZnJvbU51bWJlckxpc3QuYXRSZWZlcmVuY2UoaSkgOiAwOworICAgICAgICBmbG9hdCBlZmZl
Y3RpdmVUb0F0RW5kID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uU2l6ZSA/IHRvQXRFbmRPZkR1cmF0
aW9uTnVtYmVyTGlzdC5hdFJlZmVyZW5jZShpKSA6IDA7CisgICAgICAgIG1fYW5pbWF0aW9uRWxl
bWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBlZmZl
Y3RpdmVGcm9tLCB0b051bWJlckxpc3QuYXRSZWZlcmVuY2UoaSksIGVmZmVjdGl2ZVRvQXRFbmQs
IGFuaW1hdGVkTnVtYmVyTGlzdC5hdFJlZmVyZW5jZShpKSk7CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAJKHJldmlzaW9uIDIz
MDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtNzUsNyArNzYsNyBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0
QW5pbWF0b3I6OmFkZEFuCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmcm9tUG9pbnRMaXN0U2l6ZTsgKytpKQotICAgICAgICB0b1BvaW50TGlzdFtpXSAr
PSBmcm9tUG9pbnRMaXN0W2ldOworICAgICAgICB0b1BvaW50TGlzdC5hdFJlZmVyZW5jZShpKSAr
PSBmcm9tUG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVkUG9p
bnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRU
eXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlvbiwgU1ZHQW5pbWF0ZWRU
eXBlKiBhbmltYXRlZCkKQEAgLTk2LDE0ICs5NywxNCBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3I6OmNhbGN1CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvUG9pbnRM
aXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIEZsb2F0UG9pbnQgZWZmZWN0aXZlRnJvbTsKICAgICAg
ICAgaWYgKGZyb21Qb2ludExpc3RTaXplKQotICAgICAgICAgICAgZWZmZWN0aXZlRnJvbSA9IGZy
b21Qb2ludExpc3RbaV07Ci0gICAgICAgIEZsb2F0UG9pbnQgZWZmZWN0aXZlVG9BdEVuZCA9IGkg
PCB0b0F0RW5kT2ZEdXJhdGlvblNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvblBvaW50TGlzdFtpXSA6
IEZsb2F0UG9pbnQoKTsKKyAgICAgICAgICAgIGVmZmVjdGl2ZUZyb20gPSBmcm9tUG9pbnRMaXN0
LmF0UmVmZXJlbmNlKGkpOworICAgICAgICBGbG9hdFBvaW50IGVmZmVjdGl2ZVRvQXRFbmQgPSBp
IDwgdG9BdEVuZE9mRHVyYXRpb25TaXplID8gdG9BdEVuZE9mRHVyYXRpb25Qb2ludExpc3QuYXRS
ZWZlcmVuY2UoaSkgOiBGbG9hdFBvaW50KCk7CiAKLSAgICAgICAgZmxvYXQgYW5pbWF0ZWRYID0g
YW5pbWF0ZWRQb2ludExpc3RbaV0ueCgpOwotICAgICAgICBmbG9hdCBhbmltYXRlZFkgPSBhbmlt
YXRlZFBvaW50TGlzdFtpXS55KCk7Ci0gICAgICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLngo
KSwgdG9Qb2ludExpc3RbaV0ueCgpLCBlZmZlY3RpdmVUb0F0RW5kLngoKSwgYW5pbWF0ZWRYKTsK
LSAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2Vu
dGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20ueSgpLCB0b1BvaW50TGlzdFtpXS55KCks
IGVmZmVjdGl2ZVRvQXRFbmQueSgpLCBhbmltYXRlZFkpOwotICAgICAgICBhbmltYXRlZFBvaW50
TGlzdFtpXSA9IEZsb2F0UG9pbnQoYW5pbWF0ZWRYLCBhbmltYXRlZFkpOworICAgICAgICBmbG9h
dCBhbmltYXRlZFggPSBhbmltYXRlZFBvaW50TGlzdC5hdFJlZmVyZW5jZShpKS54KCk7CisgICAg
ICAgIGZsb2F0IGFuaW1hdGVkWSA9IGFuaW1hdGVkUG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkpLnko
KTsKKyAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVy
Y2VudGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20ueCgpLCB0b1BvaW50TGlzdC5hdFJl
ZmVyZW5jZShpKS54KCksIGVmZmVjdGl2ZVRvQXRFbmQueCgpLCBhbmltYXRlZFgpOworICAgICAg
ICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCBy
ZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbS55KCksIHRvUG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkp
LnkoKSwgZWZmZWN0aXZlVG9BdEVuZC55KCksIGFuaW1hdGVkWSk7CisgICAgICAgIGFuaW1hdGVk
UG9pbnRMaXN0LmF0UmVmZXJlbmNlKGkpID0gRmxvYXRQb2ludChhbmltYXRlZFgsIGFuaW1hdGVk
WSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24gMjMwNjkzKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNyAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC04
MSw4ICs4MSw4IEBAIHZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmEKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGZyb21UcmFuc2Zvcm1MaXN0U2l6ZSA9PSAxKTsK
LSAgICBjb25zdCBhdXRvJiBmcm9tVHJhbnNmb3JtID0gZnJvbVRyYW5zZm9ybUxpc3RbMF07Ci0g
ICAgYXV0byYgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9ybUxpc3RbMF07CisgICAgY29uc3QgYXV0
byYgZnJvbVRyYW5zZm9ybSA9IGZyb21UcmFuc2Zvcm1MaXN0LmZpcnN0UmVmZXJlbmNlKCk7Cisg
ICAgYXV0byYgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9ybUxpc3QuZmlyc3RSZWZlcmVuY2UoKTsK
IAogICAgIEFTU0VSVChmcm9tVHJhbnNmb3JtLnR5cGUoKSA9PSB0b1RyYW5zZm9ybS50eXBlKCkp
OwogICAgIHRvVHJhbnNmb3JtID0gU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9y
bXMoZnJvbVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm0pOwpAQCAtMTA5LDE0ICsxMDksMTQgQEAgdm9p
ZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6YwogICAgICAgICBhbmltYXRlZFRy
YW5zZm9ybUxpc3QuY2xlYXIoKTsKIAogICAgIGF1dG8gZnJvbVRyYW5zZm9ybUxpc3RTaXplID0g
ZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgpOwotICAgIGNvbnN0IGF1dG8mIHRvVHJhbnNmb3JtID0g
dG9UcmFuc2Zvcm1MaXN0WzBdOwotICAgIGNvbnN0IGF1dG8gZWZmZWN0aXZlRnJvbSA9IGZyb21U
cmFuc2Zvcm1MaXN0U2l6ZSA/IGZyb21UcmFuc2Zvcm1MaXN0WzBdIDogU1ZHVHJhbnNmb3JtVmFs
dWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29uc3RydWN0WmVyb1Ry
YW5zZm9ybSk7CisgICAgY29uc3QgYXV0byYgdG9UcmFuc2Zvcm0gPSB0b1RyYW5zZm9ybUxpc3Qu
Zmlyc3RSZWZlcmVuY2UoKTsKKyAgICBjb25zdCBhdXRvIGVmZmVjdGl2ZUZyb20gPSBmcm9tVHJh
bnNmb3JtTGlzdFNpemUgPyBmcm9tVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpIDogU1ZH
VHJhbnNmb3JtVmFsdWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29u
c3RydWN0WmVyb1RyYW5zZm9ybSk7CiAgICAgYXV0byBjdXJyZW50VHJhbnNmb3JtID0gU1ZHVHJh
bnNmb3JtRGlzdGFuY2UoZWZmZWN0aXZlRnJvbSwgdG9UcmFuc2Zvcm0pLnNjYWxlZERpc3RhbmNl
KHBlcmNlbnRhZ2UpLmFkZFRvU1ZHVHJhbnNmb3JtKGVmZmVjdGl2ZUZyb20pOwogICAgIGlmICht
X2FuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11bGF0ZWQoKSAmJiByZXBlYXRDb3VudCkgewotICAg
ICAgICBjb25zdCBhdXRvIGVmZmVjdGl2ZVRvQXRFbmQgPSB0b0F0RW5kT2ZEdXJhdGlvblRyYW5z
Zm9ybUxpc3Quc2l6ZSgpID8gdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0WzBdIDogU1ZH
VHJhbnNmb3JtVmFsdWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29u
c3RydWN0WmVyb1RyYW5zZm9ybSk7Ci0gICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5hcHBl
bmQoU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMoY3VycmVudFRyYW5zZm9y
bSwgZWZmZWN0aXZlVG9BdEVuZCwgcmVwZWF0Q291bnQpKTsKKyAgICAgICAgY29uc3QgYXV0byBl
ZmZlY3RpdmVUb0F0RW5kID0gdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0LnNpemUoKSA/
IHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpIDogU1ZHVHJh
bnNmb3JtVmFsdWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29uc3Ry
dWN0WmVyb1RyYW5zZm9ybSk7CisgICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5hcHBlbmQo
U1ZHVmFsdWU6OmNyZWF0ZTxTVkdUcmFuc2Zvcm1WYWx1ZT4oU1ZHVHJhbnNmb3JtRGlzdGFuY2U6
OmFkZFNWR1RyYW5zZm9ybXMoY3VycmVudFRyYW5zZm9ybSwgZWZmZWN0aXZlVG9BdEVuZCwgcmVw
ZWF0Q291bnQpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5h
cHBlbmQoY3VycmVudFRyYW5zZm9ybSk7CisgICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5h
cHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxTVkdUcmFuc2Zvcm1WYWx1ZT4oY3VycmVudFRyYW5zZm9y
bSkpOwogfQogCiBmbG9hdCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKQpAQCAtMTM1LDEzICsxMzUsMTMgQEAgZmxvYXQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I6OgogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBBU1NFUlQoaXRlbXNDb3VudCA9
PSAxKTsKLSAgICBpZiAoZnJvbVRyYW5zZm9ybUxpc3RbMF0udHlwZSgpICE9IHRvVHJhbnNmb3Jt
TGlzdFswXS50eXBlKCkpCisgICAgaWYgKGZyb21UcmFuc2Zvcm1MaXN0LmZpcnN0UmVmZXJlbmNl
KCkudHlwZSgpICE9IHRvVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpLnR5cGUoKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZH
L2FuaW1hdGUuaHRtbCNjb21wbGV4RGlzdGFuY2VzCiAgICAgLy8gUGFjZWQgYW5pbWF0aW9ucyBh
c3N1bWUgYSBub3Rpb24gb2YgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdmFyaW91cyBhbmltYXRpb24g
dmFsdWVzIGRlZmluZWQgYnkgdGhlIOKAmHRv4oCZLCDigJhmcm9t4oCZLCDigJhieeKAmSBhbmQg
4oCYdmFsdWVz4oCZIGF0dHJpYnV0ZXMuCiAgICAgLy8gRGlzdGFuY2UgaXMgZGVmaW5lZCBvbmx5
IGZvciBzY2FsYXIgdHlwZXMgKHN1Y2ggYXMgPGxlbmd0aD4pLCBjb2xvcnMgYW5kIHRoZSBzdWJz
ZXQgb2YgdHJhbnNmb3JtYXRpb24gdHlwZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IOKAmGFuaW1h
dGVUcmFuc2Zvcm3igJkuCi0gICAgcmV0dXJuIFNWR1RyYW5zZm9ybURpc3RhbmNlKGZyb21UcmFu
c2Zvcm1MaXN0WzBdLCB0b1RyYW5zZm9ybUxpc3RbMF0pLmRpc3RhbmNlKCk7CisgICAgcmV0dXJu
IFNWR1RyYW5zZm9ybURpc3RhbmNlKGZyb21UcmFuc2Zvcm1MaXN0LmZpcnN0UmVmZXJlbmNlKCks
IHRvVHJhbnNmb3JtTGlzdC5maXJzdFJlZmVyZW5jZSgpKS5kaXN0YW5jZSgpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lvbiAyMzA2OTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR1ZhbHVl
VmFyaWFudCBtX3ZhbHVlOworICAgIFNWR0FuaW1hdGVkVHlwZVZhbHVlVmFyaWFudCBtX3ZhbHVl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzA2OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBE
aXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4NCw4
ICsyODUsOCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4CiAgICAg
aWYgKGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6ZGl2aXNvckF0dHIpICYmICFkaXZpc29yVmFsdWUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVz
OjpkaXZpc29yQXR0cikpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrZXJuZWxNYXRy
aXhTaXplOyArK2kpCi0gICAgICAgICAgICBkaXZpc29yVmFsdWUgKz0ga2VybmVsTWF0cml4LmF0
KGkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDoga2VybmVsTWF0cml4KQorICAg
ICAgICAgICAgZGl2aXNvclZhbHVlICs9IHZhbHVlLT5hczxmbG9hdD4oKTsKICAgICAgICAgaWYg
KCFkaXZpc29yVmFsdWUpCiAgICAgICAgICAgICBkaXZpc29yVmFsdWUgPSAxOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9u
IDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0VmFsdWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQ2LDcgKzQ3LDcgQEAgdm9pZCBTVkdMZW5ndGhMaXN0VmFsdWVz
OjpwYXJzZShjb25zdCBTdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAobGVuZ3Ro
LnNldFZhbHVlQXNTdHJpbmcodmFsdWVTdHJpbmcpLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBhcHBlbmQobGVuZ3RoKTsKKyAgICAgICAgYXBwZW5kKFNWR1Zh
bHVlOjpjcmVhdGU8U1ZHTGVuZ3RoVmFsdWU+KGxlbmd0aCkpOwogICAgICAgICBza2lwT3B0aW9u
YWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCk7CiAgICAgfQogfQpAQCAtNjAsNyArNjEs
NyBAQCBTdHJpbmcgU1ZHTGVuZ3RoTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluCiAgICAgICAgIGlm
IChpID4gMCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoYXQoaSkudmFsdWVBc1N0cmluZygpKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXRSZWZlcmVuY2UoaSkudmFsdWVBc1N0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExp
c3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5oCShyZXZpc2lvbiAyMzA2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTQgKzIyLDE0IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCi0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIlNWR1ZhbHVlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNWR0xlbmd0aDsKIGNsYXNzIFNWR0xlbmd0aExpc3Q7CiAKLWNsYXNz
IFNWR0xlbmd0aExpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR0xlbmd0aFZhbHVl
PiB7CitjbGFzcyBTVkdMZW5ndGhMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlTGlz
dDxTVkdMZW5ndGhWYWx1ZT4gewogcHVibGljOgogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5n
JiB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSk7CiAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAJKHJl
dmlzaW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIzLDcgQEAKICNpbmNsdWRlICJTVkdOdW1i
ZXJMaXN0VmFsdWVzLmgiCiAKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJTVkdWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArNDEsNyBAQCB2b2lkIFNWR051bWJlckxpc3RW
YWx1ZXM6OnBhcnNlKGNvbnN0IFN0CiAgICAgd2hpbGUgKHB0ciA8IGVuZCkgewogICAgICAgICBp
ZiAoIXBhcnNlTnVtYmVyKHB0ciwgZW5kLCBudW1iZXIpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBhcHBlbmQobnVtYmVyKTsKKyAgICAgICAgYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8
ZmxvYXQ+KG51bWJlcikpOwogICAgIH0KIH0KIApAQCAtNTIsNyArNTQsNyBAQCBTdHJpbmcgU1ZH
TnVtYmVyTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluCiAgICAgICAgIGlmIChpID4gMCkKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIoYXQoaSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihhdFJlZmVyZW5jZShpKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjMwNjkzKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3RWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTIxLDE0ICsyMiwxNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRy
YWl0cy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJTVkdWYWx1ZUxpc3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdOdW1iZXI7CiBjbGFzcyBTVkdO
dW1iZXJMaXN0OwogCi1jbGFzcyBTVkdOdW1iZXJMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZl
Y3RvcjxmbG9hdD4geworY2xhc3MgU1ZHTnVtYmVyTGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBT
VkdWYWx1ZUxpc3Q8ZmxvYXQ+IHsKIHB1YmxpYzoKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmlu
ZyYpOwogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjMwNjkzKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4OSw3ICsyODksNyBAQCBib29sIHBvaW50c0xpc3RGcm9tU1ZHRGF0YShTVkdQb2ludExpc3RW
CiAgICAgICAgIH0KICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1ciwgZW5kKTsKIAot
ICAgICAgICBwb2ludHNMaXN0LmFwcGVuZChGbG9hdFBvaW50KHhQb3MsIHlQb3MpKTsKKyAgICAg
ICAgcG9pbnRzTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxGbG9hdFBvaW50PihGbG9hdFBv
aW50KHhQb3MsIHlQb3MpKSk7CiAgICAgfQogICAgIHJldHVybiBjdXIgPT0gZW5kICYmICFkZWxp
bVBhcnNlZDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2
aXNpb24gMjMwNjkzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBh
dGhTZWdMaXN0Q2hhbmdlZCgKICAgICBjYXNlIFBhdGhTZWdVbmFsdGVyZWRSb2xlOgogICAgICAg
ICBpZiAobGlzdE1vZGlmaWNhdGlvbiA9PSBMaXN0TW9kaWZpY2F0aW9uQXBwZW5kKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1fcGF0aFNlZ0xpc3QudmFsdWUuaXNFbXB0eSgpKTsKLSAgICAgICAg
ICAgIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcobV9wYXRoU2VnTGlzdC52
YWx1ZS5sYXN0KCkuY29weVJlZigpLCBtX3BhdGhCeXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5n
KTsKKyAgICAgICAgICAgIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcobV9w
YXRoU2VnTGlzdC52YWx1ZS5sYXN0UmVmZXJlbmNlKCkuY29weVJlZigpLCBtX3BhdGhCeXRlU3Ry
ZWFtLCBVbmFsdGVyZWRQYXJzaW5nKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBidWls
ZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0VmFsdWVzKG1fcGF0aFNlZ0xpc3Qu
dmFsdWUsIG1fcGF0aEJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICBtX2Nh
Y2hlZFBhdGggPSBzdGQ6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3QuaAkocmV2aXNpb24gMjMwNjkzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgICAg
IHVuc2lnbmVkIHNpemUgPSBtX3ZhbHVlcy0+c2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbV92YWx1ZXMt
PmF0KGkpKQorICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbV92YWx1ZXMtPmF0UmVmZXJlbmNlKGkp
KQogICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyMzA2OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBUaGUg
S2FyYm9uIERldmVsb3BlcnMKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4YW5kZXIgS2VsbGV0
dCA8bHlwYW5vdkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
QEAgLTU4LDc4ICs1OCw3OCBAQCBTVkdQYXRoU2VnTGlzdEJ1aWxkZXI6OlNWR1BhdGhTZWdMaXN0
QnVpCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQm
IHRhcmdldFBvaW50LCBib29sLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAo
bW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVu
ZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnModGFyZ2V0UG9pbnQueCgp
LCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlz
dC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1l
bnQuY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0Ficyh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50
LnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3Qu
YXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b1JlbCh0YXJnZXRQb2lu
dC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhT
ZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRo
RWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0
UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0
ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAg
ICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdM
aW5ldG9BYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1fcGF0aFNlZ1JvbGUp
KTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8
U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0Ficyh0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0
aFNlZ0xpbmV0b1JlbCh0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2Vn
Um9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJl
ZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVs
KHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogfQog
CiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bGluZVRvSG9yaXpvbnRhbChmbG9hdCB4LCBQ
YXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3Jk
aW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0
ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzKHgsIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAg
ICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNl
Zz4+KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoeCwg
bV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5k
KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwoeCwgbV9w
YXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3Jl
YXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGlu
ZXRvSG9yaXpvbnRhbFJlbCh4LCBtX3BhdGhTZWdSb2xlKSkpOwogfQogCiB2b2lkIFNWR1BhdGhT
ZWdMaXN0QnVpbGRlcjo6bGluZVRvVmVydGljYWwoZmxvYXQgeSwgUGF0aENvb3JkaW5hdGVNb2Rl
IG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAg
bV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnTGluZXRv
VmVydGljYWxBYnMoeSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFw
cGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5j
cmVhdGVTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMoeSwgbV9wYXRoU2VnUm9sZSkpKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRl
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKHksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAg
bV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+
KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsKHksIG1fcGF0
aFNlZ1JvbGUpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvQ3Vi
aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNv
bnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsK
ICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3BhdGhTZWdM
aXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMo
dGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCks
IHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRo
U2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+KG1fcGF0
aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyh0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9p
bnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGF0aFNlZ0xp
c3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCh0
YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwg
cG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhT
ZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRo
RWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2lu
dDIueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVpbGRl
cjo6Y3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxv
YXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlm
IChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBw
ZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyh0
YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwg
bV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6
Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoQWJzKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBw
b2ludDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2lu
dDIueCgpLCBwb2ludDIueSgpLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xp
c3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVt
ZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQueCgp
LCB0YXJnZXRQb2ludC55KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIG1fcGF0aFNlZ1JvbGUp
KSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljKGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBh
dGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRp
bmF0ZXMpCi0gICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRl
U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2lu
dC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCksIG1fcGF0aFNlZ1JvbGUpKTsKKyAgICAgICAg
bV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+
KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnModGFyZ2V0
UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHBvaW50MS54KCksIHBvaW50MS55KCksIG1fcGF0
aFNlZ1JvbGUpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3Bh
dGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKHRhcmdldFBvaW50
LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBtX3BhdGhTZWdS
b2xlKSk7CisgICAgICAgIG1fcGF0aFNlZ0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVm
UHRyPFNWR1BhdGhTZWc+PihtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCBwb2ludDEueCgpLCBw
b2ludDEueSgpLCBtX3BhdGhTZWdSb2xlKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6Y3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2lu
dCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVD
b29yZGluYXRlcykKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxlbWVudC5j
cmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyh0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0
LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVu
dC5jcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyh0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSwgbV9wYXRoU2VnUm9sZSkpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fcGF0aFNlZ0xpc3QuYXBwZW5kKG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIG1f
cGF0aFNlZ1JvbGUpKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQoU1ZHVmFsdWU6OmNy
ZWF0ZTxSZWZQdHI8U1ZHUGF0aFNlZz4+KG1fcGF0aEVsZW1lbnQuY3JlYXRlU1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwodGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCks
IG1fcGF0aFNlZ1JvbGUpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyOjphcmNU
byhmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9v
bCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0
ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAg
ICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChtX3BhdGhFbGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdB
cmNBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCksIHIxLCByMiwgYW5nbGUsIGxh
cmdlQXJjRmxhZywgc3dlZXBGbGFnLCBtX3BhdGhTZWdSb2xlKSk7CisgICAgICAgIG1fcGF0aFNl
Z0xpc3QuYXBwZW5kKFNWR1ZhbHVlOjpjcmVhdGU8UmVmUHRyPFNWR1BhdGhTZWc+PihtX3BhdGhF
bGVtZW50LmNyZWF0ZVNWR1BhdGhTZWdBcmNBYnModGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2lu
dC55KCksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnLCBtX3BhdGhTZWdS
b2xlKSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxl
bWVudC5jcmVhdGVTVkdQYXRoU2VnQXJjUmVsKHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZywgbV9wYXRoU2VnUm9s
ZSkpOworICAgICAgICBtX3BhdGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0
cjxTVkdQYXRoU2VnPj4obV9wYXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQXJjUmVsKHRhcmdl
dFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpLCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcs
IHN3ZWVwRmxhZywgbV9wYXRoU2VnUm9sZSkpKTsKIH0KIAogdm9pZCBTVkdQYXRoU2VnTGlzdEJ1
aWxkZXI6OmNsb3NlUGF0aCgpCiB7Ci0gICAgbV9wYXRoU2VnTGlzdC5hcHBlbmQobV9wYXRoRWxl
bWVudC5jcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKG1fcGF0aFNlZ1JvbGUpKTsKKyAgICBtX3Bh
dGhTZWdMaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFJlZlB0cjxTVkdQYXRoU2VnPj4obV9w
YXRoRWxlbWVudC5jcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKG1fcGF0aFNlZ1JvbGUpKSk7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmNw
cAkocmV2aXNpb24gMjMwNjkzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0
U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Myw3ICs0NCw3IEBAIGJvb2wgU1ZHUGF0aFNlZ0xp
c3RTb3VyY2U6Omhhc01vcmVEYXRhKCkKIAogYm9vbCBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6cGFy
c2VTVkdTZWdtZW50VHlwZShTVkdQYXRoU2VnVHlwZSYgcGF0aFNlZ1R5cGUpCiB7Ci0gICAgbV9z
ZWdtZW50ID0gbV9wYXRoU2VnTGlzdC5hdChtX2l0ZW1DdXJyZW50KTsKKyAgICBtX3NlZ21lbnQg
PSBtX3BhdGhTZWdMaXN0LmF0UmVmZXJlbmNlKG1faXRlbUN1cnJlbnQpOwogICAgIHBhdGhTZWdU
eXBlID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ1R5cGU+KG1fc2VnbWVudC0+cGF0aFNlZ1R5cGUo
KSk7CiAgICAgKyttX2l0ZW1DdXJyZW50OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTEsNyArNTIs
NyBAQCBib29sIFNWR1BhdGhTZWdMaXN0U291cmNlOjpwYXJzZVNWR1NlZ21lCiAKIFNWR1BhdGhT
ZWdUeXBlIFNWR1BhdGhTZWdMaXN0U291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkK
IHsKLSAgICBtX3NlZ21lbnQgPSBtX3BhdGhTZWdMaXN0LmF0KG1faXRlbUN1cnJlbnQpOworICAg
IG1fc2VnbWVudCA9IG1fcGF0aFNlZ0xpc3QuYXRSZWZlcmVuY2UobV9pdGVtQ3VycmVudCk7CiAg
ICAgU1ZHUGF0aFNlZ1R5cGUgcGF0aFNlZ1R5cGUgPSBzdGF0aWNfY2FzdDxTVkdQYXRoU2VnVHlw
ZT4obV9zZWdtZW50LT5wYXRoU2VnVHlwZSgpKTsKICAgICArK21faXRlbUN1cnJlbnQ7CiAgICAg
cmV0dXJuIHBhdGhTZWdUeXBlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNl
Z0xpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMzA2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBA
IHZvaWQgU1ZHUGF0aFNlZ0xpc3RWYWx1ZXM6OmNvbW1pdENoYW5nZSgKIAogdm9pZCBTVkdQYXRo
U2VnTGlzdFZhbHVlczo6Y2xlYXJJdGVtQ29udGV4dEFuZFJvbGUodW5zaWduZWQgaW5kZXgpCiB7
Ci0gICAgYXV0byYgaXRlbSA9IGF0KGluZGV4KTsKKyAgICBhdXRvJiBpdGVtID0gYXRSZWZlcmVu
Y2UoaW5kZXgpOwogICAgIHN0YXRpY19jYXN0PFNWR1BhdGhTZWdXaXRoQ29udGV4dCY+KCppdGVt
KS5zZXRDb250ZXh0QW5kUm9sZShudWxscHRyLCBQYXRoU2VnVW5kZWZpbmVkUm9sZSk7CiB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RWYWx1ZXMuaAkocmV2
aXNpb24gMjMwNjkzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0VmFsdWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDEwICsyMCw5IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgogI2lu
Y2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgIlNWR1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCw5ICszMyw5IEBAIGNsYXNzIFNWR1BhdGhTZWdM
aXN0OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gCiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CiAK
LWNsYXNzIFNWR1BhdGhTZWdMaXN0VmFsdWVzIDogcHVibGljIFZlY3RvcjxSZWZQdHI8U1ZHUGF0
aFNlZz4+IHsKK2NsYXNzIFNWR1BhdGhTZWdMaXN0VmFsdWVzIDogcHVibGljIFNWR1ZhbHVlTGlz
dDxSZWZQdHI8U1ZHUGF0aFNlZz4+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gVmVjdG9y
PFJlZlB0cjxTVkdQYXRoU2VnPj47CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVlTGlzdDxSZWZQ
dHI8U1ZHUGF0aFNlZz4+OwogICAgIAogICAgIGV4cGxpY2l0IFNWR1BhdGhTZWdMaXN0VmFsdWVz
KFNWR1BhdGhTZWdSb2xlIHJvbGUpCiAgICAgICAgIDogbV9yb2xlKHJvbGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMzA2OTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEwLCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZH
UGF0aFMKICAgICBBU1NFUlQocGFyc2luZ01vZGUgPT0gVW5hbHRlcmVkUGFyc2luZyk7CiAKICAg
ICBTVkdQYXRoU2VnTGlzdFZhbHVlcyBhcHBlbmRlZEl0ZW1MaXN0KFBhdGhTZWdVbmFsdGVyZWRS
b2xlKTsKLSAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChXVEZNb3ZlKHBhdGhTZWcpKTsKKyAg
ICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlKFdURk1vdmUocGF0aFNl
ZykpKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtIGFwcGVuZGVkQnl0ZVN0cmVhbTsKICAgICBT
VkdQYXRoU2VnTGlzdFNvdXJjZSBzb3VyY2UoYXBwZW5kZWRJdGVtTGlzdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAkocmV2aXNpb24gMjMwNjkzKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0zNSw3ICszNiw3IEBAIFN0cmluZyBTVkdQb2ludExpc3RWYWx1ZXM6OnZhbHVlQXNT
dHJpbmcKICAgICAgICAgaWYgKGkgPiAwKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAn
KTsgLy8gRklYTUU6IFNob3VsZG4ndCB3ZSB1c2UgY29tbWFzIHRvIHNlcGVyYXRlPwogCi0gICAg
ICAgIGNvbnN0IGF1dG8mIHBvaW50ID0gYXQoaSk7CisgICAgICAgIGNvbnN0IGF1dG8mIHBvaW50
ID0gYXRSZWZlcmVuY2UoaSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHBvaW50Lngo
KSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKHBvaW50LnkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZh
bHVlcy5oCShyZXZpc2lvbiAyMzA2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0VmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiwxNCArMjMsMTQgQEAKIAogI2luY2x1
ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJTVkdWYWx1ZUxpc3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdQb2ludDsKIGNsYXNzIFNWR1BvaW50TGlzdDsKIAotY2xh
c3MgU1ZHUG9pbnRMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZlY3RvcjxGbG9hdFBvaW50PiB7
CitjbGFzcyBTVkdQb2ludExpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVMaXN0PEZs
b2F0UG9pbnQ+IHsKIHB1YmxpYzoKICAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0Owog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAJKHJl
dmlzaW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDcgKzQwLDcgQEAgdm9pZCBTVkdTdHJpbmdMaXN0
VmFsdWVzOjpyZXNldChjb25zdCBTdAogCiAgICAgLy8gQWRkIGVtcHR5IHN0cmluZywgaWYgbGlz
dCBpcyBlbXB0eS4KICAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICBhcHBlbmQoZW1wdHlTdHJp
bmcoKSk7CisgICAgICAgIGFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFN0cmluZz4oZW1wdHlTdHJp
bmcoKSkpOwogfQogCiB2b2lkIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnBhcnNlKGNvbnN0IFN0cmlu
ZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyKQpAQCAtNTYsNyArNTcsNyBAQCB2b2lkIFNWR1N0cmlu
Z0xpc3RWYWx1ZXM6OnBhcnNlKGNvbnN0IFN0CiAgICAgICAgICAgICBwdHIrKzsKICAgICAgICAg
aWYgKHB0ciA9PSBzdGFydCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBhcHBlbmQoU3Ry
aW5nKHN0YXJ0LCBwdHIgLSBzdGFydCkpOworICAgICAgICBhcHBlbmQoU1ZHVmFsdWU6OmNyZWF0
ZTxTdHJpbmc+KFN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpKSk7CiAgICAgICAgIHNraXBPcHRp
b25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0ciwgZW5kLCBkZWxpbWl0ZXIpOwogICAgIH0KIH0K
QEAgLTcwLDcgKzcxLDcgQEAgU3RyaW5nIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnZhbHVlQXNTdHJp
bgogICAgICAgICBpZiAoaSA+IDApCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwog
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0KGkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
YXRSZWZlcmVuY2UoaSkpOwogICAgIH0KIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgJKHJldmlzaW9u
IDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSAiU1ZHVmFsdWVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzIsNyArMzMsNyBAQCBjbGFzcyBTVkdTdHJpbmdMaXN0OwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gCiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CiAKLWNsYXNzIFNWR1N0cmluZ0xp
c3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFN0cmluZz4geworY2xhc3MgU1ZHU3RyaW5n
TGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBTVkdWYWx1ZUxpc3Q8U3RyaW5nPiB7CiBwdWJsaWM6
CiAgICAgU1ZHU3RyaW5nTGlzdFZhbHVlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQogICAgICAgICA6IG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuY3BwCShyZXZpc2lvbiAyMzA2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodCByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTU0LDE2ICsx
NTQsMTYgQEAgYm9vbCBTVkdUZXN0czo6aGFzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZwogCiBib29s
IFNWR1Rlc3RzOjppc1ZhbGlkKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBt
X3JlcXVpcmVkRmVhdHVyZXMudmFsdWUpIHsKLSAgICAgICAgaWYgKGZlYXR1cmUuaXNFbXB0eSgp
IHx8ICFzdXBwb3J0ZWRTVkdGZWF0dXJlcygpLmNvbnRhaW5zKGZlYXR1cmUpKQorICAgIGZvciAo
Y29uc3QgYXV0byYgZmVhdHVyZSA6IG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSkgeworICAgICAg
ICBpZiAoZmVhdHVyZS0+YXM8U3RyaW5nPigpLmlzRW1wdHkoKSB8fCAhc3VwcG9ydGVkU1ZHRmVh
dHVyZXMoKS5jb250YWlucyhmZWF0dXJlLT5hczxTdHJpbmc+KCkpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KLSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogbV9zeXN0ZW1MYW5n
dWFnZS52YWx1ZSkgewotICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gZGVmYXVsdExhbmd1YWdlKCku
c3Vic3RyaW5nKDAsIDIpKQorICAgIGZvciAoY29uc3QgYXV0byYgbGFuZ3VhZ2UgOiBtX3N5c3Rl
bUxhbmd1YWdlLnZhbHVlKSB7CisgICAgICAgIGlmIChsYW5ndWFnZS0+YXM8U3RyaW5nPigpICE9
IGRlZmF1bHRMYW5ndWFnZSgpLnN1YnN0cmluZygwLCAyKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVkRXh0ZW5z
aW9ucy52YWx1ZSkgewotICAgICAgICBpZiAoIWhhc0V4dGVuc2lvbihleHRlbnNpb24pKQorICAg
IGZvciAoY29uc3QgYXV0byYgZXh0ZW5zaW9uIDogbV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUp
IHsKKyAgICAgICAgaWYgKCFoYXNFeHRlbnNpb24oZXh0ZW5zaW9uLT5hczxTdHJpbmc+KCkpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24gMjMwNjkzKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYg
KzIzLDcgQEAKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgog
I2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zv
cm0uaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcy5jcHAJKHJldmlzaW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQxLDcgKzQyLDcgQEAgUmVmPFNWR1Ry
YW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcwogCiAgICAgU1ZHVHJhbnNmb3JtVmFsdWUg
dHJhbnNmb3JtKG1hdHJpeCk7CiAgICAgY2xlYXIoKTsKLSAgICBhcHBlbmQodHJhbnNmb3JtKTsK
KyAgICBhcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxTVkdUcmFuc2Zvcm1WYWx1ZT4odHJhbnNmb3Jt
KSk7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKHRyYW5zZm9ybSk7CiB9CiAKQEAg
LTUyLDcgKzUzLDcgQEAgYm9vbCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpjb25jYXRlbmF0ZQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICByZXN1bHQgKj0gYXQoaSkubWF0cml4KCk7CisgICAgICAgIHJlc3Vs
dCAqPSBhdFJlZmVyZW5jZShpKS5tYXRyaXgoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
NjUsNyArNjYsNyBAQCBTdHJpbmcgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6dmFsdWVBc1N0CiAg
ICAgICAgIGlmIChpID4gMCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSkudmFsdWVBc1N0cmluZygpKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoYXRSZWZlcmVuY2UoaSkudmFsdWVBc1N0cmluZygpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oCShyZXZpc2lvbiAyMzA2OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsMTggKzIx
LDE5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIK
LSNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtVmFsdWUuaCIKKyNpbmNsdWRlICJTVkdWYWx1ZUxpc3QuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgU1ZHTGlz
dFByb3BlcnR5VGVhck9mZjsKIAorY2xhc3MgU1ZHTWF0cml4OworY2xhc3MgU1ZHVHJhbnNmb3Jt
OwogY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKIAotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cyBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8U1ZHVHJhbnNmb3JtVmFsdWUsIDE+IHsKK2NsYXNzIFNW
R1RyYW5zZm9ybUxpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVMaXN0PFNWR1RyYW5z
Zm9ybVZhbHVlPiB7CiBwdWJsaWM6CiAgICAgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZHVHJh
bnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmKSBjb25zdDsKICAgICBSZWY8U1ZHVHJhbnNmb3Jt
PiBjb25zb2xpZGF0ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVl
LmgJKHJldmlzaW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1W
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC05MCw1ICs5MSwxMCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFNWR1RyYW5zZm9yCiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KKyAgICAKK3Rl
bXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybVZhbHVlPiB7Cisg
ICAgc3RhdGljIFNWR1RyYW5zZm9ybVZhbHVlIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsg
fQorICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHVHJhbnNmb3JtVmFsdWUmIHRy
YW5zZm9ybSkgeyByZXR1cm4gdHJhbnNmb3JtLnZhbHVlQXNTdHJpbmcoKTsgfQorfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bWFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1h
YmxlLmNwcAkocmV2aXNpb24gMjMwNjkzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybWFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTk3LDcgKzE5OCw3IEBAIGJvb2wgU1ZHVHJh
bnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHQKICAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9y
bVZhbHVlKHR5cGUsIGN1cnJUcmFuc2Zvcm0sIGVuZCwgdHJhbnNmb3JtKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBsaXN0LmFwcGVuZCh0cmFuc2Zvcm0pOworICAgICAg
ICBsaXN0LmFwcGVuZChTVkdWYWx1ZTo6Y3JlYXRlPFNWR1RyYW5zZm9ybVZhbHVlPih0cmFuc2Zv
cm0pKTsKICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1cnJUcmFuc2Zvcm0sIGVuZCk7
CiAgICAgICAgIGlmIChjdXJyVHJhbnNmb3JtIDwgZW5kICYmICpjdXJyVHJhbnNmb3JtID09ICcs
JykgewogICAgICAgICAgICAgZGVsaW1QYXJzZWQgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zh
bHVlLmgJKHJldmlzaW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0
VmFsdWVzLmgiCkBAIC0zMywxNyArMzQsMjAgQEAKICNpbmNsdWRlICJTVkdNYXJrZXJUeXBlcy5o
IgogI2luY2x1ZGUgIlNWR051bWJlckxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0
ZVN0cmVhbS5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAi
U1ZHUG9pbnRMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlLmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVy
dHlUcmFpdHMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCisjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtVmFsdWUuaCIKIAogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgU1ZHVmFsdWVWYXJpYW50ID0gVmFyaWFudDwKKy8v
IEZJWE1FKDE4NDY3MCk6IFJlbW92ZSBTVkdBbmltYXRlZFR5cGVWYWx1ZVZhcmlhbnQuIEhhdmUg
YWxsIHRoZSB0eXBlcworLy8gb2YgdGhlIFNWRyB0ZWFyLW9mZiBwcm9wZXJ0eSBvYmplY3RzIGJl
IHBhcnQgb2YgU1ZHVmFsdWVWYXJpYW50LgordXNpbmcgU1ZHQW5pbWF0ZWRUeXBlVmFsdWVWYXJp
YW50ID0gVmFyaWFudDwKICAgICBzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+KiwK
ICAgICBib29sKiwKICAgICBDb2xvciosCkBAIC02Myw0ICs2Nyw2NyBAQCB1c2luZyBTVkdWYWx1
ZVZhcmlhbnQgPSBWYXJpYW50PAogICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMqCiA+OwogCit1
c2luZyBTVkdWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PAorICAgIFNWR0xlbmd0aFZhbHVlLAorICAg
IGZsb2F0LAorICAgIFJlZlB0cjxTVkdQYXRoU2VnPiwKKyAgICBGbG9hdFBvaW50LAorICAgIFN0
cmluZywKKyAgICBTVkdUcmFuc2Zvcm1WYWx1ZQorPjsKKworY2xhc3MgU1ZHVmFsdWUgOiBwdWJs
aWMgUmVmQ291bnRlZDxTVkdWYWx1ZT4sIHB1YmxpYyBTVkdWYWx1ZVZhcmlhbnQgeworcHVibGlj
OgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KKyAgICBzdGF0aWMgUmVmUHRy
PFNWR1ZhbHVlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZTxQcm9wZXJ0
eVR5cGU+KFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46OmluaXRpYWxWYWx1ZSgpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJvcGVydHlUeXBlPgorICAgIHN0YXRpYyBS
ZWZQdHI8U1ZHVmFsdWU+IGNyZWF0ZShjb25zdCBQcm9wZXJ0eVR5cGUmIHZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdWYWx1ZSh2YWx1ZSkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBSZWZQdHI8U1ZHVmFsdWU+IGNyZWF0ZShjb25zdCBTVkdWYWx1ZSYgdmFsdWUp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1ZhbHVlKHZhbHVlKSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgorICAgIGJvb2wgaXMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UHJv
cGVydHlUeXBlPigqdGhpcyk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFByb3BlcnR5
VHlwZT4KKyAgICBjb25zdCBQcm9wZXJ0eVR5cGUmIGFzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpczxQcm9wZXJ0eVR5cGU+KCkpOworICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UHJv
cGVydHlUeXBlPigqdGhpcyk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFByb3BlcnR5
VHlwZT4KKyAgICBQcm9wZXJ0eVR5cGUmIGFzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpczxQ
cm9wZXJ0eVR5cGU+KCkpOworICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UHJvcGVydHlUeXBlPigq
dGhpcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5
VHlwZT4KKyAgICBleHBsaWNpdCBTVkdWYWx1ZShjb25zdCBQcm9wZXJ0eVR5cGUmIHZhbHVlKQor
ICAgICAgICA6IFNWR1ZhbHVlVmFyaWFudCh2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
czxQcm9wZXJ0eVR5cGU+KCkpOworICAgIH0KKworICAgIFNWR1ZhbHVlKGNvbnN0IFNWR1ZhbHVl
JiB2YWx1ZSkKKyAgICAgICAgOiBTVkdWYWx1ZVZhcmlhbnQoc3RhdGljX2Nhc3Q8Y29uc3QgU1ZH
VmFsdWVWYXJpYW50Jj4odmFsdWUpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4KCkgPT0g
dmFsdWUuaW5kZXgoKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZUxpc3QuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmFsdWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU1ZHVmFsdWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK2NsYXNz
IFNWR1ZhbHVlTGlzdCA6IHB1YmxpYyBWZWN0b3I8UmVmUHRyPFNWR1ZhbHVlPj4geworcHVibGlj
OgorICAgIFNWR1ZhbHVlTGlzdCgpID0gZGVmYXVsdDsKKworICAgIFNWR1ZhbHVlTGlzdChjb25z
dCBTVkdWYWx1ZUxpc3QmIG90aGVyKQorICAgICAgICA6IFZlY3RvcjxSZWZQdHI8U1ZHVmFsdWU+
PihvdGhlci5kZWVwQ29weSgpKQorICAgIHsKKyAgICB9CisKKyAgICBTVkdWYWx1ZUxpc3QmIG9w
ZXJhdG9yPShjb25zdCBTVkdWYWx1ZUxpc3QmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFNWR1ZhbHVlTGlzdCY+KFZlY3RvcjxSZWZQdHI8U1ZHVmFsdWU+Pjo6b3Bl
cmF0b3I9KG90aGVyLmRlZXBDb3B5KCkpKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIG9wZXJhdG9y
IGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyIGV4cGVjdHMgYSBWZWN0b3Igb2YKKyAgICAvLyBQcm9w
ZXJ0eVR5cGUsIG5vdCBhIFZlY3RvciBvZiBSZWZQdHI8U1ZHVmFsdWU+LgorICAgIG9wZXJhdG9y
IFZlY3RvcjxQcm9wZXJ0eVR5cGU+KCkgY29uc3QKKyAgICB7CisgICAgICAgIFZlY3RvcjxQcm9w
ZXJ0eVR5cGU+IHZhbHVlczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YWx1ZSA6ICp0aGlz
KQorICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCh2YWx1ZS0+dGVtcGxhdGUgYXM8UHJvcGVydHlU
eXBlPigpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICB9CisKKyAgICAvLyBWZWN0b3I6
OnJlc2l6ZSgpIGlzIG92ZXJyaWRkZW4gdG8gYWxsb2NhdGUgbmV3IFJlZlBUcjxTVkdWYWx1ZT4K
KyAgICAvLyBhbmQgYXNzaWduIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgbmV3IGl0ZW1zLgor
ICAgIHZvaWQgcmVzaXplKHNpemVfdCBuZXdTaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gc2l6ZSgpOworICAgICAgICBWZWN0b3I8UmVmUHRyPFNWR1ZhbHVlPj46OnJlc2l6ZShu
ZXdTaXplKTsKKyAgICAgICAgZm9yICg7IGluZGV4IDwgbmV3U2l6ZTsgKytpbmRleCkKKyAgICAg
ICAgICAgIGF0KGluZGV4KSA9IGRlZmF1bHRWYWx1ZSgpOworICAgIH0KKworICAgIGNvbnN0IFBy
b3BlcnR5VHlwZSYgYXRSZWZlcmVuY2Uoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChp
bmRleCktPnRlbXBsYXRlIGFzPFByb3BlcnR5VHlwZT4oKTsgfQorICAgIFByb3BlcnR5VHlwZSYg
YXRSZWZlcmVuY2Uoc2l6ZV90IGluZGV4KSB7IHJldHVybiBhdChpbmRleCktPnRlbXBsYXRlIGFz
PFByb3BlcnR5VHlwZT4oKTsgfQorCisgICAgY29uc3QgUHJvcGVydHlUeXBlJiBmaXJzdFJlZmVy
ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGF0UmVmZXJlbmNlKDApOyB9CisgICAgUHJvcGVydHlUeXBl
JiBmaXJzdFJlZmVyZW5jZSgpIHsgcmV0dXJuIGF0UmVmZXJlbmNlKDApOyB9CisKKyAgICBjb25z
dCBQcm9wZXJ0eVR5cGUmIGxhc3RSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBhdFJlZmVyZW5j
ZShzaXplKCkgLSAxKTsgfQorICAgIFByb3BlcnR5VHlwZSYgbGFzdFJlZmVyZW5jZSgpIHsgcmV0
dXJuIGF0UmVmZXJlbmNlKHNpemUoKSAtIDEpOyB9CisgICAgCitwcml2YXRlOgorICAgIC8vIFRo
ZSBpbnN0YW50aWF0aW9uIG9mIHRoaXMgdGVtcGxhdGUgZnVuY3Rpb24gYm9keSBpcyBkZWxheWVk
IHRpbGwgdGhlIGNhbGxlciBpcyBhY3R1YWxseQorICAgIC8vIHVzZWQuIFRoaXMgbWFrZXMgaXQg
c3VmZmljaWVudCB0byBmb3J3YXJkIGRlY2xhcmUgU1ZHVmFsdWUgYW5kIG5vdCBpbmNsdWRlIFNW
R1ZhbHVlLmguCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IFNWR1ZhbHVlPgorICAgIHN0YXRp
YyBSZWZQdHI8VD4gZGVmYXVsdFZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBUOjp0ZW1w
bGF0ZSBjcmVhdGU8UHJvcGVydHlUeXBlPigpOworICAgIH0KKworICAgIC8vIFNhbWUgYXMgZGVm
YXVsdFZhbHVlKCkuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IFNWR1ZhbHVlPgorICAgIHN0
YXRpYyBSZWZQdHI8VD4gY29weVZhbHVlKGNvbnN0IFJlZlB0cjxUPiYgdmFsdWUpCisgICAgewor
ICAgICAgICByZXR1cm4gVDo6Y3JlYXRlKCp2YWx1ZSk7CisgICAgfQorCisgICAgLy8gVGhlIG5l
dyBWZWN0b3IgZG9lcyBub3QgcmVmZXJlbmNlcyB0aGUgaXRlbXMgaW4gdGhpcyBWZWN0b3IKKyAg
ICBWZWN0b3I8UmVmUHRyPFNWR1ZhbHVlPj4gZGVlcENvcHkoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgVmVjdG9yPFJlZlB0cjxTVkdWYWx1ZT4+IHZhbHVlczsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiB2YWx1ZSA6ICp0aGlzKQorICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChjb3B5VmFsdWUo
dmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICB9Cit9OworCit9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eU1hY3Jvcy5oCShyZXZpc2lvbiAyMzA2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVk
ZSAiU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJh
aXRzLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCShyZXZpc2lvbiAyMzA2
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0yNSwxNCArMjYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gTGlzdE1vZGlmaWNhdGlvbiB7Ci0gICAgTGlzdE1vZGlmaWNhdGlvblVua25vd24gPSAwLAot
ICAgIExpc3RNb2RpZmljYXRpb25JbnNlcnQgPSAxLAotICAgIExpc3RNb2RpZmljYXRpb25SZXBs
YWNlID0gMiwKLSAgICBMaXN0TW9kaWZpY2F0aW9uUmVtb3ZlID0gMywKLSAgICBMaXN0TW9kaWZp
Y2F0aW9uQXBwZW5kID0gNAotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgog
Y2xhc3MgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOwogCkBAIC0xMzUsNyArMTI4LDcg
QEAgcHVibGljOgogCiAgICAgICAgIC8vIFNwZWM6IENsZWFycyBhbGwgZXhpc3RpbmcgY3VycmVu
dCBpdGVtcyBmcm9tIHRoZSBsaXN0IGFuZCByZS1pbml0aWFsaXplcyB0aGUgbGlzdCB0byBob2xk
IHRoZSBzaW5nbGUgaXRlbSBzcGVjaWZpZWQgYnkgdGhlIHBhcmFtZXRlci4KICAgICAgICAgbV92
YWx1ZXMtPmNsZWFyKCk7Ci0gICAgICAgIG1fdmFsdWVzLT5hcHBlbmQobmV3SXRlbSk7CisgICAg
ICAgIG1fdmFsdWVzLT5hcHBlbmQoU1ZHVmFsdWU6OmNyZWF0ZTxMaXN0SXRlbVR5cGU+KG5ld0l0
ZW0pKTsKIAogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuIExpc3RJdGVt
VHlwZSB7IG5ld0l0ZW0gfTsKQEAgLTE2MSw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGRl
dGFjaExpc3RXcmFwcGVycygwKTsKICAgICAgICAgbV92YWx1ZXMtPmNsZWFyKCk7CiAKLSAgICAg
ICAgbV92YWx1ZXMtPmFwcGVuZChuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICAg
ICAgbV92YWx1ZXMtPmFwcGVuZChuZXdJdGVtLT52YWx1ZSgpKTsKICAgICAgICAgbV93cmFwcGVy
cy0+YXBwZW5kKG5ld0l0ZW0tPmNyZWF0ZVdlYWtQdHIoKSk7CiAKICAgICAgICAgY29tbWl0Q2hh
bmdlKCk7CkBAIC0xODUsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQocmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAogICAgICAgICAvLyBTcGVjOiBSZXR1cm5zIHRoZSBz
cGVjaWZpZWQgaXRlbSBmcm9tIHRoZSBsaXN0LiBUaGUgcmV0dXJuZWQgaXRlbSBpcyB0aGUgaXRl
bSBpdHNlbGYgYW5kIG5vdCBhIGNvcHkuCi0gICAgICAgIHJldHVybiBMaXN0SXRlbVR5cGUgeyBt
X3ZhbHVlcy0+YXQoaW5kZXgpIH07CisgICAgICAgIHJldHVybiBMaXN0SXRlbVR5cGUgeyBtX3Zh
bHVlcy0+YXRSZWZlcmVuY2UoaW5kZXgpIH07CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8UmVm
PExpc3RJdGVtVGVhck9mZj4+IGdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyhBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkTGlzdCwgdW5zaWduZWQgaW5kZXgpCkBAIC0yMDUsNyAr
MTk4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyB3cmFwcGVyLCB3aGlj
aCBpcyBhbGxvd2VkIHRvIGRpcmVjdGx5IG1vZGlmeSB0aGUgaXRlbSBpbiB0aGUgbGlzdCwgdy9v
IGNvcHlpbmcgYW5kIGNhY2hlIHRoZSB3cmFwcGVyIGluIG91ciBtYXAuCiAgICAgICAgICAgICAv
LyBJdCBpcyBhbHNvIGFzc29jaWF0ZWQgd2l0aCBvdXIgYW5pbWF0ZWQgcHJvcGVydHksIHNvIGl0
IGNhbiBub3RpZnkgdGhlIFNWRyBFbGVtZW50IHdoaWNoIGhvbGRzIHRoZSBTVkdBbmltYXRlZCpM
aXN0CiAgICAgICAgICAgICAvLyB0aGF0IGl0IGhhcyBiZWVuIG1vZGlmaWVkIChhbmQgdGh1cyBj
YW4gY2FsbCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKSkuCi0g
ICAgICAgICAgICB3cmFwcGVyID0gTGlzdEl0ZW1UZWFyT2ZmOjpjcmVhdGUoYW5pbWF0ZWRMaXN0
LCBVbmRlZmluZWRSb2xlLCBtX3ZhbHVlcy0+YXQoaW5kZXgpKTsKKyAgICAgICAgICAgIHdyYXBw
ZXIgPSBMaXN0SXRlbVRlYXJPZmY6OmNyZWF0ZShhbmltYXRlZExpc3QsIFVuZGVmaW5lZFJvbGUs
IG1fdmFsdWVzLT5hdFJlZmVyZW5jZShpbmRleCkpOwogICAgICAgICAgICAgbV93cmFwcGVycy0+
YXQoaW5kZXgpID0gd3JhcHBlci0+Y3JlYXRlV2Vha1B0cigpOwogICAgICAgICB9CiAKQEAgLTIz
Miw3ICsyMjUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gU3BlYzogSW5zZXJ0cyBhIG5ldyBp
dGVtIGludG8gdGhlIGxpc3QgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gVGhlIGluZGV4IG9m
IHRoZSBpdGVtIGJlZm9yZSB3aGljaCB0aGUgbmV3IGl0ZW0gaXMgdG8gYmUKICAgICAgICAgLy8g
aW5zZXJ0ZWQuIFRoZSBmaXJzdCBpdGVtIGlzIG51bWJlciAwLiBJZiB0aGUgaW5kZXggaXMgZXF1
YWwgdG8gMCwgdGhlbiB0aGUgbmV3IGl0ZW0gaXMgaW5zZXJ0ZWQgYXQgdGhlIGZyb250IG9mIHRo
ZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy0+aW5zZXJ0KGluZGV4LCBuZXdJdGVtKTsKKyAgICAg
ICAgbV92YWx1ZXMtPmluc2VydChpbmRleCwgU1ZHVmFsdWU6OmNyZWF0ZTxMaXN0SXRlbVR5cGU+
KG5ld0l0ZW0pKTsKIAogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuIExp
c3RJdGVtVHlwZSB7IG5ld0l0ZW0gfTsKQEAgLTI2MSw3ICsyNTQsNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgLy8gU3BlYzogSW5zZXJ0cyBhIG5ldyBpdGVtIGludG8gdGhlIGxpc3QgYXQgdGhlIHNw
ZWNpZmllZCBwb3NpdGlvbi4gVGhlIGluZGV4IG9mIHRoZSBpdGVtIGJlZm9yZSB3aGljaCB0aGUg
bmV3IGl0ZW0gaXMgdG8gYmUKICAgICAgICAgLy8gaW5zZXJ0ZWQuIFRoZSBmaXJzdCBpdGVtIGlz
IG51bWJlciAwLiBJZiB0aGUgaW5kZXggaXMgZXF1YWwgdG8gMCwgdGhlbiB0aGUgbmV3IGl0ZW0g
aXMgaW5zZXJ0ZWQgYXQgdGhlIGZyb250IG9mIHRoZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy0+
aW5zZXJ0KGluZGV4LCBuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICAgICAgbV92
YWx1ZXMtPmluc2VydChpbmRleCwgbmV3SXRlbS0+dmFsdWUoKSk7CiAKICAgICAgICAgLy8gU3Rv
cmUgbmV3IHdyYXBwZXIgYXQgcG9zaXRpb24gJ2luZGV4JywgY2hhbmdlIGl0cyB1bmRlcmx5aW5n
IHZhbHVlLCBzbyBtdXRhdGlvbnMgb2YgbmV3SXRlbSwgZGlyZWN0bHkgYWZmZWN0IHRoZSBpdGVt
IGluIHRoZSBsaXN0LgogICAgICAgICBtX3dyYXBwZXJzLT5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0t
PmNyZWF0ZVdlYWtQdHIoKSk7CkBAIC0zMDQsNyArMjk3LDcgQEAgcHVibGljOgogICAgICAgICB9
CiAKICAgICAgICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhdCB0aGUgZGVzaXJlZCBwb3NpdGlvbiAn
aW5kZXgnLiAKLSAgICAgICAgbV92YWx1ZXMtPmF0KGluZGV4KSA9IG5ld0l0ZW07CisgICAgICAg
IG1fdmFsdWVzLT5hdFJlZmVyZW5jZShpbmRleCkgPSBuZXdJdGVtOwogCiAgICAgICAgIGNvbW1p
dENoYW5nZSgpOwogICAgICAgICByZXR1cm4gTGlzdEl0ZW1UeXBlIHsgbmV3SXRlbSB9OwpAQCAt
MzQwLDcgKzMzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9sZEl0ZW0tPmRldGFjaFdyYXBw
ZXIoKTsKIAogICAgICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCB0aGUgd3JhcHBlciBhdCB0
aGUgZGVzaXJlZCBwb3NpdGlvbiAnaW5kZXgnLiAKLSAgICAgICAgbV92YWx1ZXMtPmF0KGluZGV4
KSA9IG5ld0l0ZW0tPnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIG1fdmFsdWVzLT5hdChp
bmRleCkgPSBuZXdJdGVtLT52YWx1ZSgpOwogICAgICAgICBtX3dyYXBwZXJzLT5hdChpbmRleCkg
PSBuZXdJdGVtLT5jcmVhdGVXZWFrUHRyKCk7CiAKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CkBA
IC0zNjgsNyArMzYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCkpOwogCi0gICAgICAgIExpc3RJdGVtVHlwZSBvbGRJdGVtID0gbV92YWx1ZXMtPmF0KGluZGV4
KTsKKyAgICAgICAgTGlzdEl0ZW1UeXBlIG9sZEl0ZW0gPSBtX3ZhbHVlcy0+YXRSZWZlcmVuY2Uo
aW5kZXgpOwogICAgICAgICBtX3ZhbHVlcy0+cmVtb3ZlKGluZGV4KTsKIAogICAgICAgICBjb21t
aXRDaGFuZ2UoKTsKQEAgLTM4OSw3ICszODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIERldGFj
aCB0aGUgZXhpc3Rpbmcgd3JhcHBlci4KICAgICAgICAgUmVmUHRyPExpc3RJdGVtVGVhck9mZj4g
b2xkSXRlbSA9IHN0YXRpY19jYXN0PExpc3RJdGVtVGVhck9mZio+KG1fd3JhcHBlcnMtPmF0KGlu
ZGV4KS5nZXQoKSk7CiAgICAgICAgIGlmICghb2xkSXRlbSkKLSAgICAgICAgICAgIG9sZEl0ZW0g
PSBMaXN0SXRlbVRlYXJPZmY6OmNyZWF0ZShhbmltYXRlZExpc3QsIFVuZGVmaW5lZFJvbGUsIG1f
dmFsdWVzLT5hdChpbmRleCkpOworICAgICAgICAgICAgb2xkSXRlbSA9IExpc3RJdGVtVGVhck9m
Zjo6Y3JlYXRlKGFuaW1hdGVkTGlzdCwgVW5kZWZpbmVkUm9sZSwgbV92YWx1ZXMtPmF0UmVmZXJl
bmNlKGluZGV4KSk7CiAKICAgICAgICAgb2xkSXRlbS0+ZGV0YWNoV3JhcHBlcigpOwogICAgICAg
ICBtX3dyYXBwZXJzLT5yZW1vdmUoaW5kZXgpOwpAQCAtNDExLDcgKzQwNCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShuZXdJdGVtLCAwKTsKIAogICAg
ICAgICAvLyBBcHBlbmQgdGhlIHZhbHVlIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QuCi0gICAgICAg
IG1fdmFsdWVzLT5hcHBlbmQobmV3SXRlbSk7CisgICAgICAgIG1fdmFsdWVzLT5hcHBlbmQoU1ZH
VmFsdWU6OmNyZWF0ZTxMaXN0SXRlbVR5cGU+KG5ld0l0ZW0pKTsKIAogICAgICAgICBjb21taXRD
aGFuZ2UoTGlzdE1vZGlmaWNhdGlvbkFwcGVuZCk7CiAgICAgICAgIHJldHVybiBMaXN0SXRlbVR5
cGUgeyBuZXdJdGVtIH07CkBAIC00MzQsNyArNDI3LDcgQEAgcHVibGljOgogICAgICAgICBwcm9j
ZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIobmV3SXRlbSwgMCk7CiAKICAgICAgICAgLy8gQXBw
ZW5kIHRoZSB2YWx1ZSBhbmQgd3JhcHBlciBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LgotICAgICAg
ICBtX3ZhbHVlcy0+YXBwZW5kKG5ld0l0ZW0tPnByb3BlcnR5UmVmZXJlbmNlKCkpOworICAgICAg
ICBtX3ZhbHVlcy0+YXBwZW5kKG5ld0l0ZW0tPnZhbHVlKCkpOwogICAgICAgICBtX3dyYXBwZXJz
LT5hcHBlbmQobmV3SXRlbS0+Y3JlYXRlV2Vha1B0cigpKTsKIAogICAgICAgICBjb21taXRDaGFu
Z2UoTGlzdE1vZGlmaWNhdGlvbkFwcGVuZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAy
MzA2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlU
ZWFyT2ZmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNDAsNyArMTQxLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
aXRlbS0+c2V0QW5pbWF0ZWRQcm9wZXJ0eShtX2FuaW1hdGVkUHJvcGVydHkucHRyKCkpOwotICAg
ICAgICAgICAgaXRlbS0+c2V0VmFsdWUobV92YWx1ZXMtPmF0KGkpKTsKKyAgICAgICAgICAgIGl0
ZW0tPnNldFZhbHVlKG1fdmFsdWVzLT5hdFJlZmVyZW5jZShpKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBtX2FuaW1hdGVkUHJvcGVydHktPmNvbW1pdENoYW5nZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgJKHJldmlz
aW9uIDIzMDY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
VGVhck9mZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJFeGNl
cHRpb25Pci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJT
VkdQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBjcmVhdGUoaW5pdGlhbFZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
ICAgICB9CiAKKyAgICBSZWZQdHI8U1ZHVmFsdWU+IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gU1ZH
VmFsdWU6OmNyZWF0ZTxQcm9wZXJ0eVR5cGU+KCptX3ZhbHVlKTsgfQogICAgIHZpcnR1YWwgUHJv
cGVydHlUeXBlJiBwcm9wZXJ0eVJlZmVyZW5jZSgpIHsgcmV0dXJuICptX3ZhbHVlOyB9CiAgICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
YW5pbWF0ZWRQcm9wZXJ0eS5nZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHJldmlzaW9uIDIzMDY5MykKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDE0IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2VudW0gTGlzdE1vZGlmaWNhdGlvbiB7
CisgICAgTGlzdE1vZGlmaWNhdGlvblVua25vd24gPSAwLAorICAgIExpc3RNb2RpZmljYXRpb25J
bnNlcnQgPSAxLAorICAgIExpc3RNb2RpZmljYXRpb25SZXBsYWNlID0gMiwKKyAgICBMaXN0TW9k
aWZpY2F0aW9uUmVtb3ZlID0gMywKKyAgICBMaXN0TW9kaWZpY2F0aW9uQXBwZW5kID0gNAorfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgogc3RydWN0IFNWR1Byb3BlcnR5VHJh
aXRzIHsgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>