<?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>221520</bug_id>
          
          <creation_ts>2021-02-06 10:52:01 -0800</creation_ts>
          <short_desc>Differentiate between color spaces used to tag colors and color spaces used to tag destinations</short_desc>
          <delta_ts>2021-02-10 14:37:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1726403</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 10:52:01 -0800</bug_when>
    <thetext>Differentiate between color spaces used to tag colors and color spaces used to tag destinations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726404</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 10:54:13 -0800</bug_when>
    <thetext>These two sets, color tagging (input) and destination tagging (output) have a lot of overlap, it doesn&apos;t really make sense for them to use the same enum, as the set we support for one is not the same as the other.

Right now, we only ever really use ColorSpace::SRGB and ColorSpace::LinearRGB for destinations, so we should restrict that down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726406</commentid>
    <comment_count>2</comment_count>
      <attachid>419509</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 11:03:37 -0800</bug_when>
    <thetext>Created attachment 419509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726409</commentid>
    <comment_count>3</comment_count>
      <attachid>419511</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 11:12:11 -0800</bug_when>
    <thetext>Created attachment 419511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726436</commentid>
    <comment_count>4</comment_count>
      <attachid>419518</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 19:01:13 -0800</bug_when>
    <thetext>Created attachment 419518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726439</commentid>
    <comment_count>5</comment_count>
      <attachid>419519</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-06 19:23:27 -0800</bug_when>
    <thetext>Created attachment 419519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726499</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-07 11:27:42 -0800</bug_when>
    <thetext>Committed r272475: &lt;https://commits.webkit.org/r272475&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419519.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727806</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-10 14:37:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/74206831&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419509</attachid>
            <date>2021-02-06 11:03:37 -0800</date>
            <delta_ts>2021-02-06 11:16:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221520-20210206110336.patch</filename>
            <type>text/plain</type>
            <size>104858</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1NiBAQAorMjAyMS0wMi0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGNvbG9yIHNwYWNlcyB1c2VkIHRvIHRhZyBjb2xvcnMgYW5kIGNvbG9yIHNwYWNlcyB1c2VkIHRv
IHRhZyBkZXN0aW5hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlcGxhY2UgdXNlIG9mIHRoZSBDb2xvclNwYWNlIGVudW0gaW4gZGVzdGluYXRp
b24gY29udGV4dHMgKEltYWdlQnVmZmVyLCBGaWx0ZXJzLCBldGMuKQorICAgICAgICB3aXRoIGEg
bmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBlbnVtIHRoYXQgaXMganVzdCB0aGUgbGltaXRlZCBz
ZXQgb2YgY29sb3Igc3BhY2VzCisgICAgICAgIHN1cHBvcnRlZCBpbiB0aGF0IGNvbnRleHQsIGp1
c3QgU1JHQiBhbmQgTGluZWFyU1JHQi4gV2UgbWF5IG5lZWQgdG8gZXhwYW5kIHRoaXMgdG8KKyAg
ICAgICAgb3RoZXIgc3VwcG9ydGVkIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlcyBpbiB0aGUgZnV0
dXJlLCBidXQgY3VycmVudGx5IG9ubHkgdGhvc2UgdHdvCisgICAgICAgIGFyZSBhY3R1YWxseSB1
c2VkLCBhbmQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24gZm9yIGhpZ2hlciBnYW11dCBzcGFjZXMg
bGlrZSBEaXNwbGF5UDMKKyAgICAgICAgYXJlIGNvbW11bmljYXRlZCBkaWZmZXJlbnRseS4KKwor
ICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gbW9yZSBjbGVhcmx5IHNlZSB0aGVzZSB0d28g
Y29uY2VwdHMgYXMgZGlmZmVyZW50IGFuZCBlbnN1cmUgd2UKKyAgICAgICAgd2Ugc3VwcG9ydCBh
bGwgY2FzZXMgZm9yIGVhY2gsIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdG8gaWdub3JlIHNvbWUg
Y29sb3Igc3BhY2VzIGluCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0cy4KKworICAg
ICAgICBXaGlsZSBjaGFuZ2luZyBhIGJ1bmNoIG9mIG5hbWVzLCBhbHNvIHRha2UgdGhlIG9wcGVy
dHVuaXR5IHRvIHJlbmFtZSBDb2xvclNwYWNlOjpMaW5lYXJSR0IKKyAgICAgICAgdG8gQ29sb3JT
cGFjZTo6TGluZWFyU1JHQiB0byBtYXRjaCBDb2xvclNwYWNlOjpTUkdCIChhbHNvIGRvbmUgZm9y
IHRoZSBuZXcgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQikuCisK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSBjb25zdCk6CisgICAgICAgICogaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZm
ZXJGb3JQYWludGluZyBjb25zdCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVl
bkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsV2l0aENvbG9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAg
IChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OkNsaXBUb0RyYXdpbmdD
b21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29s
b3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNl
bWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
VGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
b252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNJ
bWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6Om9wZXJhdGluZ0NvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpzZXRPcGVyYXRpbmdDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6cmVzdWx0Q29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
R3JhcGhpYzo6U291cmNlR3JhcGhpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6
OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0
ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxk
UHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNr
QW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3UGF0
dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorCiAyMDIxLTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSUZDXSBDb250aW51YXRpb24gcHJlIGFuZCBwb3N0IGJsb2NrIGlubGluZSBi
b3hlcyBzaG91bGQgbm90IGhhdmUgYm90aCB0aGUgc3RhcnQgYW5kIGVuZCBkZWNvcmF0aW9ucyBv
ZiB0aGUgb3JpZ2luYWwgaW5saW5lIGJveApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBA
IEltYWdlKiBDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSAKICAgICBpZiAoIXdpZHRo
KCkgfHwgIWhlaWdodCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fY29waWVk
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0
cik7CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMiw3ICs5MzIs
NyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAgICAgYXV0byBy
ZW5kZXJpbmdNb2RlID0gc2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6
QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogICAgIC8vIEZJWE1F
OiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMuCiAg
ICAgYXV0byB1c2VEaXNwbGF5TGlzdCA9IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZU9y
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpID8gU2hv
dWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKLSAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KSk7CisgICAgc2V0SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIHVzZURpc3BsYXlM
aXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KSk7CiAKICAgICBpZiAoYnVmZmVy
KCkgJiYgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkpCiAgICAgICAgIGJ1ZmZlcigpLT5kcmF3
aW5nQ29udGV4dCgpLT5zZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShtX3RyYWNrc0Rpc3BsYXlM
aXN0UmVwbGF5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6Y3IKIHsKICAgICBhdXRvKiBob3N0V2luZG93ID0gZG9j
dW1lbnQoKS52aWV3KCkgJiYgZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKSA/IGRvY3VtZW50KCku
dmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CiAgICAgYXV0byBzaG91bGRV
c2VEaXNwbGF5TGlzdCA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdF
bmFibGVkKCkgPyBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzIDogU2hvdWxkVXNlRGlzcGxheUxp
c3Q6Ok5vOwotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5n
LCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHNob3Vs
ZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5nLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7
CiB9CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3
ICs4NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5y
b290KCkpIHsKICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+
cm9vdCgpLT5ob3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRl
cmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6
Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogICAg
ICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
Y3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiwxNCArNDMyLDE0IEBAIHZvaWQgT2Zmc2Ny
ZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5i
dWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVy
LT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5s
b2dpY2FsU2l6ZSgpKSwgQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVy
KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICAg
ICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVy
UGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5n
Q29tbWl0QnVmZmVyICYmIHNob3VsZFB1c2hCdWZmZXIpCiAgICAgICAgIHB1c2hCdWZmZXJUb1Bs
YWNlaG9sZGVyKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MTcsNyArMTYxNyw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9z
aXRlT3BlcmF0b3I6OkNvcHkpIHsKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZh
c0Jhc2UoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RU
b0J1ZmZlcihzcmNSZWN0LCBDb2xvclNwYWNlOjpTUkdCLCAqYykpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGNvcHkgPSBidWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoc3JjUmVjdCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCAqYykpIHsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygp
OwogICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7
IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCku
Z2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9CkBAIC0yNTcyLDcgKzI1NzIsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKGMtPmNsaXBUb0RyYXdpbmdDb21tYW5kcyhtYXNrUmVjdCwg
Q29sb3JTcGFjZTo6U1JHQiwgV1RGTW92ZShwYWludE1hc2tJbWFnZSkpID09IEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVm
ZmVyKQorICAgICAgICBpZiAoYy0+Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKG1hc2tSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFdURk1vdmUocGFpbnRNYXNrSW1hZ2UpKSA9PSBHcmFw
aGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJ
bWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBkcmF3U3R5bGUuYXBw
bHlGaWxsQ29sb3IoKmMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MjgsNyArNTI4LDcgQEAgdm9pZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VN
bwogICAgIG1fY2xpZW50LnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVmUHRy
PEltYWdlQnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBv
c2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVu
dC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmlu
Z1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBj
b25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNyArMzI3LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAot
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIEVOQUJM
RShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW0JKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQogCisjaW1wb3J0ICJDb2xvclNwYWNl
Q0cuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJKU0RPTVdpbmRvdy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCkBAIC0xMjAsOSArMTIxLDggQEAgcHJpdmF0ZToKIAog
c3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7CiAgICAgQ0dGbG9hdCBj
b21wb25lbnRzWzRdID0geyByLCBnLCBiLCBhIH07Ci0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUo
Y29sb3JTcGFjZSwgY29tcG9uZW50cyk7CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNv
bG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cyk7CiB9CiAKIHN0cnVjdCBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ3Vyc29yOwogY2xhc3MgSW1hZ2VC
dWZmZXI7CiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwotZW51bSBjbGFzcyBD
b2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDog
dWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFJl
bmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IElu
dFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNz
aWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9k
ZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0ID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJ
KHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICB9CiAKICAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgQ29sb3JTcGFj
ZTo6U1JHQiwgY3R4dCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclNlcmlhbGl6YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNlcmlhbGl6YXRpb24oQ29sb3JTCiAgICAgICAgIHJldHVybiAiZGlzcGxheS1wMyJfczsKICAg
ICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAgICAgcmV0dXJuICJsYWIiX3M7Ci0gICAgY2Fz
ZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJTUkdC
OgogICAgICAgICByZXR1cm4gImxpbmVhci1zcmdiIl9zOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6
UHJvUGhvdG9SR0I6CiAgICAgICAgIHJldHVybiAicHJvcGhvdG8tcmdiIl9zOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAg
ICAgdHMgPDwgIkwqYSpiIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpM
aW5lYXJSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQjoKKyAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbG9yU3BhY2U6OlByb1Bob3RvUkdCOgogICAgICAgICB0cyA8PCAiUHJv
UGhvdG9SR0IiOwpAQCAtNjEsNCArNjEsMTUgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgQwogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCit7Cisg
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJz
UkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29sb3JUeXBl
cy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0U3RyZWFtOwpAQCAtMzgsMjEgKzM5LDI3IEBA
IGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewogICAgIEE5OFJHQiwKICAgICBEaXNw
bGF5UDMsCiAgICAgTGFiLAotICAgIExpbmVhclJHQiwKKyAgICBMaW5lYXJTUkdCLAogICAgIFBy
b1Bob3RvUkdCLAogICAgIFJlYzIwMjAsCiAgICAgU1JHQiwKICAgICBYWVpfRDUwLAogfTsKIAor
ZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90IHsKKyAgICBMaW5lYXJT
UkdCLAorICAgIFNSR0IsCit9OworCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgRGVzdGluYXRpb25D
b2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VNYXBw
aW5nOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5nPEE5OFJH
QjxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OkE5
OFJHQiB9OyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5n
PERpc3BsYXlQMzxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9y
U3BhY2U6OkRpc3BsYXlQMyB9OyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9y
U3BhY2VNYXBwaW5nPExhYjxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7
IENvbG9yU3BhY2U6OkxhYiB9OyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9y
U3BhY2VNYXBwaW5nPExpbmVhclNSR0JBPFQ+PiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xv
clNwYWNlIHsgQ29sb3JTcGFjZTo6TGluZWFyUkdCIH07IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29sb3JTcGFjZU1hcHBpbmc8TGluZWFyU1JHQkE8VD4+IHsgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpMaW5lYXJTUkdCIH07IH07CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFjZU1hcHBpbmc8UHJvUGhvdG9SR0I8VD4+
IHsgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpQcm9QaG90
b1JHQiB9OyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5n
PFJlYzIwMjA8VD4+IHsgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNw
YWNlOjpSZWMyMDIwIH07IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFj
ZU1hcHBpbmc8U1JHQkE8VD4+IHsgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBD
b2xvclNwYWNlOjpTUkdCIH07IH07CkBAIC03MCw3ICs3Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGMKICAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6
Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQMzxU
Pj4oY29tcG9uZW50cykpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICByZXR1
cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNv
bXBvbmVudHM8TGFiPFQ+Pihjb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5l
YXJSR0I6CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJTUkdCOgogICAgICAgICByZXR1cm4g
c3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBv
bmVudHM8TGluZWFyU1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKICAgICBjYXNlIENvbG9yU3BhY2U6
OlByb1Bob3RvUkdCOgogICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1
bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8UHJvUGhvdG9SR0I8VD4+KGNvbXBv
bmVudHMpKTsKQEAgLTg3LDMgKzk0LDI5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEZ1bmN0b3I+IGMKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDb2xvclNwYWNlPiB7
CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JT
cGFjZSwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6QTk4UkdCLAorICAgICAgICBXZWJD
b3JlOjpDb2xvclNwYWNlOjpEaXNwbGF5UDMsCisgICAgICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6
OkxhYiwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6TGluZWFyU1JHQiwKKyAgICAgICAg
V2ViQ29yZTo6Q29sb3JTcGFjZTo6UHJvUGhvdG9SR0IsCisgICAgICAgIFdlYkNvcmU6OkNvbG9y
U3BhY2U6OlJlYzIwMjAsCisgICAgICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNSR0IsCisgICAg
ICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlhZWl9ENTAKKyAgICA+OworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2UsCisgICAgICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQiwKKyAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCCisg
ICAgPjsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlw
ZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgSW1hZ2VCdWZmZXIgewogcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1h
Z2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisg
ICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9
IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBD
b25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJl
ZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAg
IHsKLSAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07Cisg
ICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7
IHNpemUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVy
cywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtOTEsNyArOTEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJbnRTaXplIGxvZ2lj
YWxTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9n
aWNhbFNpemUpOyB9CiAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZTsgfQotICAgIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNw
YWNlOyB9CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQogICAgIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVs
Rm9ybWF0OyB9CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKQEAgLTE5
NSw3ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRl
c3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRl
c3RDb2xvclNwYWNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250
ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoCiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2FsZSwgMS4wIC8geVNj
YWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2NhbGUpOwogCi0gICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3Rl
ZFNpemUsIENvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1
c3RlZFNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3MKICAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAgaWYg
KCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNo
IHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFs
bHlFcXVhbChkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkg
ewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBDb2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7Cisg
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRl
eHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Miw3ICs4
ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0CiAgICAgY2xp
cE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNS
ZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK0dyYXBoaWNzQ29udGV4dDo6Q2xp
cFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdG
dW5jdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNyArNDA1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKTsKIAog
ICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IDogYm9vbCB7IFN1Y2Nl
c3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIgfTsKLSAgICBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOworICAg
IENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2
b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKICAgICAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMo
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlw
UGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xp
cEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRp
YVBsYXllciYpIGNvbnN0ID0gMDsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3Qg
ZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xh
bXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsKIAotUmVmUHRy
PEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRV
c2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNv
bnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJp
bmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
CiAgICAgaWYgKGhvc3RXaW5kb3cpCkBAIC01OCw3ICs1OCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsK
ICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogICAgIApAQCAtMTAxLDcgKzEw
MSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKIAogfQogCi1S
ZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE3LDcg
KzExNyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKICAgICBy
ZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0
LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKIH0KQEAgLTE3
Myw3ICsxNzMsNyBAQCBJbnRTaXplIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6CiAg
ICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3RvcigpKTsK
IH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29w
eVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIHN0cnVjdCBJdGVtQnVmZmVySGFuZGxl
OwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VC
dWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAg
ICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJp
bmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RX
aW5kb3cqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdCA9IFBpeGVsRm9ybWF0OjpCR1JBOCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRl
cmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQgPSBQaXhlbEZv
cm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQgPSBQaXhl
bEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxl
IHdpdGggdGhlIGNvbnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBp
bnRvIHRoZSBidWZmZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIENvbG9yU3BhY2UsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQg
d2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVy
LCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhj
b25zdCBGbG9hdFNpemUmKTsKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycyYgcGFyYW1ldGVycygpIGNvbnN0ID0gMDsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
PSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRp
b246Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBh
dGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50
byB0aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwor
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSks
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CkBAIC0xMjEsNyAr
MTIxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zv
cm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xv
clNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkc3RD
b2xvclNwYWNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0LCBQ
cmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3QgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4
MSw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CiAgICAgICAgIEZsb2F0U2l6
ZSBsb2dpY2FsU2l6ZTsKICAgICAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlOwotICAgICAgICBD
b2xvclNwYWNlIGNvbG9yU3BhY2U7CisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlOwogICAgICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKICAgICB9OwogCkBAIC0x
MTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9NYXNrKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZm9y
bUNvbG9yU3BhY2UoQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QgPSAwOwpAQCAt
MTQ5LDcgKzE0OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9naWNhbFNpemUoKSBj
b25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6ZSk7IH0KICAgICBm
bG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlOyB9Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0KKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CiAgICAg
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4
ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3QgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKCkpOyB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xp
cFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNv
bnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3MjQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTcgKzg5LDE3IEBAIHZvaWQg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBUb01hc2sKICAgICAgICAgQ2Fpcm86OmNsaXBU
b0ltYWdlQnVmZmVyKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCi12b2lkIEltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29s
b3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKK3ZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRy
YW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKIHsKICAgICBpZiAoc3JjQ29sb3JT
cGFjZSA9PSBkZXN0Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gb25seSBz
UkdCIDwtPiBsaW5lYXJSR0IgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50Ci0gICAgaWYgKChz
cmNDb2xvclNwYWNlICE9IENvbG9yU3BhY2U6OkxpbmVhclJHQiAmJiBzcmNDb2xvclNwYWNlICE9
IENvbG9yU3BhY2U6OlNSR0IpCi0gICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBDb2xvclNw
YWNlOjpMaW5lYXJSR0IgJiYgZGVzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQikpCisg
ICAgaWYgKChzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QiAmJiBzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikKKyAgICAg
ICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QiAmJiBkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZTo6TGlu
ZWFyUkdCKSB7CisgICAgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQikgewogICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90
LCAyNTY+IGxpbmVhclJnYkxVVCA9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhf
dCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7
IGkrKykgewpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6
OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfSgpOwogICAg
ICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVUKTsKLSAgICB9IGVs
c2UgaWYgKGRlc3RDb2xvclNwYWNlID09IENvbG9yU3BhY2U6OlNSR0IpIHsKKyAgICB9IGVsc2Ug
aWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikgewogICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0g
W10gewogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGlwVG9N
YXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2Zv
cm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkp
IGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENH
Q28KICAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKICAgICBjYXNlIENv
bG9yU3BhY2U6OkxhYjoKICAgICAgICAgcmV0dXJuIGxhYkNvbG9yU3BhY2VSZWYoKTsKLSAgICBj
YXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclNS
R0I6CiAgICAgICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CiAgICAgY2FzZSBD
b2xvclNwYWNlOjpQcm9QaG90b1JHQjoKICAgICAgICAgcmV0dXJuIHByb1Bob3RvUkdCQ29sb3JT
cGFjZVJlZigpOwpAQCAtNjUsNCArNjUsMTYgQEAgc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VS
ZWYgY2FjaGVkQ0dDbwogICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwogfQogCitzdGF0
aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAg
Y2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6CisgICAgICAgIHJldHVybiBs
aW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAg
ICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Cit9CisKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBj
bGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlCiAgICAgdXNpbmcgQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXI6OmJhc2VUcmFuc2Zvcm07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NjgsNyArODY4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRGlzcGxheUxp
c3QmJiBkcmF3aW5nQ29tbWFuZHMpCisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBE
aXNwbGF5TGlzdCYmIGRyYXdpbmdDb21tYW5kcykKICAgICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRl
c3RpbmF0aW9uKQogICAgICAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgICAgICAs
IG1fZHJhd2luZ0NvbW1hbmRzKFdURk1vdmUoZHJhd2luZ0NvbW1hbmRzKSkKQEAgLTg5MSw3ICs4
OTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KLSAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KKyAgICBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogICAg
IGNvbnN0IERpc3BsYXlMaXN0JiBkcmF3aW5nQ29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBtX2Ry
YXdpbmdDb21tYW5kczsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKLSAgICBDb2xvclNwYWNlIG1fY29sb3JT
cGFjZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogICAgIERpc3Bs
YXlMaXN0IG1fZHJhd2luZ0NvbW1hbmRzOwogfTsKIApAQCAtOTIxLDcgKzkyMSw3IEBAIE9wdGlv
bmFsPENsaXBUb0RyYXdpbmdDb21tYW5kcz4gQ2xpcFRvRHIKICAgICBpZiAoIWRlc3RpbmF0aW9u
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Q29sb3JTcGFj
ZT4gY29sb3JTcGFjZTsKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9y
U3BhY2U7CiAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwogICAgIGlmICghY29sb3JTcGFjZSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnUKICAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVm
ZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQg
UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQordm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5j
dGlvbikKIHsKICAgICAvLyBUaGUgaW5pdGlhbCBDVE0gbWF0Y2hlcyBJbWFnZUJ1ZmZlcidzIGlu
aXRpYWwgQ1RNLgogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0oR3JhcGhp
Y3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3Qg
Y2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNw
YWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZy
YW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnNl
dFNjYWxlKGZsb2F0IHMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRURpc3BsYWNlbWVu
dE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlKQordm9pZCBGRURpc3BsYWNlbWVu
dE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAgICAg
Ly8gU3BlYzogVGhlICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnIHByb3BlcnR5IG9ubHkg
YXBwbGllcyB0byB0aGUgJ2luMicgc291cmNlIGltYWdlCiAgICAgLy8gYW5kIGRvZXMgbm90IGFw
cGx5IHRvIHRoZSAnaW4nIHNvdXJjZSBpbWFnZS4gVGhlICdpbicgc291cmNlIGltYWdlIG11c3Qg
cmVtYWluIGluIGl0cwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3Bs
YWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KICAgICBib29sIHNldFNj
YWxlKGZsb2F0KTsKIAotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVy
RWZmZWN0KiwgY29uc3QgaW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAjaWYg
IVVTRShDRykKICAgICAvLyBmZUZsb29kIGRvZXMgbm90IHBlcmZvcm0gY29sb3IgaW50ZXJwb2xh
dGlvbiBvZiBhbnkga2luZCwgc28gdGhlIHJlc3VsdCBpcyBhbHdheXMgaW4gdGhlIGN1cnJlbnQK
ICAgICAvLyBjb2xvciBzcGFjZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBjb2xvci1pbnRl
cnBvbGF0aW9uLWZpbHRlcnMuCi0gICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9y
U3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9y
U3BhY2U6OlNSR0IpOyB9Ci0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2Up
IG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6
OlNSR0IpOyB9CisgICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsgfQorICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KICNlbmRpZgogCiBw
cml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MDQsNyArNDA0LDcgQEAgYm9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmco
VWludDhDbGFtcAogICAgIGRhdGEud2lkdGhEZWNyZWFzZWRCeU9uZSA9IHdpZHRoIC0gMTsKICAg
ICBkYXRhLmhlaWdodERlY3JlYXNlZEJ5T25lID0gaGVpZ2h0IC0gMTsKICAgICAKLSAgICBpZiAo
b3BlcmF0aW5nQ29sb3JTcGFjZSgpID09IENvbG9yU3BhY2U6OkxpbmVhclJHQikgeworICAgIGlm
IChvcGVyYXRpbmdDb2xvclNwYWNlKCkgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCKSB7CiAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gbV9saWdodGluZ0NvbG9yLnRvQ29s
b3JUeXBlTG9zc3k8TGluZWFyU1JHQkE8ZmxvYXQ+PigpOwogICAgICAgICBwYWludGluZ0RhdGEu
aW5pdGlhbExpZ2h0aW5nRGF0YS5jb2xvclZlY3RvciA9IEZsb2F0UG9pbnQzRChyLCBnLCBiKTsK
ICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
ICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCks
IGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpOwogICAgIH0KIAotICAgIGF1dG8g
dGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJl
Y3QsIHRpbGVSZWN0LCBDb2xvclNwYWNlOjpTUkdCLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkp
OworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGZp
bHRlcigpLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODUsNyArMjg1LDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVj
dDo6aW1hZ2VCdWZmZXJSZQogICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwog
fQogCi1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVk
UmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3Bh
Y2UpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVk
UmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gY29sb3JTcGFjZSkKIHsKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwog
ICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsK
QEAgLTI5Nyw3ICsyOTcsNyBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6CiAgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwg
T3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3Qs
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKICAgICBJbnRT
aXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMg
dm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhhKGNvCiAjZW5kaWYKIH0KIAotUmVmUHRyPElt
YWdlRGF0YT4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKENvbG9y
U3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VEYXRhJiBpbnB1dERhdGEsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0KQorUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZmZWN0
Ojpjb252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJn
ZXRDb2xvclNwYWNlLCBJbWFnZURhdGEmIGlucHV0RGF0YSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQpCiB7CiAgICAgSW50UmVjdCBkZXN0aW5hdGlvblJlY3QoSW50UG9pbnQo
KSwgaW5wdXREYXRhLnNpemUoKSk7CiAgICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2Zp
bHRlci5maWx0ZXJTY2FsZSgpKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBSZWZQdHI8SW1hZ2VEYXRh
PiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJCiAgICAgcmV0dXJuIGNvbnZlcnRJbWFnZUJ1ZmZlclRv
Q29sb3JTcGFjZSh0YXJnZXRDb2xvclNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QsIG91
dHB1dEZvcm1hdCk7CiB9CiAKLVJlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29udmVy
dEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKENvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCkKK1JlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6
Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJn
ZXRDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0KQogewogICAgIEZsb2F0U2l6
ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShyZWN0LnNpemUoKSk7CiAg
ICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29sb3Igc3BhY2Ug
YW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24KQEAgLTQ1OCw3
ICs0NTgsNyBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJCiAgICAg
cmV0dXJuIGNvbnZlcnRlZEJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgcmVjdCk7
CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3Rp
bmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9E
ZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEgc3Rv
cmVkIGluIG1faW1hZ2VCdWZmZXJSZXN1bHQsIGFuZCBzYXZlIHRvIGRlc3RpbmF0aW9uCiAgICAg
YXV0byBjb252ZXJ0ZWRJbWFnZURhdGEgPSBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSwgKm1faW1hZ2VCdWZmZXJSZXN1bHQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkgfSwgb3V0cHV0Rm9ybWF0KTsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2
b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmCiAgICAgY29weUltYWdlQnl0
ZXMoKmNvbnZlcnRlZEltYWdlRGF0YS0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgZGVzdFJlY3QpOwog
fQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlRGF0YVRvRGVzdGluYXRp
b24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBJbWFnZURhdGEmIGltYWdlRGF0YSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZl
cnRlZEltYWdlRGF0YVRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9u
LCBJbWFnZURhdGEmIGltYWdlRGF0YSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV91bm11bHRpcGxp
ZWRJbWFnZVJlc3VsdC9tX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwKICAgICAvLyB3aGljaGV2
ZXIgaXNuJ3QgbnVsbCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KQEAgLTQ3Nyw3ICs0NzcsNyBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlRGF0CiAgICAgY29weUltYWdl
Qnl0ZXMoKmNvbnZlcnRlZEltYWdlRGF0YS0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgZGVzdFJlY3Qp
OwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENs
YW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPENv
bG9yU3BhY2U+IGNvbG9yU3BhY2UpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGll
ZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJl
Y3QsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKICAgICBB
U1NFUlQoaGFzUmVzdWx0KCkpOwogICAgIApAQCAtNTEwLDcgKzUxMCw3IEBAIHZvaWQgRmlsdGVy
RWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWwKICAgICBjb3B5SW1hZ2VCeXRlcygqbV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgcmVjdCk7CiB9CiAKLXZv
aWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJh
eSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPENvbG9yU3BhY2U+
IGNvbG9yU3BhY2UpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQo
VWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAgQVNTRVJUKGhh
c1Jlc3VsdCgpKTsKIApAQCAtNTkwLDcgKzU5MCw3IEBAIEltYWdlRGF0YSogRmlsdGVyRWZmZWN0
OjpjcmVhdGVQcmVtdWx0aXAKICAgICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQu
Z2V0KCk7CiB9CiAKLWJvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc0ltYWdlRGF0YUNvbG9yU3Bh
Y2VDb252ZXJzaW9uKE9wdGlvbmFsPENvbG9yU3BhY2U+IGRzdENvbG9yU3BhY2UpCitib29sIEZp
bHRlckVmZmVjdDo6cmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbihPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGRzdENvbG9yU3BhY2UpCiB7CiAjaWYgVVNFKENHKQog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHdlIG5lZWQgdGhlIHN0ZXAg
b2YgYW4gZXh0cmEgY29sb3Igc3BhY2UgY29udmVyc2lvbgpAQCAtNjA0LDcgKzYwNCw3IEBAIGJv
b2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc0ltYWdlRGF0YUNvbG8KICNlbmRpZgogfQogCi12b2lk
IEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlIGRzdENv
bG9yU3BhY2UpCit2b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkKIHsKICNpZiBVU0UoQ0cpCiAgICAg
Ly8gQ0cgaGFuZGxlcyBjb2xvciBzcGFjZSBhZGp1c3RtZW50cyBpbnRlcm5hbGx5LgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miwx
MCArODIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiAK
ICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8
Q29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gcHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8Q29sb3JTcGFj
ZT4gPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgY29weVVubXVsdGlwbGllZFJlc3VsdChVaW50
OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxDb2xv
clNwYWNlPiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3Vs
dChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25h
bDxDb2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiB1bm11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gcHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGlu
YXRpb25Db2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBjb3B5VW5tdWx0aXBs
aWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYs
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAgIHZv
aWQgY29weVByZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IFdURjo6
bnVsbG9wdCk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMoKSB7IHJldHVy
biBtX2lucHV0RWZmZWN0czsgfQogICAgIEZpbHRlckVmZmVjdCogaW5wdXRFZmZlY3QodW5zaWdu
ZWQpIGNvbnN0OwogICAgIHVuc2lnbmVkIG51bWJlck9mRWZmZWN0SW5wdXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnB1dEVmZmVjdHMuc2l6ZSgpOyB9CkBAIC0xNjMsMTMgKzE2MywxMyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91
bmRzOyB9CiAgICAgdm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1Rv
Qm91bmRzID0gdmFsdWU7IH0KIAotICAgIENvbG9yU3BhY2Ugb3BlcmF0aW5nQ29sb3JTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX29wZXJh
dGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9Ci0gICAgQ29sb3JTcGFjZSByZXN1bHRDb2xv
clNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fcmVz
dWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
b3BlcmF0aW5nQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFj
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3Bh
Y2U7IH0KKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFjZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fcmVzdWx0
Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1S
ZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGludCkgeyBpbi0+dHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShtX29wZXJhdGluZ0NvbG9yU3BhY2UpOyB9Ci0gICAgdm9pZCB0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2UpOworICAgIHZvaWQgdHJhbnNmb3Jt
UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwogICAgIAogICAgIHN0YXRp
YyBWZWN0b3I8ZmxvYXQ+IG5vcm1hbGl6ZWRGbG9hdHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFs
dWVzKQogICAgIHsKQEAgLTIwMSwxMSArMjAxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0gMDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0
ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVk
SW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgQ29sb3JTcGFjZSwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29weUNv
bnZlcnRlZEltYWdlRGF0YVRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBJbWFnZURh
dGEmLCBDb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7
Ci0gICAgYm9vbCByZXF1aXJlc0ltYWdlRGF0YUNvbG9yU3BhY2VDb252ZXJzaW9uKE9wdGlvbmFs
PENvbG9yU3BhY2U+KTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBjb252ZXJ0SW1hZ2VEYXRhVG9D
b2xvclNwYWNlKENvbG9yU3BhY2UsIEltYWdlRGF0YSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24p
OwotICAgIFJlZlB0cjxJbWFnZURhdGE+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShD
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24o
VWludDhDbGFtcGVkQXJyYXkmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlw
bGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZURh
dGFUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgSW1hZ2VEYXRhJiwgRGVzdGluYXRp
b25Db2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgYm9vbCByZXF1aXJlc0ltYWdlRGF0YUNvbG9yU3BhY2VDb252ZXJzaW9uKE9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4pOworICAgIFJlZlB0cjxJbWFnZURhdGE+IGNvbnZlcnRJbWFn
ZURhdGFUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBJbWFnZURhdGEmLCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uKTsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBjb252ZXJ0SW1hZ2VC
dWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYsIGNv
bnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKICAgICAKIAogICAgIEZpbHRl
ciYgbV9maWx0ZXI7CkBAIC0yNDEsOCArMjQxLDggQEAgcHJpdmF0ZToKICAgICAvLyBTaG91bGQg
dGhlIGVmZmVjdCBjbGlwIHRvIGl0cyBwcmltaXRpdmUgcmVnaW9uLCBvciBleHBhbmQgdG8gdXNl
IHRoZSBjb21iaW5lZCByZWdpb24gb2YgaXRzIGlucHV0cy4KICAgICBib29sIG1fY2xpcHNUb0Jv
dW5kcyB7IHRydWUgfTsKIAotICAgIENvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsg
Q29sb3JTcGFjZTo6TGluZWFyUkdCIH07Ci0gICAgQ29sb3JTcGFjZSBtX3Jlc3VsdENvbG9yU3Bh
Y2UgeyBDb2xvclNwYWNlOjpTUkdCIH07CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3Bl
cmF0aW5nRGVzdGluYXRpb25Db2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCIH07CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OwogICAgIAogICAgIGNvbnN0IFR5cGUgbV9m
aWx0ZXJFZmZlY3RDbGFzc1R5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6CiAg
ICAgU291cmNlR3JhcGhpYyhGaWx0ZXImIGZpbHRlcikKICAgICAgICAgOiBGaWx0ZXJFZmZlY3Qo
ZmlsdGVyLCBUeXBlOjpTb3VyY2VHcmFwaGljKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwogICAgIH0KIAogICAgIGNvbnN0IGNo
YXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiU291cmNlR3JhcGhpYyI7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA4MCw3ICsxMDgwLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjphcHBlbmQoc3RkOgogICAgIG1fY29tbWFuZExpc3QuYXBwZW5kKFdURk1vdmUo
Y29tbWFuZCkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQogewogICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSkg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rp
b248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWludEZyYW1lRm9yTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJh
bWVGb3JNZWRpYShjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIwLDcgKzQyMCw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6
OnIKICAgICByZXR1cm4gRGlyZWN0MkQ6OlN0YXRlOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKG1fcGxh
dGZvcm1Db250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCiB7
CiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBQYXRo
KGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRz
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNv
bnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBN
ZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2Fs
ZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKQEAgLTg3LDEwICs4NywxMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlCiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShz
aXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBudWxscHRyKTsKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIG51bGxwdHIpOwogfQogCi1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxh
dGZvcm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQs
IFBsYXRmb3JtSW1hZ2VQdHImJiBiaXRtYXApCitJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+JiYgY29udGV4dCwgUGxhdGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKICAgICA6IEltYWdl
QnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlKQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoV1RGTW92ZShwbGF0Zm9ybUNv
bnRleHQpKQogICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcy
Niw3ICs3MjYsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpCiAK
ICAgICBpZiAodXNlSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgTlNSZWN0IGltYWdlQnVmZmVyRHJh
d1JlY3QgPSBOU1JlY3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0
dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsK
LSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5l
V2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBD
b2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0
U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNv
bnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5l
ZWRzUmVwYWludDsKICAgICAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NT
U0ZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0Zp
bHRlci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZgogCiAgICAgICAgIGVmZmVjdEVsZW1lbnQu
c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7CiAgICAgICAgIGlmIChlZmZlY3RF
bGVtZW50LnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9y
U3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJ
bnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8g
Q29sb3JTcGFjZTo6TGluZWFyUkdCIDogQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBl
ZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5z
dHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50
ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKIAogICAgICAgICBidWlsZGVyLT5hZGQo
ZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZmZWN0KTsKICAgICAgICAgcmVmZXJlbmNlRWZmZWN0
cy5hcHBlbmQoKmVmZmVjdCk7CkBAIC0yOTMsNyArMjkzLDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1
aWxkKFJlbmRlckVsZW1lbnQmIHJlbgogICAgICAgICAgICAgLy8gVW5saWtlIFNWRyBGaWx0ZXJz
IGFuZCBDU1NGaWx0ZXJJbWFnZXMsIGZpbHRlciBmdW5jdGlvbnMgb24gdGhlIGZpbHRlcgogICAg
ICAgICAgICAgLy8gcHJvcGVydHkgYXBwbGllZCBoZXJlIHNob3VsZCBub3QgY2xpcCB0byB0aGVp
ciBwcmltaXRpdmUgc3VicmVnaW9ucy4KICAgICAgICAgICAgIGVmZmVjdC0+c2V0Q2xpcHNUb0Jv
dW5kcyhjb25zdW1lciA9PSBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pOwotICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOwor
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChmaWx0ZXJPcGVy
YXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAg
ICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoV1RGTW92ZShwcmV2aW91c0VmZmVj
dCkpOwpAQCAtMzc3LDEyICszNzcsMTIgQEAgdm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKICAgICBp
ZiAobV9maWx0ZXJSZW5kZXJlcikgewogICAgICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVm
ZmVjdHMoZWZmZWN0KTsKICAgICAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgp
KSB7Ci0gICAgICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNw
YWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CiAgICAgZWZmZWN0LmFwcGx5KCk7Ci0gICAgZWZmZWN0LnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZTo6U1JHQik7CisgICAgZWZmZWN0LnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKIH0KIAogTGF5b3V0
UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzgsNyArODc4LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgICAgICBtYXNrUmVj
dC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIAogICAgICAgICAv
LyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIENvbG9yU3BhY2U6OlNSR0Is
IGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
Y29udGV4dCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0
LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzI0Myw3ICszMjQzLDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9y
RGVzY3JpcAogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAxOCB9OwogCi0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KHRpbGVTaXplLCBDb2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzU4LDcgKzEzNTgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNv
CiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVz
cz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlck9i
amVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBpc0luZGV0ZXJt
aW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsKLSAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNp
emUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2U6OlNSR0IsIHBhaW50SW5mby5jb250
ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBwYWludEluZm8uY29udGV4dCgpKTsKICAgICBpZiAoIWlt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcAogICAgIEFmZmluZVRy
YW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0
ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKICAg
ICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwg
YWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAgICAgICAgIC8vIEZJWE1FICgxNDk0NjkpOiBUaGlzIGlt
YWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBN
YWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBjbGlwcGluZywgdGhvdWdo
LgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFj
ZTo6U1JHQiwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOworICAgICAg
ICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CiAgICAg
ICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Myw3ICsxMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyCiAg
ICAgICAgIGVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7CiAgICAg
ICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZl
UmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVsZW1lbnQs
IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCkpOwog
ICAgICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKQotICAgICAgICAgICAgZWZmZWN0LT5zZXRP
cGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgp
LmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVh
clJHQiA/IENvbG9yU3BhY2U6OkxpbmVhclJHQiA6IENvbG9yU3BhY2U6OlNSR0IpOworICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+
c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvcklu
dGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CiAgICAgICAgIGJ1aWxkZXItPmFkZChl
bGVtZW50LnJlc3VsdCgpLCBXVEZNb3ZlKGVmZmVjdCkpOwogICAgIH0KICAgICByZXR1cm4gYnVp
bGRlcjsKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291CiAgICAgZWZmZWN0aXZlVHJhbnNmb3JtLm11bHRpcGx5KGZpbHRlckRhdGEtPnNo
ZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8g
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
OwotICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwg
Q29sb3JTcGFjZTo6TGluZWFyUkdCLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKKyAgICBhdXRv
IHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihm
aWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6TGluZWFyU1JHQiwgcmVuZGVyaW5nTW9kZSwgY29udGV4dCk7CiAgICAgaWYg
KCFzb3VyY2VHcmFwaGljKSB7CiAgICAgICAgIEFTU0VSVCghbV9yZW5kZXJlckZpbHRlckRhdGFN
YXAuY29udGFpbnMoJnJlbmRlcmVyKSk7CiAgICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4
dCA9IGNvbnRleHQ7CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6cG9zdEFwcGx5UgogICAgICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRh
dGE6OkFwcGx5aW5nOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKTsKICAgICAgICAg
ICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwotICAgICAgICAg
ICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdC
KTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgfQogICAgICAgICBmaWx0ZXJEYXRh
LnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAko
cmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250CiAgICAgQWZmaW5lVHJhbnNm
b3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJh
bnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRSb290QmxvY2spOwog
ICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwg
Q29sb3JTcGFjZTo6U1JHQiwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIG1h
c2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRS
ZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250
ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjphcHBseVJlc291CiAKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAhcmVw
YWludFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdT
dHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKLSAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpM
aW5lYXJSR0IgPyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgOiBDb2xvclNwYWNlOjpTUkdCOworICAg
ICAgICBhdXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBD
b2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKICAgICAgICAgLy8gRklYTUUg
KDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5
IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEg
bWFza2luZywgdGhvdWdoLgogICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFu
c2Zvcm0sIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGNvbnRleHQp
OwogICAgICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkKQEAgLTg2LDcgKzg2LDcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNr
SW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5k
ZXJPYmplY3QqIG9iamVjdCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250
ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0
KCk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpk
cmF3Q29udGVuCiAgICAgfQogCiAjaWYgIVVTRShDRykKLSAgICBtYXNrZXJEYXRhLT5tYXNrSW1h
Z2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZTo6U1JHQiwgY29sb3JTcGFjZSk7Cisg
ICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b2xvclNwYWNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291
cmNlTWFza2VyIjsgfQogCi0gICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2Vy
RGF0YSosIENvbG9yU3BhY2UsIFJlbmRlck9iamVjdCopOworICAgIGJvb2wgZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlck9i
amVjdCopOwogICAgIHZvaWQgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVjdCgpOwogCiAg
ICAgRmxvYXRSZWN0IG1fbWFza0NvbnRlbnRCb3VuZGFyaWVzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1
LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZQogUmVmUHRyPElt
YWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25z
dCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91
bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAog
ewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1w
ZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmll
cywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIENvbG9yU3BhY2U6OlNSR0IsIHJlbmRl
cmluZ01vZGUpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5nTW9kZSk7
CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsCiAgICAgcmV0dXJuIGFi
c29sdXRlVHJhbnNmb3JtOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJl
Y3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0IGNyZWF0ZSBl
bXB0eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yNjQsNyArMjY0LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVy
PiBTVkdSZW5kZXJpbmdDb250ZXh0OgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVm
UHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3Qs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6
ZShjbGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91
bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3UKIAogICAgIC8vIENyZWF0ZSBhIG5l
dyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBDb2xvclNw
YWNlOjpTUkdCLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91
bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBtX3BhaW50SW5m
by0+Y29udGV4dCgpKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudChSZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRT
YXZlID0gRG9udFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVw
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJl
ZDsgfQogCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29s
dXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGNsYW1wZWRSZWN0LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmlu
Z01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAg
ICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBS
ZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQg
Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8
SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw3ICsy
NzgsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAgRmxv
YXRSZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VC
dWZmZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2Fs
ZS5oZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwg
Q29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXpl
LnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CiAgICAg
aWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVy
bjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXpl
LCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9v
bWVkQ29udGFpbmVyUmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDggKzkzLDggQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgIGlmICghbV9pbWFnZSAmJiAhcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIENvbG9yU3BhY2U6OlNSR0IKLSAgICBz
ZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOworICAgIC8vIEZFSW1hZ2UgcmVz
dWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgorICAgIHNldFJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKIAogICAgIEltYWdl
QnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYg
KCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI0NjMpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAy
LTA2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBEaWZmZXJlbnRp
YXRlIGJldHdlZW4gY29sb3Igc3BhY2VzIHVzZWQgdG8gdGFnIGNvbG9ycyBhbmQgY29sb3Igc3Bh
Y2VzIHVzZWQgdG8gdGFnIGRlc3RpbmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIENvZGVyIGltcGxl
bWVudGF0aW9uIG9mIEVudW1UcmFpdHMgZm9yIGNvbG9yIHNwYWNlIHR5cGVzIGlzIG5vdworICAg
ICAgICBpbiBXZWJDb3JlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorICAgICAgICBVcGRhdGUgdG8gdXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBy
YXRoZXIgdGhhbiBDb2xvclNwYWNlLgorCiAyMDIxLTAyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcyMzM3KTogY3Jhc2ggdW5kZXIg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0SW5hY3RpdmUoKQpJbmRleDogU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJ
KHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNz
IFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmUKICAgICB1c2luZyBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBj
cmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3
LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaQogICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1c2goZmx1c2hJZGVu
dGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCShyZXZpc2lvbiAyNzI0NjIp
CisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEl0ZW07CiB9CiBj
bGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVudW0gY2xhc3MgQ29sb3JTcGFj
ZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogfQogCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJy
aWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9y
bWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgd2Fr
ZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3Vt
ZW50cyYpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6Oklt
YWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7CiAgICAgdm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJD
b3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwpJbmRleDogU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHsKLSAgICBD
cmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RydWN0IFdlYktp
dDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzKQogICAgIEdldElt
YWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBHZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIoU3RyaW5nIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIGVu
dW06dWludDhfdCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9u
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSAtPiAoU3RyaW5nIHVybFN0cmluZykgU3luY2hyb25vdXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjcyNDYyKQorKysg
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1Nyw3
ICsyNTcsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlCiAgICAg
ICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJp
bmcnLAotICAgICAgICAnV2ViQ29yZTo6Q29sb3JTcGFjZScsCisgICAgICAgICdXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UnLAogICAgICAgICAnV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4
dCcsCiAgICAgICAgICdXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcicsCkBAIC02
NTQsNiArNjU0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdQQUw6
OlNlc3Npb25JRCc6IFsnPHBhbC9TZXNzaW9uSUQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF1
dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSc6IFsnPFdlYkNvcmUvRE9NUGFzdGVB
Y2Nlc3MuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSc6IFsn
PFdlYkNvcmUvQ29sb3JTcGFjZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldv
cmtlcklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uRmxhZ3MnOiBbJzxXZWJDb3JlL0RyYWdEYXRh
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QnOiBbJzxXZWJDb3Jl
L0RyYWdBY3Rpb25zLmg+J10sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4OSwyMCArODg5
LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIAogbmFtZXNw
YWNlIFdURiB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q29sb3JT
cGFjZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgV2ViQ29yZTo6Q29s
b3JTcGFjZSwKLSAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLAotICAgIFdlYkNvcmU6OkNv
bG9yU3BhY2U6OkxpbmVhclJHQiwKLSAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpEaXNwbGF5UDMK
LSAgICA+OwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLAotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsCi0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQKKyAgICAgICAgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQK
ICAgICA+OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQkocmV2aXNp
b24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTEgKzE4MywxMSBA
QCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpCiAgICAgYXV0byByZW5k
ZXJpbmdNb2RlID0gbV9hY2NlbGVyYXRlc0RyYXdpbmcgPyBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCA6IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5n
Rm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpCi0gICAgICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKGJhY2tpbmdTdG9yZVNpemUoKSwgcmVu
ZGVyaW5nTW9kZSwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7
CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCkt
PmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKGJh
Y2tpbmdTdG9yZVNpemUoKSwgcmVuZGVyaW5nTW9kZSwgMSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKICAgICBlbHNlIGlmIChyZW5kZXJpbmdN
b2RlID09IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShiYWNraW5n
U3RvcmVTaXplKCksIDEsIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCks
IG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6
Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
QmFja2VuZD46OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIDEsIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgZWxzZQot
ICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFn
ZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRl
KGJhY2tpbmdTdG9yZVNpemUoKSwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxG
b3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogfQogCiBi
b29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGlj
IFdlCiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2Fs
ZTsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6
OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChCYWNrZW5kVHlw
ZTo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Ojp3YWl0Rm8KICAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlk
Rmx1c2g+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0
aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCi1SZWZQdHI8
SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgUmVmUHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEl0ZW07CiBjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBJbWFnZURhdGE7CiBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50
OF90OwotZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgRGVzdGlu
YXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJv
b2w7CiB9CiAKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAv
LyBNZXNzYWdlcyB0byBiZSBzZW50LgotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBTdHJpbmcgZ2V0RGF0YVVSTEZvckltYWdlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDksNyArOTA5LDcgQEAg
UmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gV2ViQ2hyb21lQwogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVm
UHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQ
dXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIGlm
ICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1
cnBvc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJ
KHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3Jl
YXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25z
dCBmaW5hbDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25z
dCBmaW5hbDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2lu
ZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="437747"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419511</attachid>
            <date>2021-02-06 11:12:11 -0800</date>
            <delta_ts>2021-02-06 19:01:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221520-20210206111210.patch</filename>
            <type>text/plain</type>
            <size>104858</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1NiBAQAorMjAyMS0wMi0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGNvbG9yIHNwYWNlcyB1c2VkIHRvIHRhZyBjb2xvcnMgYW5kIGNvbG9yIHNwYWNlcyB1c2VkIHRv
IHRhZyBkZXN0aW5hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlcGxhY2UgdXNlIG9mIHRoZSBDb2xvclNwYWNlIGVudW0gaW4gZGVzdGluYXRp
b24gY29udGV4dHMgKEltYWdlQnVmZmVyLCBGaWx0ZXJzLCBldGMuKQorICAgICAgICB3aXRoIGEg
bmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBlbnVtIHRoYXQgaXMganVzdCB0aGUgbGltaXRlZCBz
ZXQgb2YgY29sb3Igc3BhY2VzCisgICAgICAgIHN1cHBvcnRlZCBpbiB0aGF0IGNvbnRleHQsIGp1
c3QgU1JHQiBhbmQgTGluZWFyU1JHQi4gV2UgbWF5IG5lZWQgdG8gZXhwYW5kIHRoaXMgdG8KKyAg
ICAgICAgb3RoZXIgc3VwcG9ydGVkIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlcyBpbiB0aGUgZnV0
dXJlLCBidXQgY3VycmVudGx5IG9ubHkgdGhvc2UgdHdvCisgICAgICAgIGFyZSBhY3R1YWxseSB1
c2VkLCBhbmQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24gZm9yIGhpZ2hlciBnYW11dCBzcGFjZXMg
bGlrZSBEaXNwbGF5UDMKKyAgICAgICAgYXJlIGNvbW11bmljYXRlZCBkaWZmZXJlbnRseS4KKwor
ICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gbW9yZSBjbGVhcmx5IHNlZSB0aGVzZSB0d28g
Y29uY2VwdHMgYXMgZGlmZmVyZW50IGFuZCBlbnN1cmUgd2UKKyAgICAgICAgd2Ugc3VwcG9ydCBh
bGwgY2FzZXMgZm9yIGVhY2gsIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdG8gaWdub3JlIHNvbWUg
Y29sb3Igc3BhY2VzIGluCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0cy4KKworICAg
ICAgICBXaGlsZSBjaGFuZ2luZyBhIGJ1bmNoIG9mIG5hbWVzLCBhbHNvIHRha2UgdGhlIG9wcGVy
dHVuaXR5IHRvIHJlbmFtZSBDb2xvclNwYWNlOjpMaW5lYXJSR0IKKyAgICAgICAgdG8gQ29sb3JT
cGFjZTo6TGluZWFyU1JHQiB0byBtYXRjaCBDb2xvclNwYWNlOjpTUkdCIChhbHNvIGRvbmUgZm9y
IHRoZSBuZXcgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQikuCisK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSBjb25zdCk6CisgICAgICAgICogaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZm
ZXJGb3JQYWludGluZyBjb25zdCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVl
bkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsV2l0aENvbG9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAg
IChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OkNsaXBUb0RyYXdpbmdD
b21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29s
b3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNl
bWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
VGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
b252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNJ
bWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6Om9wZXJhdGluZ0NvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpzZXRPcGVyYXRpbmdDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6cmVzdWx0Q29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
R3JhcGhpYzo6U291cmNlR3JhcGhpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6
OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0
ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxk
UHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNr
QW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3UGF0
dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorCiAyMDIxLTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSUZDXSBDb250aW51YXRpb24gcHJlIGFuZCBwb3N0IGJsb2NrIGlubGluZSBi
b3hlcyBzaG91bGQgbm90IGhhdmUgYm90aCB0aGUgc3RhcnQgYW5kIGVuZCBkZWNvcmF0aW9ucyBv
ZiB0aGUgb3JpZ2luYWwgaW5saW5lIGJveApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBA
IEltYWdlKiBDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSAKICAgICBpZiAoIXdpZHRo
KCkgfHwgIWhlaWdodCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fY29waWVk
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0
cik7CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMiw3ICs5MzIs
NyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAgICAgYXV0byBy
ZW5kZXJpbmdNb2RlID0gc2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6
QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogICAgIC8vIEZJWE1F
OiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMuCiAg
ICAgYXV0byB1c2VEaXNwbGF5TGlzdCA9IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZU9y
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpID8gU2hv
dWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKLSAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KSk7CisgICAgc2V0SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIHVzZURpc3BsYXlM
aXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KSk7CiAKICAgICBpZiAoYnVmZmVy
KCkgJiYgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkpCiAgICAgICAgIGJ1ZmZlcigpLT5kcmF3
aW5nQ29udGV4dCgpLT5zZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShtX3RyYWNrc0Rpc3BsYXlM
aXN0UmVwbGF5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6Y3IKIHsKICAgICBhdXRvKiBob3N0V2luZG93ID0gZG9j
dW1lbnQoKS52aWV3KCkgJiYgZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKSA/IGRvY3VtZW50KCku
dmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CiAgICAgYXV0byBzaG91bGRV
c2VEaXNwbGF5TGlzdCA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdF
bmFibGVkKCkgPyBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzIDogU2hvdWxkVXNlRGlzcGxheUxp
c3Q6Ok5vOwotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5n
LCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHNob3Vs
ZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5nLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7
CiB9CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3
ICs4NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5y
b290KCkpIHsKICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+
cm9vdCgpLT5ob3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRl
cmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6
Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogICAg
ICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
Y3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiwxNCArNDMyLDE0IEBAIHZvaWQgT2Zmc2Ny
ZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5i
dWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVy
LT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5s
b2dpY2FsU2l6ZSgpKSwgQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVy
KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICAg
ICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVy
UGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5n
Q29tbWl0QnVmZmVyICYmIHNob3VsZFB1c2hCdWZmZXIpCiAgICAgICAgIHB1c2hCdWZmZXJUb1Bs
YWNlaG9sZGVyKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MTcsNyArMTYxNyw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9z
aXRlT3BlcmF0b3I6OkNvcHkpIHsKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZh
c0Jhc2UoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RU
b0J1ZmZlcihzcmNSZWN0LCBDb2xvclNwYWNlOjpTUkdCLCAqYykpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGNvcHkgPSBidWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoc3JjUmVjdCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCAqYykpIHsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygp
OwogICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7
IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCku
Z2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9CkBAIC0yNTcyLDcgKzI1NzIsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKGMtPmNsaXBUb0RyYXdpbmdDb21tYW5kcyhtYXNrUmVjdCwg
Q29sb3JTcGFjZTo6U1JHQiwgV1RGTW92ZShwYWludE1hc2tJbWFnZSkpID09IEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVm
ZmVyKQorICAgICAgICBpZiAoYy0+Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKG1hc2tSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFdURk1vdmUocGFpbnRNYXNrSW1hZ2UpKSA9PSBHcmFw
aGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJ
bWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBkcmF3U3R5bGUuYXBw
bHlGaWxsQ29sb3IoKmMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MjgsNyArNTI4LDcgQEAgdm9pZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VN
bwogICAgIG1fY2xpZW50LnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVmUHRy
PEltYWdlQnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBv
c2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVu
dC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmlu
Z1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBj
b25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNyArMzI3LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAot
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIEVOQUJM
RShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW0JKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQogCisjaW1wb3J0ICJDb2xvclNwYWNl
Q0cuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJKU0RPTVdpbmRvdy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCkBAIC0xMjAsOSArMTIxLDggQEAgcHJpdmF0ZToKIAog
c3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7CiAgICAgQ0dGbG9hdCBj
b21wb25lbnRzWzRdID0geyByLCBnLCBiLCBhIH07Ci0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUo
Y29sb3JTcGFjZSwgY29tcG9uZW50cyk7CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNv
bG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cyk7CiB9CiAKIHN0cnVjdCBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ3Vyc29yOwogY2xhc3MgSW1hZ2VC
dWZmZXI7CiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwotZW51bSBjbGFzcyBD
b2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDog
dWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFJl
bmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IElu
dFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNz
aWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9k
ZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0ID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJ
KHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICB9CiAKICAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgQ29sb3JTcGFj
ZTo6U1JHQiwgY3R4dCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclNlcmlhbGl6YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNlcmlhbGl6YXRpb24oQ29sb3JTCiAgICAgICAgIHJldHVybiAiZGlzcGxheS1wMyJfczsKICAg
ICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAgICAgcmV0dXJuICJsYWIiX3M7Ci0gICAgY2Fz
ZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJTUkdC
OgogICAgICAgICByZXR1cm4gImxpbmVhci1zcmdiIl9zOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6
UHJvUGhvdG9SR0I6CiAgICAgICAgIHJldHVybiAicHJvcGhvdG8tcmdiIl9zOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAg
ICAgdHMgPDwgIkwqYSpiIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpM
aW5lYXJSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQjoKKyAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbG9yU3BhY2U6OlByb1Bob3RvUkdCOgogICAgICAgICB0cyA8PCAiUHJv
UGhvdG9SR0IiOwpAQCAtNjEsNCArNjEsMTUgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgQwogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCit7Cisg
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJz
UkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29sb3JUeXBl
cy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0U3RyZWFtOwpAQCAtMzgsMjEgKzM5LDI3IEBA
IGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3QgewogICAgIEE5OFJHQiwKICAgICBEaXNw
bGF5UDMsCiAgICAgTGFiLAotICAgIExpbmVhclJHQiwKKyAgICBMaW5lYXJTUkdCLAogICAgIFBy
b1Bob3RvUkdCLAogICAgIFJlYzIwMjAsCiAgICAgU1JHQiwKICAgICBYWVpfRDUwLAogfTsKIAor
ZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90IHsKKyAgICBMaW5lYXJT
UkdCLAorICAgIFNSR0IsCit9OworCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgRGVzdGluYXRpb25D
b2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VNYXBw
aW5nOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5nPEE5OFJH
QjxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OkE5
OFJHQiB9OyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5n
PERpc3BsYXlQMzxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9y
U3BhY2U6OkRpc3BsYXlQMyB9OyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9y
U3BhY2VNYXBwaW5nPExhYjxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7
IENvbG9yU3BhY2U6OkxhYiB9OyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9y
U3BhY2VNYXBwaW5nPExpbmVhclNSR0JBPFQ+PiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xv
clNwYWNlIHsgQ29sb3JTcGFjZTo6TGluZWFyUkdCIH07IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29sb3JTcGFjZU1hcHBpbmc8TGluZWFyU1JHQkE8VD4+IHsgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpMaW5lYXJTUkdCIH07IH07CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFjZU1hcHBpbmc8UHJvUGhvdG9SR0I8VD4+
IHsgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpQcm9QaG90
b1JHQiB9OyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5n
PFJlYzIwMjA8VD4+IHsgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNw
YWNlOjpSZWMyMDIwIH07IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFj
ZU1hcHBpbmc8U1JHQkE8VD4+IHsgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBD
b2xvclNwYWNlOjpTUkdCIH07IH07CkBAIC03MCw3ICs3Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGMKICAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6
Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQMzxU
Pj4oY29tcG9uZW50cykpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICByZXR1
cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNv
bXBvbmVudHM8TGFiPFQ+Pihjb21wb25lbnRzKSk7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5l
YXJSR0I6CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJTUkdCOgogICAgICAgICByZXR1cm4g
c3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBv
bmVudHM8TGluZWFyU1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKICAgICBjYXNlIENvbG9yU3BhY2U6
OlByb1Bob3RvUkdCOgogICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1
bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8UHJvUGhvdG9SR0I8VD4+KGNvbXBv
bmVudHMpKTsKQEAgLTg3LDMgKzk0LDI5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEZ1bmN0b3I+IGMKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RG
IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDb2xvclNwYWNlPiB7
CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JT
cGFjZSwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6QTk4UkdCLAorICAgICAgICBXZWJD
b3JlOjpDb2xvclNwYWNlOjpEaXNwbGF5UDMsCisgICAgICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6
OkxhYiwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6TGluZWFyU1JHQiwKKyAgICAgICAg
V2ViQ29yZTo6Q29sb3JTcGFjZTo6UHJvUGhvdG9SR0IsCisgICAgICAgIFdlYkNvcmU6OkNvbG9y
U3BhY2U6OlJlYzIwMjAsCisgICAgICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNSR0IsCisgICAg
ICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlhZWl9ENTAKKyAgICA+OworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2UsCisgICAgICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQiwKKyAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCCisg
ICAgPjsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlw
ZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgSW1hZ2VCdWZmZXIgewogcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1h
Z2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisg
ICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9
IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBD
b25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJl
ZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAg
IHsKLSAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07Cisg
ICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7
IHNpemUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVy
cywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtOTEsNyArOTEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJbnRTaXplIGxvZ2lj
YWxTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9n
aWNhbFNpemUpOyB9CiAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZTsgfQotICAgIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNw
YWNlOyB9CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQogICAgIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVs
Rm9ybWF0OyB9CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKQEAgLTE5
NSw3ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRl
c3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRl
c3RDb2xvclNwYWNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250
ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoCiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2FsZSwgMS4wIC8geVNj
YWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2NhbGUpOwogCi0gICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3Rl
ZFNpemUsIENvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1
c3RlZFNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3MKICAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAgaWYg
KCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNo
IHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFs
bHlFcXVhbChkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkg
ewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBDb2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7Cisg
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRl
eHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Miw3ICs4
ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0CiAgICAgY2xp
cE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNS
ZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK0dyYXBoaWNzQ29udGV4dDo6Q2xp
cFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdG
dW5jdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNyArNDA1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKTsKIAog
ICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IDogYm9vbCB7IFN1Y2Nl
c3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIgfTsKLSAgICBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOworICAg
IENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2
b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKICAgICAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMo
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlw
UGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xp
cEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRp
YVBsYXllciYpIGNvbnN0ID0gMDsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3Qg
ZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xh
bXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsKIAotUmVmUHRy
PEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRV
c2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNv
bnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJp
bmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
CiAgICAgaWYgKGhvc3RXaW5kb3cpCkBAIC01OCw3ICs1OCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsK
ICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogICAgIApAQCAtMTAxLDcgKzEw
MSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKIAogfQogCi1S
ZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE3LDcg
KzExNyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKICAgICBy
ZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0
LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKIH0KQEAgLTE3
Myw3ICsxNzMsNyBAQCBJbnRTaXplIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6CiAg
ICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3RvcigpKTsK
IH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29w
eVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDE0IEBAIHN0cnVjdCBJdGVtQnVmZmVySGFuZGxl
OwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VC
dWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAg
ICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJp
bmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RX
aW5kb3cqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdCA9IFBpeGVsRm9ybWF0OjpCR1JBOCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRl
cmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQgPSBQaXhlbEZv
cm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQgPSBQaXhl
bEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxl
IHdpdGggdGhlIGNvbnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBp
bnRvIHRoZSBidWZmZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIENvbG9yU3BhY2UsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQg
d2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVy
LCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhj
b25zdCBGbG9hdFNpemUmKTsKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1l
dGVycyYgcGFyYW1ldGVycygpIGNvbnN0ID0gMDsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
PSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRp
b246Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBh
dGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50
byB0aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwor
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSks
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CkBAIC0xMjEsNyAr
MTIxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zv
cm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xv
clNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkc3RD
b2xvclNwYWNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0LCBQ
cmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3QgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4
MSw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CiAgICAgICAgIEZsb2F0U2l6
ZSBsb2dpY2FsU2l6ZTsKICAgICAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlOwotICAgICAgICBD
b2xvclNwYWNlIGNvbG9yU3BhY2U7CisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlOwogICAgICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKICAgICB9OwogCkBAIC0x
MTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9NYXNrKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZm9y
bUNvbG9yU3BhY2UoQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QgPSAwOwpAQCAt
MTQ5LDcgKzE0OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9naWNhbFNpemUoKSBj
b25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6ZSk7IH0KICAgICBm
bG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlOyB9Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0KKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CiAgICAg
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4
ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3QgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKCkpOyB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xp
cFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNv
bnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3MjQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTcgKzg5LDE3IEBAIHZvaWQg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBUb01hc2sKICAgICAgICAgQ2Fpcm86OmNsaXBU
b0ltYWdlQnVmZmVyKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCi12b2lkIEltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29s
b3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKK3ZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRy
YW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKIHsKICAgICBpZiAoc3JjQ29sb3JT
cGFjZSA9PSBkZXN0Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gb25seSBz
UkdCIDwtPiBsaW5lYXJSR0IgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50Ci0gICAgaWYgKChz
cmNDb2xvclNwYWNlICE9IENvbG9yU3BhY2U6OkxpbmVhclJHQiAmJiBzcmNDb2xvclNwYWNlICE9
IENvbG9yU3BhY2U6OlNSR0IpCi0gICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBDb2xvclNw
YWNlOjpMaW5lYXJSR0IgJiYgZGVzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQikpCisg
ICAgaWYgKChzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QiAmJiBzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikKKyAgICAg
ICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QiAmJiBkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZTo6TGlu
ZWFyUkdCKSB7CisgICAgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQikgewogICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90
LCAyNTY+IGxpbmVhclJnYkxVVCA9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhf
dCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7
IGkrKykgewpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6
OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfSgpOwogICAg
ICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVUKTsKLSAgICB9IGVs
c2UgaWYgKGRlc3RDb2xvclNwYWNlID09IENvbG9yU3BhY2U6OlNSR0IpIHsKKyAgICB9IGVsc2Ug
aWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikgewogICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0g
W10gewogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGlwVG9N
YXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2Zv
cm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkp
IGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENH
Q28KICAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKICAgICBjYXNlIENv
bG9yU3BhY2U6OkxhYjoKICAgICAgICAgcmV0dXJuIGxhYkNvbG9yU3BhY2VSZWYoKTsKLSAgICBj
YXNlIENvbG9yU3BhY2U6OkxpbmVhclJHQjoKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclNS
R0I6CiAgICAgICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CiAgICAgY2FzZSBD
b2xvclNwYWNlOjpQcm9QaG90b1JHQjoKICAgICAgICAgcmV0dXJuIHByb1Bob3RvUkdCQ29sb3JT
cGFjZVJlZigpOwpAQCAtNjUsNCArNjUsMTYgQEAgc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VS
ZWYgY2FjaGVkQ0dDbwogICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwogfQogCitzdGF0
aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAg
Y2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6CisgICAgICAgIHJldHVybiBs
aW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0I6CisgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKK30K
KwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCShy
ZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3
ICszOCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2UKICAgICB1
c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6YmFzZVRyYW5zZm9ybTsKIAogcHVibGljOgot
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKICAgICB7CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2OCw3ICs4NjgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBDbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBEaXNwbGF5TGlzdCYmIGRyYXdpbmdDb21tYW5kcykKKyAgICBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UsIERpc3BsYXlMaXN0JiYgZHJhd2luZ0NvbW1hbmRzKQogICAgICAgICA6IG1fZGVz
dGluYXRpb24oZGVzdGluYXRpb24pCiAgICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2Up
CiAgICAgICAgICwgbV9kcmF3aW5nQ29tbWFuZHMoV1RGTW92ZShkcmF3aW5nQ29tbWFuZHMpKQpA
QCAtODkxLDcgKzg5MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQotICAgIENvbG9y
U3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQorICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNw
YWNlOyB9CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIGRyYXdpbmdDb21tYW5kcygpIGNvbnN0IHsg
cmV0dXJuIG1fZHJhd2luZ0NvbW1hbmRzOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC05MDEsNyArOTAxLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwotICAgIENvbG9yU3Bh
Y2UgbV9jb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7
CiAgICAgRGlzcGxheUxpc3QgbV9kcmF3aW5nQ29tbWFuZHM7CiB9OwogCkBAIC05MjEsNyArOTIx
LDcgQEAgT3B0aW9uYWw8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBDbGlwVG9EcgogICAgIGlmICgh
ZGVzdGluYXRpb24pCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25h
bDxDb2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gY29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CiAgICAgaWYgKCFj
b2xvclNwYWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBSZWNvcmRl
cjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdQogICAgIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZl
cj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0KTsK
IH0KIAotdm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFw
aGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCit2b2lkIFJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYg
ZHJhd2luZ0Z1bmN0aW9uKQogewogICAgIC8vIFRoZSBpbml0aWFsIENUTSBtYXRjaGVzIEltYWdl
QnVmZmVyJ3MgaW5pdGlhbCBDVE0uCiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdl
dENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCShyZXZpc2lvbiAyNzI0NjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAg
ICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0Nv
bnRleHQmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQ
bGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29s
IGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRl
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVu
dE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBGRURpc3BsYWNl
bWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgcwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZF
RGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2UpCit2b2lkIEZF
RGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSkKIHsKICAgICAvLyBTcGVjOiBUaGUgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycgcHJv
cGVydHkgb25seSBhcHBsaWVzIHRvIHRoZSAnaW4yJyBzb3VyY2UgaW1hZ2UKICAgICAvLyBhbmQg
ZG9lcyBub3QgYXBwbHkgdG8gdGhlICdpbicgc291cmNlIGltYWdlLiBUaGUgJ2luJyBzb3VyY2Ug
aW1hZ2UgbXVzdCByZW1haW4gaW4gaXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCShy
ZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQogICAg
IGJvb2wgc2V0U2NhbGUoZmxvYXQpOwogCi0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKENv
bG9yU3BhY2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBpbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZs
b29kLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIHB1
YmxpYzoKICNpZiAhVVNFKENHKQogICAgIC8vIGZlRmxvb2QgZG9lcyBub3QgcGVyZm9ybSBjb2xv
ciBpbnRlcnBvbGF0aW9uIG9mIGFueSBraW5kLCBzbyB0aGUgcmVzdWx0IGlzIGFsd2F5cyBpbiB0
aGUgY3VycmVudAogICAgIC8vIGNvbG9yIHNwYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9m
IGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycy4KLSAgICB2b2lkIHNldE9wZXJhdGluZ0NvbG9y
U3BhY2UoQ29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9y
U3BhY2UoQ29sb3JTcGFjZTo6U1JHQik7IH0KLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2Uo
Q29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2Uo
Q29sb3JTcGFjZTo6U1JHQik7IH0KKyAgICB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9CisgICAgdm9pZCBzZXRSZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZl
Y3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsgfQog
I2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNCw3ICs0MDQsNyBAQCBib29sIEZFTGlnaHRpbmc6OmRy
YXdMaWdodGluZyhVaW50OENsYW1wCiAgICAgZGF0YS53aWR0aERlY3JlYXNlZEJ5T25lID0gd2lk
dGggLSAxOwogICAgIGRhdGEuaGVpZ2h0RGVjcmVhc2VkQnlPbmUgPSBoZWlnaHQgLSAxOwogICAg
IAotICAgIGlmIChvcGVyYXRpbmdDb2xvclNwYWNlKCkgPT0gQ29sb3JTcGFjZTo6TGluZWFyUkdC
KSB7CisgICAgaWYgKG9wZXJhdGluZ0NvbG9yU3BhY2UoKSA9PSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkxpbmVhclNSR0IpIHsKICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBtX2xpZ2h0aW5n
Q29sb3IudG9Db2xvclR5cGVMb3NzeTxMaW5lYXJTUkdCQTxmbG9hdD4+KCk7CiAgICAgICAgIHBh
aW50aW5nRGF0YS5pbml0aWFsTGlnaHRpbmdEYXRhLmNvbG9yVmVjdG9yID0gRmxvYXRQb2ludDNE
KHIsIGcsIGIpOwogICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgICAgIHRpbGVSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJSZXNvbHV0aW9u
KCkud2lkdGgoKSwgZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAgfQog
Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIENvbG9yU3BhY2U6OlNSR0IsIGZpbHRlcigpLnJlbmRl
cmluZ01vZGUoKSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIXRpbGVJbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzI0
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCBJbWFnZUJ1ZmZlciog
RmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1
bHQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojp1
bm11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8Q29sb3JTcGFj
ZT4gY29sb3JTcGFjZSkKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojp1
bm11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8RGVzdGluYXRp
b25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0
LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2Nh
bGVkU2l6ZSkpOwpAQCAtMjk3LDcgKzI5Nyw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
RmlsdGVyRWZmZWN0OjoKICAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1SZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRS
ZWN0JiByZWN0LCBPcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQorUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50
UmVjdCYgcmVjdCwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQog
ewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFn
ZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwpAQCAtNDMzLDcgKzQzMyw3
IEBAIHN0YXRpYyB2b2lkIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY28KICNlbmRpZgogfQog
Ci1SZWZQdHI8SW1hZ2VEYXRhPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZURhdGFUb0NvbG9y
U3BhY2UoQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZURhdGEmIGlucHV0RGF0YSwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQpCitSZWZQdHI8SW1hZ2VEYXRhPiBG
aWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZURhdGFUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlIHRhcmdldENvbG9yU3BhY2UsIEltYWdlRGF0YSYgaW5wdXREYXRhLCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCkKIHsKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9uUmVj
dChJbnRQb2ludCgpLCBpbnB1dERhdGEuc2l6ZSgpKTsKICAgICBkZXN0aW5hdGlvblJlY3Quc2Nh
bGUoMSAvIG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIFJlZlB0
cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29udmVydEkKICAgICByZXR1cm4gY29udmVydElt
YWdlQnVmZmVyVG9Db2xvclNwYWNlKHRhcmdldENvbG9yU3BhY2UsICpidWZmZXIsIGRlc3RpbmF0
aW9uUmVjdCwgb3V0cHV0Rm9ybWF0KTsKIH0KIAotUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZm
ZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoQ29sb3JTcGFjZSB0YXJnZXRDb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0KQorUmVmUHRyPEltYWdlRGF0YT4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQpCiB7CiAg
ICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKHJlY3Qu
c2l6ZSgpKTsKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VCdWZmZXIgd2l0aCB0aGUgY29ycmVjdCBj
b2xvciBzcGFjZSBhbmQgdXRpbGl6ZSBDRyB0byBoYW5kbGUgY29sb3Igc3BhY2UgY29udmVyc2lv
bgpAQCAtNDU4LDcgKzQ1OCw3IEBAIFJlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29u
dmVydEkKICAgICByZXR1cm4gY29udmVydGVkQnVmZmVyLT5nZXRJbWFnZURhdGEob3V0cHV0Rm9y
bWF0LCByZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1
ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1h
Z2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0cyB0
aGUgZGF0YSBzdG9yZWQgaW4gbV9pbWFnZUJ1ZmZlclJlc3VsdCwgYW5kIHNhdmUgdG8gZGVzdGlu
YXRpb24KICAgICBhdXRvIGNvbnZlcnRlZEltYWdlRGF0YSA9IGNvbnZlcnRJbWFnZUJ1ZmZlclRv
Q29sb3JTcGFjZShjb2xvclNwYWNlLCAqbV9pbWFnZUJ1ZmZlclJlc3VsdCwgeyBJbnRQb2ludCgp
LCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSB9LCBvdXRwdXRGb3JtYXQpOwpAQCAtNDY3LDcg
KzQ2Nyw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWYKICAgICBj
b3B5SW1hZ2VCeXRlcygqY29udmVydGVkSW1hZ2VEYXRhLT5kYXRhKCksIGRlc3RpbmF0aW9uLCBk
ZXN0UmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VEYXRh
VG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIEltYWdlRGF0YSYg
aW1hZ2VEYXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0
Ojpjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYg
ZGVzdGluYXRpb24sIEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0L21fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LAogICAg
IC8vIHdoaWNoZXZlciBpc24ndCBudWxsLCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgpAQCAtNDc3
LDcgKzQ3Nyw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VEYXQKICAg
ICBjb3B5SW1hZ2VCeXRlcygqY29udmVydGVkSW1hZ2VEYXRhLT5kYXRhKCksIGRlc3RpbmF0aW9u
LCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVz
dWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwg
T3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5
VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
KQogewogICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CiAgICAgCkBAIC01MTAsNyArNTEwLDcgQEAg
dm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bAogICAgIGNvcHlJbWFnZUJ5
dGVzKCptX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCksIGRlc3RpbmF0aW9uLCByZWN0
KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4
Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8
Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlw
bGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3Qm
IHJlY3QsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKICAg
ICBBU1NFUlQoaGFzUmVzdWx0KCkpOwogCkBAIC01OTAsNyArNTkwLDcgQEAgSW1hZ2VEYXRhKiBG
aWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcAogICAgIHJldHVybiBtX3ByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdC5nZXQoKTsKIH0KIAotYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVzSW1hZ2VE
YXRhQ29sb3JTcGFjZUNvbnZlcnNpb24oT3B0aW9uYWw8Q29sb3JTcGFjZT4gZHN0Q29sb3JTcGFj
ZSkKK2Jvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc0ltYWdlRGF0YUNvbG9yU3BhY2VDb252ZXJz
aW9uKE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gZHN0Q29sb3JTcGFjZSkKIHsKICNp
ZiBVU0UoQ0cpCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHdoZXRoZXIgd2UgbmVl
ZCB0aGUgc3RlcCBvZiBhbiBleHRyYSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCkBAIC02MDQsNyAr
NjA0LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVzSW1hZ2VEYXRhQ29sbwogI2VuZGlm
CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9y
U3BhY2UgZHN0Q29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKQogewogI2lmIFVT
RShDRykKICAgICAvLyBDRyBoYW5kbGVzIGNvbG9yIHNwYWNlIGFkanVzdG1lbnRzIGludGVybmFs
bHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDEwICs4MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclJlc3VsdHNSZWN1
cnNpdmUoKTsKIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlclJlc3VsdCgpOwotICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3Qm
LCBPcHRpb25hbDxDb2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBPcHRpb25h
bDxDb2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBjb3B5VW5tdWx0aXBsaWVk
UmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIE9w
dGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVj
dCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9u
YWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7CisgICAgUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBPcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGNv
cHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IFdURjo6bnVsbG9w
dCk7CisgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYg
ZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+ID0gV1RGOjpudWxsb3B0KTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0
cygpIHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzOyB9CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dEVm
ZmVjdCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZFZmZlY3RJbnB1dHMo
KSBjb25zdCB7IHJldHVybiBtX2lucHV0RWZmZWN0cy5zaXplKCk7IH0KQEAgLTE2MywxMyArMTYz
LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGNsaXBzVG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBt
X2NsaXBzVG9Cb3VuZHM7IH0KICAgICB2b2lkIHNldENsaXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkg
eyBtX2NsaXBzVG9Cb3VuZHMgPSB2YWx1ZTsgfQogCi0gICAgQ29sb3JTcGFjZSBvcGVyYXRpbmdD
b2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xvclNwYWNl
KSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KLSAgICBDb2xvclNwYWNl
IHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpIHsgbV9yZXN1bHRDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQorICAgIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBvcGVyYXRpbmdDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRp
bmdDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNl
ID0gY29sb3JTcGFjZTsgfQorICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSByZXN1bHRDb2xvclNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2
b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Up
IHsgbV9yZXN1bHRDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgaW50KSB7
IGluLT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7IH0K
LSAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZSk7CisgICAgdm9p
ZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CiAgICAg
CiAgICAgc3RhdGljIFZlY3RvcjxmbG9hdD4gbm9ybWFsaXplZEZsb2F0cyhjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB2YWx1ZXMpCiAgICAgewpAQCAtMjAxLDExICsyMDEsMTEgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOwogCiAgICAgdm9pZCBj
b3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1w
ZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2b2lkIGNv
cHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBD
b2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dm9pZCBjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJh
eSYsIEltYWdlRGF0YSYsIENvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKLSAgICBib29sIHJlcXVpcmVzSW1hZ2VEYXRhQ29sb3JTcGFjZUNvbnZlcnNp
b24oT3B0aW9uYWw8Q29sb3JTcGFjZT4pOwotICAgIFJlZlB0cjxJbWFnZURhdGE+IGNvbnZlcnRJ
bWFnZURhdGFUb0NvbG9yU3BhY2UoQ29sb3JTcGFjZSwgSW1hZ2VEYXRhJiwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbik7Ci0gICAgUmVmUHRyPEltYWdlRGF0YT4gY29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24pOworICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9E
ZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weUNvbnZl
cnRlZEltYWdlRGF0YVRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBJbWFnZURhdGEm
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IElu
dFJlY3QmKTsKKyAgICBib29sIHJlcXVpcmVzSW1hZ2VEYXRhQ29sb3JTcGFjZUNvbnZlcnNpb24o
T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7CisgICAgUmVmUHRyPEltYWdlRGF0YT4g
Y29udmVydEltYWdlRGF0YVRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEltYWdl
RGF0YSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworICAgIFJlZlB0cjxJbWFnZURhdGE+IGNv
bnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEltYWdl
QnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogICAgIAog
CiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKQEAgLTI0MSw4ICsyNDEsOCBAQCBwcml2YXRlOgogICAg
IC8vIFNob3VsZCB0aGUgZWZmZWN0IGNsaXAgdG8gaXRzIHByaW1pdGl2ZSByZWdpb24sIG9yIGV4
cGFuZCB0byB1c2UgdGhlIGNvbWJpbmVkIHJlZ2lvbiBvZiBpdHMgaW5wdXRzLgogICAgIGJvb2wg
bV9jbGlwc1RvQm91bmRzIHsgdHJ1ZSB9OwogCi0gICAgQ29sb3JTcGFjZSBtX29wZXJhdGluZ0Nv
bG9yU3BhY2UgeyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgfTsKLSAgICBDb2xvclNwYWNlIG1fcmVz
dWx0Q29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCIH07CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OwogICAgIAogICAgIGNvbnN0IFR5cGUgbV9m
aWx0ZXJFZmZlY3RDbGFzc1R5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6CiAg
ICAgU291cmNlR3JhcGhpYyhGaWx0ZXImIGZpbHRlcikKICAgICAgICAgOiBGaWx0ZXJFZmZlY3Qo
ZmlsdGVyLCBUeXBlOjpTb3VyY2VHcmFwaGljKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwogICAgIH0KIAogICAgIGNvbnN0IGNo
YXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiU291cmNlR3JhcGhpYyI7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA4MCw3ICsxMDgwLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjphcHBlbmQoc3RkOgogICAgIG1fY29tbWFuZExpc3QuYXBwZW5kKFdURk1vdmUo
Y29tbWFuZCkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQogewogICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSkg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkNvbG9y
U3BhY2UsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rp
b248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWludEZyYW1lRm9yTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJh
bWVGb3JNZWRpYShjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIwLDcgKzQyMCw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6
OnIKICAgICByZXR1cm4gRGlyZWN0MkQ6OlN0YXRlOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKG1fcGxh
dGZvcm1Db250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCiB7
CiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBQYXRo
KGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRz
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNv
bnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBN
ZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQpOwogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2Fs
ZSk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKQEAgLTg3LDEwICs4NywxMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlCiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShz
aXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBudWxscHRyKTsKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIG51bGxwdHIpOwogfQogCi1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxh
dGZvcm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQs
IFBsYXRmb3JtSW1hZ2VQdHImJiBiaXRtYXApCitJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+JiYgY29udGV4dCwgUGxhdGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKICAgICA6IEltYWdl
QnVmZmVyQ0dCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlKQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoV1RGTW92ZShwbGF0Zm9ybUNv
bnRleHQpKQogICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcy
Niw3ICs3MjYsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpCiAK
ICAgICBpZiAodXNlSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgTlNSZWN0IGltYWdlQnVmZmVyRHJh
d1JlY3QgPSBOU1JlY3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0
dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsK
LSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5l
V2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBD
b2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0
U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNv
bnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5l
ZWRzUmVwYWludDsKICAgICAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NT
U0ZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0Zp
bHRlci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZgogCiAgICAgICAgIGVmZmVjdEVsZW1lbnQu
c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7CiAgICAgICAgIGlmIChlZmZlY3RF
bGVtZW50LnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9y
U3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJ
bnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8g
Q29sb3JTcGFjZTo6TGluZWFyUkdCIDogQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBl
ZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5z
dHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50
ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKIAogICAgICAgICBidWlsZGVyLT5hZGQo
ZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZmZWN0KTsKICAgICAgICAgcmVmZXJlbmNlRWZmZWN0
cy5hcHBlbmQoKmVmZmVjdCk7CkBAIC0yOTMsNyArMjkzLDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1
aWxkKFJlbmRlckVsZW1lbnQmIHJlbgogICAgICAgICAgICAgLy8gVW5saWtlIFNWRyBGaWx0ZXJz
IGFuZCBDU1NGaWx0ZXJJbWFnZXMsIGZpbHRlciBmdW5jdGlvbnMgb24gdGhlIGZpbHRlcgogICAg
ICAgICAgICAgLy8gcHJvcGVydHkgYXBwbGllZCBoZXJlIHNob3VsZCBub3QgY2xpcCB0byB0aGVp
ciBwcmltaXRpdmUgc3VicmVnaW9ucy4KICAgICAgICAgICAgIGVmZmVjdC0+c2V0Q2xpcHNUb0Jv
dW5kcyhjb25zdW1lciA9PSBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pOwotICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOwor
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChmaWx0ZXJPcGVy
YXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAg
ICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoV1RGTW92ZShwcmV2aW91c0VmZmVj
dCkpOwpAQCAtMzc3LDEyICszNzcsMTIgQEAgdm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKICAgICBp
ZiAobV9maWx0ZXJSZW5kZXJlcikgewogICAgICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVm
ZmVjdHMoZWZmZWN0KTsKICAgICAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgp
KSB7Ci0gICAgICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNw
YWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CiAgICAgZWZmZWN0LmFwcGx5KCk7Ci0gICAgZWZmZWN0LnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZTo6U1JHQik7CisgICAgZWZmZWN0LnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKIH0KIAogTGF5b3V0
UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzgsNyArODc4LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgICAgICBtYXNrUmVj
dC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIAogICAgICAgICAv
LyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIENvbG9yU3BhY2U6OlNSR0Is
IGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
Y29udGV4dCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0
LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzI0Myw3ICszMjQzLDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9y
RGVzY3JpcAogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAxOCB9OwogCi0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KHRpbGVTaXplLCBDb2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzU4LDcgKzEzNTgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNv
CiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVz
cz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlck9i
amVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBpc0luZGV0ZXJt
aW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsKLSAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNp
emUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2U6OlNSR0IsIHBhaW50SW5mby5jb250
ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBwYWludEluZm8uY29udGV4dCgpKTsKICAgICBpZiAoIWlt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcAogICAgIEFmZmluZVRy
YW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0
ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKICAg
ICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwg
YWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAgICAgICAgIC8vIEZJWE1FICgxNDk0NjkpOiBUaGlzIGlt
YWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBN
YWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBjbGlwcGluZywgdGhvdWdo
LgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFj
ZTo6U1JHQiwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOworICAgICAg
ICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CiAgICAg
ICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Myw3ICsxMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyCiAg
ICAgICAgIGVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7CiAgICAg
ICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZl
UmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVsZW1lbnQs
IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCkpOwog
ICAgICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKQotICAgICAgICAgICAgZWZmZWN0LT5zZXRP
cGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgp
LmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVh
clJHQiA/IENvbG9yU3BhY2U6OkxpbmVhclJHQiA6IENvbG9yU3BhY2U6OlNSR0IpOworICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+
c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvcklu
dGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CiAgICAgICAgIGJ1aWxkZXItPmFkZChl
bGVtZW50LnJlc3VsdCgpLCBXVEZNb3ZlKGVmZmVjdCkpOwogICAgIH0KICAgICByZXR1cm4gYnVp
bGRlcjsKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291CiAgICAgZWZmZWN0aXZlVHJhbnNmb3JtLm11bHRpcGx5KGZpbHRlckRhdGEtPnNo
ZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8g
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
OwotICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwg
Q29sb3JTcGFjZTo6TGluZWFyUkdCLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKKyAgICBhdXRv
IHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihm
aWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6TGluZWFyU1JHQiwgcmVuZGVyaW5nTW9kZSwgY29udGV4dCk7CiAgICAgaWYg
KCFzb3VyY2VHcmFwaGljKSB7CiAgICAgICAgIEFTU0VSVCghbV9yZW5kZXJlckZpbHRlckRhdGFN
YXAuY29udGFpbnMoJnJlbmRlcmVyKSk7CiAgICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4
dCA9IGNvbnRleHQ7CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6cG9zdEFwcGx5UgogICAgICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRh
dGE6OkFwcGx5aW5nOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKTsKICAgICAgICAg
ICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwotICAgICAgICAg
ICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdC
KTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgfQogICAgICAgICBmaWx0ZXJEYXRh
LnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAko
cmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250CiAgICAgQWZmaW5lVHJhbnNm
b3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJh
bnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRSb290QmxvY2spOwog
ICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwg
Q29sb3JTcGFjZTo6U1JHQiwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIG1h
c2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRS
ZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250
ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjphcHBseVJlc291CiAKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAhcmVw
YWludFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdT
dHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKLSAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpM
aW5lYXJSR0IgPyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgOiBDb2xvclNwYWNlOjpTUkdCOworICAg
ICAgICBhdXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBD
b2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKICAgICAgICAgLy8gRklYTUUg
KDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5
IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEg
bWFza2luZywgdGhvdWdoLgogICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFu
c2Zvcm0sIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGNvbnRleHQp
OwogICAgICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkKQEAgLTg2LDcgKzg2LDcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNr
SW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5k
ZXJPYmplY3QqIG9iamVjdCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250
ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0
KCk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpk
cmF3Q29udGVuCiAgICAgfQogCiAjaWYgIVVTRShDRykKLSAgICBtYXNrZXJEYXRhLT5tYXNrSW1h
Z2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZTo6U1JHQiwgY29sb3JTcGFjZSk7Cisg
ICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b2xvclNwYWNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291
cmNlTWFza2VyIjsgfQogCi0gICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2Vy
RGF0YSosIENvbG9yU3BhY2UsIFJlbmRlck9iamVjdCopOworICAgIGJvb2wgZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlck9i
amVjdCopOwogICAgIHZvaWQgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVjdCgpOwogCiAg
ICAgRmxvYXRSZWN0IG1fbWFza0NvbnRlbnRCb3VuZGFyaWVzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNyArMjU1
LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZQogUmVmUHRyPElt
YWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25z
dCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91
bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAog
ewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1w
ZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmll
cywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIENvbG9yU3BhY2U6OlNSR0IsIHJlbmRl
cmluZ01vZGUpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5nTW9kZSk7
CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsCiAgICAgcmV0dXJuIGFi
c29sdXRlVHJhbnNmb3JtOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJl
Y3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0IGNyZWF0ZSBl
bXB0eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yNjQsNyArMjY0LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVy
PiBTVkdSZW5kZXJpbmdDb250ZXh0OgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVm
UHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3Qs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6
ZShjbGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91
bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3UKIAogICAgIC8vIENyZWF0ZSBhIG5l
dyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBDb2xvclNw
YWNlOjpTUkdCLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91
bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBtX3BhaW50SW5m
by0+Y29udGV4dCgpKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudChSZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRT
YXZlID0gRG9udFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVw
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJl
ZDsgfQogCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29s
dXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGNsYW1wZWRSZWN0LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmlu
Z01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAg
ICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBS
ZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQg
Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8
SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw3ICsy
NzgsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAgRmxv
YXRSZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VC
dWZmZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2Fs
ZS5oZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwg
Q29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXpl
LnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CiAgICAg
aWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVy
bjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXpl
LCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9v
bWVkQ29udGFpbmVyUmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDggKzkzLDggQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgIGlmICghbV9pbWFnZSAmJiAhcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIENvbG9yU3BhY2U6OlNSR0IKLSAgICBz
ZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOworICAgIC8vIEZFSW1hZ2UgcmVz
dWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgorICAgIHNldFJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKIAogICAgIEltYWdl
QnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYg
KCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI0NjMpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIxLTAy
LTA2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBEaWZmZXJlbnRp
YXRlIGJldHdlZW4gY29sb3Igc3BhY2VzIHVzZWQgdG8gdGFnIGNvbG9ycyBhbmQgY29sb3Igc3Bh
Y2VzIHVzZWQgdG8gdGFnIGRlc3RpbmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIENvZGVyIGltcGxl
bWVudGF0aW9uIG9mIEVudW1UcmFpdHMgZm9yIGNvbG9yIHNwYWNlIHR5cGVzIGlzIG5vdworICAg
ICAgICBpbiBXZWJDb3JlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorICAgICAgICBVcGRhdGUgdG8gdXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBy
YXRoZXIgdGhhbiBDb2xvclNwYWNlLgorCiAyMDIxLTAyLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcyMzM3KTogY3Jhc2ggdW5kZXIg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0SW5hY3RpdmUoKQpJbmRleDogU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJ
KHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNz
IFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmUKICAgICB1c2luZyBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBj
cmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3
LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaQogICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1c2goZmx1c2hJZGVu
dGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCShyZXZpc2lvbiAyNzI0NjIp
CisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEl0ZW07CiB9CiBj
bGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVudW0gY2xhc3MgQ29sb3JTcGFj
ZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogfQogCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJy
aWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9y
bWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgd2Fr
ZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3Vt
ZW50cyYpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6Oklt
YWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7CiAgICAgdm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJD
b3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwpJbmRleDogU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHsKLSAgICBD
cmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBDcmVhdGVJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RydWN0IFdlYktp
dDo6R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzKQogICAgIEdldElt
YWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBHZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIoU3RyaW5nIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIGVu
dW06dWludDhfdCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9u
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSAtPiAoU3RyaW5nIHVybFN0cmluZykgU3luY2hyb25vdXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjcyNDYyKQorKysg
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1Nyw3
ICsyNTcsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlCiAgICAg
ICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJp
bmcnLAotICAgICAgICAnV2ViQ29yZTo6Q29sb3JTcGFjZScsCisgICAgICAgICdXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UnLAogICAgICAgICAnV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4
dCcsCiAgICAgICAgICdXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcicsCkBAIC02
NTQsNiArNjU0LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdQQUw6
OlNlc3Npb25JRCc6IFsnPHBhbC9TZXNzaW9uSUQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF1
dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSc6IFsnPFdlYkNvcmUvRE9NUGFzdGVB
Y2Nlc3MuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSc6IFsn
PFdlYkNvcmUvQ29sb3JTcGFjZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldv
cmtlcklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uRmxhZ3MnOiBbJzxXZWJDb3JlL0RyYWdEYXRh
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QnOiBbJzxXZWJDb3Jl
L0RyYWdBY3Rpb25zLmg+J10sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4OSwyMCArODg5
LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZToKIAogbmFtZXNw
YWNlIFdURiB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q29sb3JT
cGFjZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgV2ViQ29yZTo6Q29s
b3JTcGFjZSwKLSAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLAotICAgIFdlYkNvcmU6OkNv
bG9yU3BhY2U6OkxpbmVhclJHQiwKLSAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpEaXNwbGF5UDMK
LSAgICA+OwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLAotICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsCi0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQKKyAgICAgICAgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwKKyAgICAgICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQK
ICAgICA+OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQkocmV2aXNp
b24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsMTEgKzE4MywxMSBA
QCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpCiAgICAgYXV0byByZW5k
ZXJpbmdNb2RlID0gbV9hY2NlbGVyYXRlc0RyYXdpbmcgPyBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCA6IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5n
Rm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpCi0gICAgICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKGJhY2tpbmdTdG9yZVNpemUoKSwgcmVu
ZGVyaW5nTW9kZSwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7
CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCkt
PmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKGJh
Y2tpbmdTdG9yZVNpemUoKSwgcmVuZGVyaW5nTW9kZSwgMSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKICAgICBlbHNlIGlmIChyZW5kZXJpbmdN
b2RlID09IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShiYWNraW5n
U3RvcmVTaXplKCksIDEsIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCks
IG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6
Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
QmFja2VuZD46OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIDEsIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgZWxzZQot
ICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFn
ZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRl
KGJhY2tpbmdTdG9yZVNpemUoKSwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxG
b3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogfQogCiBi
b29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGlj
IFdlCiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2Fs
ZTsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6
OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChCYWNrZW5kVHlw
ZTo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Ojp3YWl0Rm8KICAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlk
Rmx1c2g+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0
aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCi1SZWZQdHI8
SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgUmVmUHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEl0ZW07CiBjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBJbWFnZURhdGE7CiBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50
OF90OwotZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgRGVzdGlu
YXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJv
b2w7CiB9CiAKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAv
LyBNZXNzYWdlcyB0byBiZSBzZW50LgotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBTdHJpbmcgZ2V0RGF0YVVSTEZvckltYWdlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDksNyArOTA5LDcgQEAg
UmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gV2ViQ2hyb21lQwogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVm
UHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQ
dXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIGlm
ICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1
cnBvc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJ
KHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3Jl
YXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25z
dCBmaW5hbDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25z
dCBmaW5hbDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2lu
ZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419518</attachid>
            <date>2021-02-06 19:01:13 -0800</date>
            <delta_ts>2021-02-06 20:01:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221520-20210206190112.patch</filename>
            <type>text/plain</type>
            <size>104863</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1NiBAQAorMjAyMS0wMi0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGNvbG9yIHNwYWNlcyB1c2VkIHRvIHRhZyBjb2xvcnMgYW5kIGNvbG9yIHNwYWNlcyB1c2VkIHRv
IHRhZyBkZXN0aW5hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlcGxhY2UgdXNlIG9mIHRoZSBDb2xvclNwYWNlIGVudW0gaW4gZGVzdGluYXRp
b24gY29udGV4dHMgKEltYWdlQnVmZmVyLCBGaWx0ZXJzLCBldGMuKQorICAgICAgICB3aXRoIGEg
bmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBlbnVtIHRoYXQgaXMganVzdCB0aGUgbGltaXRlZCBz
ZXQgb2YgY29sb3Igc3BhY2VzCisgICAgICAgIHN1cHBvcnRlZCBpbiB0aGF0IGNvbnRleHQsIGp1
c3QgU1JHQiBhbmQgTGluZWFyU1JHQi4gV2UgbWF5IG5lZWQgdG8gZXhwYW5kIHRoaXMgdG8KKyAg
ICAgICAgb3RoZXIgc3VwcG9ydGVkIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlcyBpbiB0aGUgZnV0
dXJlLCBidXQgY3VycmVudGx5IG9ubHkgdGhvc2UgdHdvCisgICAgICAgIGFyZSBhY3R1YWxseSB1
c2VkLCBhbmQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24gZm9yIGhpZ2hlciBnYW11dCBzcGFjZXMg
bGlrZSBEaXNwbGF5UDMKKyAgICAgICAgYXJlIGNvbW11bmljYXRlZCBkaWZmZXJlbnRseS4KKwor
ICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gbW9yZSBjbGVhcmx5IHNlZSB0aGVzZSB0d28g
Y29uY2VwdHMgYXMgZGlmZmVyZW50IGFuZCBlbnN1cmUgd2UKKyAgICAgICAgd2Ugc3VwcG9ydCBh
bGwgY2FzZXMgZm9yIGVhY2gsIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdG8gaWdub3JlIHNvbWUg
Y29sb3Igc3BhY2VzIGluCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0cy4KKworICAg
ICAgICBXaGlsZSBjaGFuZ2luZyBhIGJ1bmNoIG9mIG5hbWVzLCBhbHNvIHRha2UgdGhlIG9wcGVy
dHVuaXR5IHRvIHJlbmFtZSBDb2xvclNwYWNlOjpMaW5lYXJSR0IKKyAgICAgICAgdG8gQ29sb3JT
cGFjZTo6TGluZWFyU1JHQiB0byBtYXRjaCBDb2xvclNwYWNlOjpTUkdCIChhbHNvIGRvbmUgZm9y
IHRoZSBuZXcgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQikuCisK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSBjb25zdCk6CisgICAgICAgICogaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZm
ZXJGb3JQYWludGluZyBjb25zdCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVl
bkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsV2l0aENvbG9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAg
IChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OkNsaXBUb0RyYXdpbmdD
b21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29s
b3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNl
bWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
VGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
b252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNJ
bWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6Om9wZXJhdGluZ0NvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpzZXRPcGVyYXRpbmdDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6cmVzdWx0Q29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
R3JhcGhpYzo6U291cmNlR3JhcGhpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6
OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0
ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxk
UHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNr
QW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3UGF0
dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorCiAyMDIxLTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSUZDXSBDb250aW51YXRpb24gcHJlIGFuZCBwb3N0IGJsb2NrIGlubGluZSBi
b3hlcyBzaG91bGQgbm90IGhhdmUgYm90aCB0aGUgc3RhcnQgYW5kIGVuZCBkZWNvcmF0aW9ucyBv
ZiB0aGUgb3JpZ2luYWwgaW5saW5lIGJveApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBA
IEltYWdlKiBDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSAKICAgICBpZiAoIXdpZHRo
KCkgfHwgIWhlaWdodCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fY29waWVk
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0
cik7CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMiw3ICs5MzIs
NyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAgICAgYXV0byBy
ZW5kZXJpbmdNb2RlID0gc2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6
QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogICAgIC8vIEZJWE1F
OiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMuCiAg
ICAgYXV0byB1c2VEaXNwbGF5TGlzdCA9IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZU9y
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpID8gU2hv
dWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKLSAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KSk7CisgICAgc2V0SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIHVzZURpc3BsYXlM
aXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KSk7CiAKICAgICBpZiAoYnVmZmVy
KCkgJiYgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkpCiAgICAgICAgIGJ1ZmZlcigpLT5kcmF3
aW5nQ29udGV4dCgpLT5zZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShtX3RyYWNrc0Rpc3BsYXlM
aXN0UmVwbGF5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6Y3IKIHsKICAgICBhdXRvKiBob3N0V2luZG93ID0gZG9j
dW1lbnQoKS52aWV3KCkgJiYgZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKSA/IGRvY3VtZW50KCku
dmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CiAgICAgYXV0byBzaG91bGRV
c2VEaXNwbGF5TGlzdCA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdF
bmFibGVkKCkgPyBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzIDogU2hvdWxkVXNlRGlzcGxheUxp
c3Q6Ok5vOwotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5n
LCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHNob3Vs
ZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5nLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7
CiB9CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3
ICs4NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5y
b290KCkpIHsKICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+
cm9vdCgpLT5ob3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRl
cmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6
Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogICAg
ICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
Y3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiwxNCArNDMyLDE0IEBAIHZvaWQgT2Zmc2Ny
ZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5i
dWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVy
LT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5s
b2dpY2FsU2l6ZSgpKSwgQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVy
KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICAg
ICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVy
UGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5n
Q29tbWl0QnVmZmVyICYmIHNob3VsZFB1c2hCdWZmZXIpCiAgICAgICAgIHB1c2hCdWZmZXJUb1Bs
YWNlaG9sZGVyKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MTcsNyArMTYxNyw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9z
aXRlT3BlcmF0b3I6OkNvcHkpIHsKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZh
c0Jhc2UoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RU
b0J1ZmZlcihzcmNSZWN0LCBDb2xvclNwYWNlOjpTUkdCLCAqYykpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGNvcHkgPSBidWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoc3JjUmVjdCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCAqYykpIHsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygp
OwogICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7
IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCku
Z2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9CkBAIC0yNTcyLDcgKzI1NzIsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKGMtPmNsaXBUb0RyYXdpbmdDb21tYW5kcyhtYXNrUmVjdCwg
Q29sb3JTcGFjZTo6U1JHQiwgV1RGTW92ZShwYWludE1hc2tJbWFnZSkpID09IEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVm
ZmVyKQorICAgICAgICBpZiAoYy0+Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKG1hc2tSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFdURk1vdmUocGFpbnRNYXNrSW1hZ2UpKSA9PSBHcmFw
aGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJ
bWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBkcmF3U3R5bGUuYXBw
bHlGaWxsQ29sb3IoKmMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MjgsNyArNTI4LDcgQEAgdm9pZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VN
bwogICAgIG1fY2xpZW50LnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVmUHRy
PEltYWdlQnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBv
c2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVu
dC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmlu
Z1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBj
b25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNyArMzI3LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAot
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIEVOQUJM
RShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW0JKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQogCisjaW1wb3J0ICJDb2xvclNwYWNl
Q0cuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJKU0RPTVdpbmRvdy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCkBAIC0xMjAsOSArMTIxLDggQEAgcHJpdmF0ZToKIAog
c3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7CiAgICAgQ0dGbG9hdCBj
b21wb25lbnRzWzRdID0geyByLCBnLCBiLCBhIH07Ci0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUo
Y29sb3JTcGFjZSwgY29tcG9uZW50cyk7CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNv
bG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cyk7CiB9CiAKIHN0cnVjdCBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ3Vyc29yOwogY2xhc3MgSW1hZ2VC
dWZmZXI7CiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwotZW51bSBjbGFzcyBD
b2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDog
dWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFJl
bmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IElu
dFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNz
aWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9k
ZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0ID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJ
KHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICB9CiAKICAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgQ29sb3JTcGFj
ZTo6U1JHQiwgY3R4dCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclNlcmlhbGl6YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNlcmlhbGl6YXRpb24oQ29sb3JTCiAgICAgICAgIHJldHVybiAiZGlzcGxheS1wMyJfczsKICAg
ICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAgICAgcmV0dXJuICJsYWIiX3M7Ci0gICAgY2Fz
ZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJTUkdC
OgogICAgICAgICByZXR1cm4gImxpbmVhci1zcmdiIl9zOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6
UHJvUGhvdG9SR0I6CiAgICAgICAgIHJldHVybiAicHJvcGhvdG8tcmdiIl9zOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAg
ICAgdHMgPDwgIkwqYSpiIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpM
aW5lYXJSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQjoKKyAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbG9yU3BhY2U6OlByb1Bob3RvUkdCOgogICAgICAgICB0cyA8PCAiUHJv
UGhvdG9SR0IiOwpAQCAtNjEsNCArNjEsMTcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgQwogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCit7Cisg
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJz
UkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkocmV2
aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb2xv
clR5cGVzLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0
cy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CkBAIC0zOCwyMSArMzks
MjcgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgQTk4UkdCLAogICAg
IERpc3BsYXlQMywKICAgICBMYWIsCi0gICAgTGluZWFyUkdCLAorICAgIExpbmVhclNSR0IsCiAg
ICAgUHJvUGhvdG9SR0IsCiAgICAgUmVjMjAyMCwKICAgICBTUkdCLAogICAgIFhZWl9ENTAsCiB9
OwogCitlbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3QgeworICAgIExp
bmVhclNSR0IsCisgICAgU1JHQiwKK307CisKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKK1dFQkNPUkVfRVhQ
T1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UpOwogCiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JTcGFj
ZU1hcHBpbmc7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFjZU1hcHBpbmc8
QTk4UkdCPFQ+PiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlIHsgQ29sb3JTcGFj
ZTo6QTk4UkdCIH07IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFjZU1h
cHBpbmc8RGlzcGxheVAzPFQ+PiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlIHsg
Q29sb3JTcGFjZTo6RGlzcGxheVAzIH07IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29sb3JTcGFjZU1hcHBpbmc8TGFiPFQ+PiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNw
YWNlIHsgQ29sb3JTcGFjZTo6TGFiIH07IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29sb3JTcGFjZU1hcHBpbmc8TGluZWFyU1JHQkE8VD4+IHsgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGNvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgfTsgfTsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzxMaW5lYXJTUkdCQTxUPj4geyBzdGF0aWMg
Y29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OkxpbmVhclNSR0IgfTsgfTsK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzxQcm9QaG90b1JH
QjxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlBy
b1Bob3RvUkdCIH07IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFjZU1h
cHBpbmc8UmVjMjAyMDxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENv
bG9yU3BhY2U6OlJlYzIwMjAgfTsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xv
clNwYWNlTWFwcGluZzxTUkdCQTxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFj
ZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsgfTsKQEAgLTcwLDcgKzc3LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gYwogICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8RGlzcGxh
eVAzPFQ+Pihjb21wb25lbnRzKSk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpMYWI6CiAgICAgICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VG
cm9tQ29tcG9uZW50czxMYWI8VD4+KGNvbXBvbmVudHMpKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6
OkxpbmVhclJHQjoKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclNSR0I6CiAgICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwogICAgIGNhc2UgQ29sb3JT
cGFjZTo6UHJvUGhvdG9SR0I6CiAgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndh
cmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxQcm9QaG90b1JHQjxUPj4o
Y29tcG9uZW50cykpOwpAQCAtODcsMyArOTQsMjkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgRnVuY3Rvcj4gYwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNvbG9yU3Bh
Y2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpD
b2xvclNwYWNlLAorICAgICAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpBOThSR0IsCisgICAgICAg
IFdlYkNvcmU6OkNvbG9yU3BhY2U6OkRpc3BsYXlQMywKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JT
cGFjZTo6TGFiLAorICAgICAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpMaW5lYXJTUkdCLAorICAg
ICAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpQcm9QaG90b1JHQiwKKyAgICAgICAgV2ViQ29yZTo6
Q29sb3JTcGFjZTo6UmVjMjAyMCwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwK
KyAgICAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6WFlaX0Q1MAorICAgID47Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwKKyAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCLAorICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IKKyAgICA+OworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tl
bmRUeXBlPgogY2xhc3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7
CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3Jl
dGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8g
cGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0byBiYWNr
ZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlw
ZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMgeyBzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgg
fTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTggfTsKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJh
bWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC05MSw3ICs5MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUg
bG9naWNhbFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVy
cy5sb2dpY2FsU2l6ZSk7IH0KICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNv
bG9yU3BhY2U7IH0KKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CiAgICAgUGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQ7IH0KICAgICBjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIApA
QCAtMTk1LDcgKzE5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZv
aWQgdHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3Bh
Y2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCisgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2lu
Z0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUoMS4wIC8geFNjYWxlLCAxLjAg
LyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4U2NhbGUsIHlTY2FsZSk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFk
anVzdGVkU2l6ZSwgQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOworICAgIGF1dG8gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuOwogICAgIGRvQ3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkU2l6ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
cwogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAg
ICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRv
ckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3Nl
bnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0
b3IpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIENvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0
KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBkZXN0
Q29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgy
LDcgKzg4Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QKICAg
ICBjbGlwT3V0KHBhdGgpOwogfQogCi1HcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21t
YW5kc1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQorR3JhcGhpY3NDb250ZXh0
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJh
d2luZ0Z1bmN0aW9uKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2
aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNSw3ICs0MDUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYp
OwogCiAgICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgOiBib29sIHsg
U3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlciB9OwotICAgIENsaXBUb0RyYXdpbmdD
b21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7
CisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOwogICAgIAogICAgIEludFJlY3QgY2xpcEJv
dW5kcygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVj
dCBjbGlwQm91bmRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3Bh
Y2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0
IE1lZGlhUGxheWVyJikgY29uc3QgPSAwOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBj
b25zdCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBN
YXhDbGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1S
ZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNo
b3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJl
bmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlcjsKICAgICBpZiAoaG9zdFdpbmRvdykKQEAgLTU4LDcgKzU4LDcgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVy
OjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBAIC0xMDEs
NyArMTAxLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwogCiB9
CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
MTcsNyArMTE3LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwog
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNv
bnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogfQpA
QCAtMTczLDcgKzE3Myw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJT
aXoKICAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9y
KCkpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVy
Ojpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lv
biAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgc3RydWN0IEl0ZW1CdWZmZXJI
YW5kbGU7CiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJ
bWFnZUJ1ZmZlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4gewogcHVibGlj
OgogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVy
ZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBD
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0OjpCR1JBOCwgY29uc3Qg
SG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdCA9IFBp
eGVsRm9ybWF0OjpCR1JBOCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdCA9
IFBpeGVsRm9ybWF0OjpCR1JBOCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKICAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBh
dGlibGUgd2l0aCB0aGUgY29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3
aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgQ29sb3JTcGFj
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUg
dXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGljaCBpcyBjcmVhdGVkIGZvciBm
aWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBib29sIHNpemVOZWVkc0NsYW1w
aW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgPSAwOwogCkBAIC0xMDgsNyArMTA4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVz
b2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIg
Y29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZl
ciBpbnRvIHRoaXMgbmV3IG9uZS4KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9C
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
Jik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEs
IC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKQEAgLTEy
MSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRz
dENvbG9yU3BhY2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGRzdENvbG9yU3BhY2UpID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxv
cHQsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0KSBjb25zdCA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDcgKzgxLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKICAgICAgICAgRmxv
YXRTaXplIGxvZ2ljYWxTaXplOwogICAgICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGU7Ci0gICAg
ICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKKyAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2U7CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgIH07CiAK
QEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2so
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgeyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJh
bnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlLCBDb2xvclNwYWNlKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSkgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29s
dXRpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCA9IDA7
CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50U2l6ZSBsb2dpY2FsU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXplKTsgfQog
ICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0K
ICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVy
cy5waXhlbEZvcm1hdDsgfQogCiAgICAgSW50UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUoKSk7IH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3Qg
Y2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVk
aWEoY29uc3QgTWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNpb24g
MjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNyArODksMTcgQEAg
dm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzawogICAgICAgICBDYWlybzo6
Y2xpcFRvSW1hZ2VCdWZmZXIoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNl
LCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQordm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQogewogICAgIGlmIChzcmND
b2xvclNwYWNlID09IGRlc3RDb2xvclNwYWNlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBv
bmx5IHNSR0IgPC0+IGxpbmVhclJHQiBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQKLSAgICBp
ZiAoKHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6TGluZWFyUkdCICYmIHNyY0NvbG9yU3Bh
Y2UgIT0gQ29sb3JTcGFjZTo6U1JHQikKLSAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IENv
bG9yU3BhY2U6OkxpbmVhclJHQiAmJiBkZXN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpTUkdC
KSkKKyAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKQor
ICAgICAgICB8fCAoZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBDb2xvclNwYWNl
OjpMaW5lYXJSR0IpIHsKKyAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVp
bnQ4X3QsIDI1Nj4gbGluZWFyUmdiTFVUID0gW10gewogICAgICAgICAgICAgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IDI1NjsgaSsrKSB7CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9KCk7
CiAgICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JMVVQpOwotICAg
IH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZTo6U1JHQikgeworICAgIH0g
ZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gZGV2aWNlUmdi
TFVUPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
aXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xv
clNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CiAKICAgICBTdHJp
bmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2Fj
aGVkQ0dDbwogICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwogICAgIGNh
c2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICByZXR1cm4gbGFiQ29sb3JTcGFjZVJlZigpOwot
ICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgIGNhc2UgQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQjoKICAgICAgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKICAgICBj
YXNlIENvbG9yU3BhY2U6OlByb1Bob3RvUkdCOgogICAgICAgICByZXR1cm4gcHJvUGhvdG9SR0JD
b2xvclNwYWNlUmVmKCk7CkBAIC02NSw0ICs2NSwxNiBAQCBzdGF0aWMgaW5saW5lIENHQ29sb3JT
cGFjZVJlZiBjYWNoZWRDR0NvCiAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
KyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKKyAgICAgICAgcmV0
dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigp
OworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDcgKzM4LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZQog
ICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtOwogCiBwdWJs
aWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25j
cmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAkod29ya2luZyBjb3B5KQpAQCAtODY4LDcgKzg2OCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIENsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIERpc3BsYXlMaXN0JiYgZHJhd2luZ0NvbW1hbmRzKQorICAgIENsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgRGlzcGxheUxpc3QmJiBkcmF3aW5nQ29tbWFuZHMpCiAgICAgICAgIDog
bV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JT
cGFjZSkKICAgICAgICAgLCBtX2RyYXdpbmdDb21tYW5kcyhXVEZNb3ZlKGRyYXdpbmdDb21tYW5k
cykpCkBAIC04OTEsNyArODkxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Ci0gICAg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9Cisg
ICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2Nv
bG9yU3BhY2U7IH0KICAgICBjb25zdCBEaXNwbGF5TGlzdCYgZHJhd2luZ0NvbW1hbmRzKCkgY29u
c3QgeyByZXR1cm4gbV9kcmF3aW5nQ29tbWFuZHM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTkwMSw3ICs5MDEsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247Ci0gICAgQ29s
b3JTcGFjZSBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JT
cGFjZTsKICAgICBEaXNwbGF5TGlzdCBtX2RyYXdpbmdDb21tYW5kczsKIH07CiAKQEAgLTkyMSw3
ICs5MjEsNyBAQCBPcHRpb25hbDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+IENsaXBUb0RyCiAgICAg
aWYgKCFkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgT3B0aW9uYWw8RGVzdGluYXRpb25D
b2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKICAgICBp
ZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFJl
Y29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1CiAgICAgYXBwZW5kPENsaXBUb0ltYWdl
QnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJl
Y3QpOwogfQogCi12b2lkIFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lk
KEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK3ZvaWQgUmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJiBkcmF3aW5nRnVuY3Rpb24pCiB7CiAgICAgLy8gVGhlIGluaXRpYWwgQ1RNIG1hdGNoZXMg
SW1hZ2VCdWZmZXIncyBpbml0aWFsIENUTS4KICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
ID0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHJldmlzaW9uIDI3
MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlk
ZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0lt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAg
IGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3Zl
cnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiAyNzI0
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBib29sIEZFRGlz
cGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZSkKK3Zv
aWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlKQogewogICAgIC8vIFNwZWM6IFRoZSAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJz
JyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgdG8gdGhlICdpbjInIHNvdXJjZSBpbWFnZQogICAgIC8v
IGFuZCBkb2VzIG5vdCBhcHBseSB0byB0aGUgJ2luJyBzb3VyY2UgaW1hZ2UuIFRoZSAnaW4nIHNv
dXJjZSBpbWFnZSBtdXN0IHJlbWFpbiBpbiBpdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
LmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9
CiAgICAgYm9vbCBzZXRTY2FsZShmbG9hdCk7CiAKLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3Bh
Y2UoQ29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRD
b2xvclNwYWNlKEZpbHRlckVmZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRmxvb2QuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDgg
QEAgcHVibGljOgogI2lmICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2VzIG5vdCBwZXJmb3Jt
IGNvbG9yIGludGVycG9sYXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1bHQgaXMgYWx3YXlz
IGluIHRoZSBjdXJyZW50CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVzcyBvZiB0aGUgdmFs
dWUgb2YgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQgc2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0
Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsgfQotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JT
cGFjZShDb2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JT
cGFjZShDb2xvclNwYWNlOjpTUkdCKTsgfQorICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KKyAgICB2b2lkIHNl
dFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRl
ckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ip
OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIGJvb2wgRkVMaWdodGlu
Zzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXAKICAgICBkYXRhLndpZHRoRGVjcmVhc2VkQnlPbmUg
PSB3aWR0aCAtIDE7CiAgICAgZGF0YS5oZWlnaHREZWNyZWFzZWRCeU9uZSA9IGhlaWdodCAtIDE7
CiAgICAgCi0gICAgaWYgKG9wZXJhdGluZ0NvbG9yU3BhY2UoKSA9PSBDb2xvclNwYWNlOjpMaW5l
YXJSR0IpIHsKKyAgICBpZiAob3BlcmF0aW5nQ29sb3JTcGFjZSgpID09IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6TGluZWFyU1JHQikgewogICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IG1fbGln
aHRpbmdDb2xvci50b0NvbG9yVHlwZUxvc3N5PExpbmVhclNSR0JBPGZsb2F0Pj4oKTsKICAgICAg
ICAgcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEuY29sb3JWZWN0b3IgPSBGbG9hdFBv
aW50M0QociwgZywgYik7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHJldmlzaW9uIDI3MjQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29s
dXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAg
ICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgQ29sb3JTcGFjZTo6U1JHQiwgZmlsdGVyKCku
cmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghdGlsZUlt
YWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmUKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZl
clJlc3VsdC5nZXQoKTsKIH0KIAotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZl
Y3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxDb2xv
clNwYWNlPiBjb2xvclNwYWNlKQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZl
Y3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXpl
KHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGlu
ZyhzY2FsZWRTaXplKSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBGaWx0ZXJFZmZlY3Q6OgogICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKLVJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0
IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCitSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25z
dCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3Bh
Y2UpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQo
IUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CkBAIC00MzMsNyAr
NDMzLDcgQEAgc3RhdGljIHZvaWQgY29weVVucHJlbXVsdGlwbHlpbmdBbHBoYShjbwogI2VuZGlm
CiB9CiAKLVJlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlRGF0YVRv
Q29sb3JTcGFjZShDb2xvclNwYWNlIHRhcmdldENvbG9yU3BhY2UsIEltYWdlRGF0YSYgaW5wdXRE
YXRhLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCkKK1JlZlB0cjxJbWFnZURh
dGE+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlRGF0YVRvQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VEYXRhJiBpbnB1dERhdGEsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0KQogewogICAgIEludFJlY3QgZGVzdGluYXRp
b25SZWN0KEludFBvaW50KCksIGlucHV0RGF0YS5zaXplKCkpOwogICAgIGRlc3RpbmF0aW9uUmVj
dC5zY2FsZSgxIC8gbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CkBAIC00NDYsNyArNDQ2LDcgQEAg
UmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SQogICAgIHJldHVybiBjb252
ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JTcGFjZSwgKmJ1ZmZlciwgZGVz
dGluYXRpb25SZWN0LCBvdXRwdXRGb3JtYXQpOwogfQogCi1SZWZQdHI8SW1hZ2VEYXRhPiBGaWx0
ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShDb2xvclNwYWNlIHRhcmdl
dENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQpCitSZWZQdHI8SW1hZ2VEYXRh
PiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVmZmVyLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCkK
IHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUo
cmVjdC5zaXplKCkpOwogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRoIHRoZSBjb3Jy
ZWN0IGNvbG9yIHNwYWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBzcGFjZSBjb252
ZXJzaW9uCkBAIC00NTgsNyArNDU4LDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZmZWN0
Ojpjb252ZXJ0SQogICAgIHJldHVybiBjb252ZXJ0ZWRCdWZmZXItPmdldEltYWdlRGF0YShvdXRw
dXRGb3JtYXQsIHJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZElt
YWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0
ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9u
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZl
cnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBtX2ltYWdlQnVmZmVyUmVzdWx0LCBhbmQgc2F2ZSB0byBk
ZXN0aW5hdGlvbgogICAgIGF1dG8gY29udmVydGVkSW1hZ2VEYXRhID0gY29udmVydEltYWdlQnVm
ZmVyVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsICptX2ltYWdlQnVmZmVyUmVzdWx0LCB7IEludFBv
aW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0sIG91dHB1dEZvcm1hdCk7CkBAIC00
NjcsNyArNDY3LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1Zgog
ICAgIGNvcHlJbWFnZUJ5dGVzKCpjb252ZXJ0ZWRJbWFnZURhdGEtPmRhdGEoKSwgZGVzdGluYXRp
b24sIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFn
ZURhdGFUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgSW1hZ2VE
YXRhJiBpbWFnZURhdGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJF
ZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFy
cmF5JiBkZXN0aW5hdGlvbiwgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEgc3RvcmVk
IGluIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQvbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQs
CiAgICAgLy8gd2hpY2hldmVyIGlzbid0IG51bGwsIGFuZCBzYXZlIHRvIGRlc3RpbmF0aW9uCkBA
IC00NzcsNyArNDc3LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZURh
dAogICAgIGNvcHlJbWFnZUJ5dGVzKCpjb252ZXJ0ZWRJbWFnZURhdGEtPmRhdGEoKSwgZGVzdGlu
YXRpb24sIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxp
ZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBPcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQordm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9y
U3BhY2UpCiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKICAgICAKQEAgLTUxMCw3ICs1MTAs
NyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsCiAgICAgY29weUlt
YWdlQnl0ZXMoKm1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgZGVzdGluYXRpb24s
IHJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQo
VWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRp
b25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVt
dWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50
UmVjdCYgcmVjdCwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQog
ewogICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CiAKQEAgLTU5MCw3ICs1OTAsNyBAQCBJbWFnZURh
dGEqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwCiAgICAgcmV0dXJuIG1fcHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCi1ib29sIEZpbHRlckVmZmVjdDo6cmVxdWlyZXNJ
bWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbihPcHRpb25hbDxDb2xvclNwYWNlPiBkc3RDb2xv
clNwYWNlKQorYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVzSW1hZ2VEYXRhQ29sb3JTcGFjZUNv
bnZlcnNpb24oT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkc3RDb2xvclNwYWNlKQog
ewogI2lmIFVTRShDRykKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgd2hldGhlciB3
ZSBuZWVkIHRoZSBzdGVwIG9mIGFuIGV4dHJhIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24KQEAgLTYw
NCw3ICs2MDQsNyBAQCBib29sIEZpbHRlckVmZmVjdDo6cmVxdWlyZXNJbWFnZURhdGFDb2xvCiAj
ZW5kaWYKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2Uo
Q29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKQordm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCiB7CiAj
aWYgVVNFKENHKQogICAgIC8vIENHIGhhbmRsZXMgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW50
ZXJuYWxseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsMTAgKzgyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzdWx0
c1JlY3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyUmVzdWx0KCk7Ci0g
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiB1bm11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50
UmVjdCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKLSAgICBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYsIE9w
dGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlVbm11bHRp
cGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
JiwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgY29weVBy
ZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bnRSZWN0JiwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAgIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gdW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBP
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYs
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAgIHZv
aWQgY29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24s
IGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RGOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFy
cmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29s
b3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRF
ZmZlY3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJFZmZlY3QqIGlu
cHV0RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKICAgICB1bnNpZ25lZCBudW1iZXJPZkVmZmVjdElu
cHV0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzLnNpemUoKTsgfQpAQCAtMTYzLDEz
ICsxNjMsMTMgQEAgcHVibGljOgogICAgIGJvb2wgY2xpcHNUb0JvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpcHNUb0JvdW5kczsgfQogICAgIHZvaWQgc2V0Q2xpcHNUb0JvdW5kcyhib29sIHZh
bHVlKSB7IG1fY2xpcHNUb0JvdW5kcyA9IHZhbHVlOyB9CiAKLSAgICBDb2xvclNwYWNlIG9wZXJh
dGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9y
U3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQotICAgIENvbG9y
U3BhY2UgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFj
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2UgY29s
b3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CisgICAgRGVzdGlu
YXRpb25Db2xvclNwYWNlIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29w
ZXJhdGluZ0NvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9y
U3BhY2UgPSBjb2xvclNwYWNlOyB9CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIHJlc3VsdENv
bG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBp
bnQpIHsgaW4tPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UobV9vcGVyYXRpbmdDb2xvclNwYWNl
KTsgfQotICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlKTsKKyAg
ICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsK
ICAgICAKICAgICBzdGF0aWMgVmVjdG9yPGZsb2F0PiBub3JtYWxpemVkRmxvYXRzKGNvbnN0IFZl
Y3RvcjxmbG9hdD4mIHZhbHVlcykKICAgICB7CkBAIC0yMDEsMTEgKzIwMSwxMSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7CiAKICAgICB2
b2lkIGNvcHlJbWFnZUJ5dGVzKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4
Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZv
aWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJh
eSYsIENvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsK
LSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5JiwgSW1hZ2VEYXRhJiwgQ29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwg
Y29uc3QgSW50UmVjdCYpOwotICAgIGJvb2wgcmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29u
dmVyc2lvbihPcHRpb25hbDxDb2xvclNwYWNlPik7Ci0gICAgUmVmUHRyPEltYWdlRGF0YT4gY29u
dmVydEltYWdlRGF0YVRvQ29sb3JTcGFjZShDb2xvclNwYWNlLCBJbWFnZURhdGEmLCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uKTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBjb252ZXJ0SW1hZ2VCdWZm
ZXJUb0NvbG9yU3BhY2UoQ29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0Jiwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CisgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZm
ZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBjb3B5
Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIEltYWdl
RGF0YSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29u
c3QgSW50UmVjdCYpOworICAgIGJvb2wgcmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29udmVy
c2lvbihPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KTsKKyAgICBSZWZQdHI8SW1hZ2VE
YXRhPiBjb252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwg
SW1hZ2VEYXRhJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CisgICAgUmVmUHRyPEltYWdlRGF0
YT4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAg
ICAgCiAKICAgICBGaWx0ZXImIG1fZmlsdGVyOwpAQCAtMjQxLDggKzI0MSw4IEBAIHByaXZhdGU6
CiAgICAgLy8gU2hvdWxkIHRoZSBlZmZlY3QgY2xpcCB0byBpdHMgcHJpbWl0aXZlIHJlZ2lvbiwg
b3IgZXhwYW5kIHRvIHVzZSB0aGUgY29tYmluZWQgcmVnaW9uIG9mIGl0cyBpbnB1dHMuCiAgICAg
Ym9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07CiAKLSAgICBDb2xvclNwYWNlIG1fb3BlcmF0
aW5nQ29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OkxpbmVhclJHQiB9OwotICAgIENvbG9yU3BhY2Ug
bV9yZXN1bHRDb2xvclNwYWNlIHsgQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0IgfTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNw
YWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CiAgICAgCiAgICAgY29uc3QgVHlw
ZSBtX2ZpbHRlckVmZmVjdENsYXNzVHlwZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2
aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0
ZToKICAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVyKQogICAgICAgICA6IEZpbHRlckVm
ZmVjdChmaWx0ZXIsIFR5cGU6OlNvdXJjZUdyYXBoaWMpCiAgICAgewotICAgICAgICBzZXRPcGVy
YXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICBzZXRPcGVyYXRpbmdD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CiAgICAgfQogCiAgICAgY29u
c3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VHcmFwaGlj
IjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgwLDcgKzEwODAsNyBAQCB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmFwcGVuZChzdGQ6CiAgICAgbV9jb21tYW5kTGlzdC5hcHBlbmQoV1RG
TW92ZShjb21tYW5kKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCiB7CiAgICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYsIFdlYkNvcmU6OldpbmRS
dWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6
Q29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFp
bnRGcmFtZUZvck1lZGlhKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjAsNyArNDIwLDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRDo6cgogICAgIHJldHVybiBEaXJlY3QyRDo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMo
bV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3Bh
Y2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
JikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xp
cFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNv
bnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
RGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQpAQCAtODcsMTAgKzg3LDEw
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2UKIAogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3Jl
YXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIpOworICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4m
JiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29u
dGV4dCwgUGxhdGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKK0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4mJiBjb250ZXh0LCBQbGF0Zm9ybUltYWdlUHRyJiYgYml0bWFwKQogICAgIDog
SW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChXVEZNb3ZlKHBsYXRm
b3JtQ29udGV4dCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3MjQ2MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzI2LDcgKzcyNiw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRo
VmkKIAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3QgaW1hZ2VCdWZm
ZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
LCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSkpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91
dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIENvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICog
RmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgY29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmCiAKICAgICAgICAgZWZmZWN0RWxl
bWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAgaWYgKGVm
ZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5j
b2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJS
R0IgPyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgOiBDb2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAg
ICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVy
KCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29s
b3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwogCiAgICAgICAgIGJ1aWxkZXIt
PmFkZChlZmZlY3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwogICAgICAgICByZWZlcmVuY2VF
ZmZlY3RzLmFwcGVuZCgqZWZmZWN0KTsKQEAgLTI5Myw3ICsyOTMsNyBAQCBib29sIENTU0ZpbHRl
cjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuCiAgICAgICAgICAgICAvLyBVbmxpa2UgU1ZHIEZp
bHRlcnMgYW5kIENTU0ZpbHRlckltYWdlcywgZmlsdGVyIGZ1bmN0aW9ucyBvbiB0aGUgZmlsdGVy
CiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxkIG5vdCBjbGlwIHRv
IHRoZWlyIHByaW1pdGl2ZSBzdWJyZWdpb25zLgogICAgICAgICAgICAgZWZmZWN0LT5zZXRDbGlw
c1RvQm91bmRzKGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5jdGlvbik7Ci0g
ICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoQ29sb3JTcGFjZTo6U1JH
Qik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGZpbHRl
ck9wZXJhdGlvbi50eXBlKCkgIT0gRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0UpIHsKICAgICAg
ICAgICAgICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChXVEZNb3ZlKHByZXZpb3Vz
RWZmZWN0KSk7CkBAIC0zNzcsMTIgKzM3NywxMiBAQCB2b2lkIENTU0ZpbHRlcjo6YXBwbHkoKQog
ICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyKSB7CiAgICAgICAgIG1fZmlsdGVyUmVuZGVyZXItPmFw
cGx5RWZmZWN0cyhlZmZlY3QpOwogICAgICAgICBpZiAobV9maWx0ZXJSZW5kZXJlci0+aGFzUmVz
dWx0KCkpIHsKLSAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENv
bG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KICAgICBlZmZlY3QuYXBwbHkoKTsKLSAgICBlZmZlY3QudHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsKKyAgICBlZmZlY3QudHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwogfQogCiBM
YXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChj
b25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJl
Y3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3OCw3ICs4Nzgs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgICAgIG1h
c2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwogCiAgICAg
ICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgQ29sb3JTcGFjZTo6
U1JHQiwgY29udGV4dCk7CisgICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFz
a1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjQzLDcgKzMyNDMsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRl
cm5Gb3JEZXNjcmlwCiB7CiAgICAgY29uc3QgRmxvYXRTaXplIHRpbGVTaXplIHsgMzIsIDE4IH07
CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIodGlsZVNpemUsIENvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNp
emUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEzNTgsNyArMTM1OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NC
YXIoY28KICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRvd25jYXN0PFJlbmRlclBy
b2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVu
ZGVyT2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBib29sIGlzSW5k
ZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCkgPCAwOwotICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJl
Y3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZTo6U1JHQiwgcGFpbnRJbmZv
LmNvbnRleHQoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGlm
ICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsx
NDYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwCiAgICAgQWZm
aW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2Fs
Y3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIp
OwogICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJvdW5kaW5n
Qm94LCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRo
aXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0
aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBDb2xv
clNwYWNlOjpTUkdCLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7Cisg
ICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsK
ICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5k
ZXIKICAgICAgICAgZWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsK
ICAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRleHQ6OnJl
c29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxl
bWVudCwgZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94
KSk7CiAgICAgICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBlZmZlY3Qt
PnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0
eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6
TGluZWFyUkdCID8gQ29sb3JTcGFjZTo6TGluZWFyUkdCIDogQ29sb3JTcGFjZTo6U1JHQik7Cisg
ICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJl
cigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENv
bG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgYnVpbGRlci0+
YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURk1vdmUoZWZmZWN0KSk7CiAgICAgfQogICAgIHJldHVy
biBidWlsZGVyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OmFwcGx5UmVzb3UKICAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVyRGF0
YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVk
KCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQ7Ci0gICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0aXZlVHJhbnNm
b3JtLCBDb2xvclNwYWNlOjpMaW5lYXJSR0IsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQpOworICAg
IGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKICAg
ICBpZiAoIXNvdXJjZUdyYXBoaWMpIHsKICAgICAgICAgQVNTRVJUKCFtX3JlbmRlcmVyRmlsdGVy
RGF0YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICAgICAgZmlsdGVyRGF0YS0+c2F2ZWRD
b250ZXh0ID0gY29udGV4dDsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmls
dGVyRGF0YTo6QXBwbHlpbmc7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOwogICAg
ICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCk7Ci0gICAg
ICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6
OlNSR0IpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwogICAgICAgICB9CiAgICAgICAgIGZpbHRl
ckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnQKICAgICBBZmZpbmVU
cmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxh
dGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbSgqdGV4dFJvb3RCbG9j
ayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4dFJvb3RCbG9jay0+cmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNm
b3JtLCBDb2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1
dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVw
YWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXI6OmFwcGx5UmVzb3UKIAogICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlICYm
ICFyZXBhaW50UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUm
IHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwotICAgICAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRp
b246OkxpbmVhclJHQiA/IENvbG9yU3BhY2U6OkxpbmVhclJHQiA6IENvbG9yU3BhY2U6OlNSR0I7
CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigp
ID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwogICAgICAgICAvLyBG
SVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBh
bHBoYSBtYXNraW5nLCB0aG91Z2guCiAgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0
ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgY29u
dGV4dCk7CiAgICAgICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlKQpAQCAtODYsNyArODYs
NyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50
b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IFJlbmRlck9iamVjdCogb2JqZWN0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJh
d0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1hc2tlckRhdGEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICBHcmFw
aGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNv
bnRleHQoKTsKIApAQCAtMTEzLDcgKzExMyw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OmRyYXdDb250ZW4KICAgICB9CiAKICNpZiAhVVNFKENHKQotICAgIG1hc2tlckRhdGEtPm1h
c2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCLCBjb2xvclNwYWNl
KTsKKyAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb2xvclNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKGNvbG9yU3BhY2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCShyZXZpc2lvbiAyNzI0
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIiOyB9CiAKLSAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShN
YXNrZXJEYXRhKiwgQ29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBkcmF3Q29u
dGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVu
ZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxhdGVNYXNrQ29udGVudFJlcGFpbnRSZWN0KCk7
CiAKICAgICBGbG9hdFJlY3QgbV9tYXNrQ29udGVudEJvdW5kYXJpZXM7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3
ICsyNTUsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxlCiBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdl
KGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1w
ZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNv
bnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91bmRhcmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2Ug
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgQ29sb3JTcGFjZTo6U1JHQiwg
cmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1
dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCByZW5kZXJpbmdN
b2RlKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIz
Niw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWwKICAgICByZXR1
cm4gYWJzb2x1dGVUcmFuc2Zvcm07CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVm
ZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9uJ3QgY3Jl
YXRlIGVtcHR5IEltYWdlQnVmZmVycy4KQEAgLTI2NCw3ICsyNjQsNyBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVk
UmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJ
bnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7CiAgICAgRmxvYXRTaXplIHVuY2xhbXBlZFNpemUg
PSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0LnNpemUoKSk7CkBAIC0zNTAsNyArMzUwLDcgQEAg
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdQogCiAgICAgLy8gQ3JlYXRl
IGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAo
IWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIENv
bG9yU3BhY2U6OlNSR0IsIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOworICAgICAgICBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6
ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlVG9SZW5k
ZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVkc0dyYXBoaWNzQ29u
dGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9vbCBpc1JlbmRlcmlu
Z1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1By
ZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
YWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgY2xhbXBlZFJlY3QsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7
CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4
dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMg
dm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc4
LDcgKzI3OCw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEcKICAg
ICBGbG9hdFJlY3QgaW1hZ2VCdWZmZXJTaXplID0gem9vbWVkQ29udGFpbmVyUmVjdDsKICAgICBp
bWFnZUJ1ZmZlclNpemUuc2NhbGUoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCBpbWFnZUJ1ZmZl
clNjYWxlLmhlaWdodCgpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkp
LCAxLCBDb2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZl
clNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsK
ICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAg
cmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5l
clNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXpl
LCB6b29tZWRDb250YWluZXJSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsOCArOTMsOCBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAgICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gQ29sb3JTcGFjZTo6U1JHQgot
ICAgIHNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZTo6U1JHQik7CisgICAgLy8gRkVJbWFn
ZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCCisgICAg
c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwogCiAgICAg
SW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAg
ICBpZiAoIXJlc3VsdEltYWdlKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MykKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MjEtMDItMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIERpZmZl
cmVudGlhdGUgYmV0d2VlbiBjb2xvciBzcGFjZXMgdXNlZCB0byB0YWcgY29sb3JzIGFuZCBjb2xv
ciBzcGFjZXMgdXNlZCB0byB0YWcgZGVzdGluYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE1MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgQ29kZXIg
aW1wbGVtZW50YXRpb24gb2YgRW51bVRyYWl0cyBmb3IgY29sb3Igc3BhY2UgdHlwZXMgaXMgbm93
CisgICAgICAgIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpj
cmVhdGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgIFVwZGF0ZSB0byB1c2UgRGVzdGluYXRpb25Db2xvclNw
YWNlIHJhdGhlciB0aGFuIENvbG9yU3BhY2UuCisKIDIwMjEtMDItMDUgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzIzMzcpOiBjcmFzaCB1
bmRlciBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzZXRJbmFjdGl2ZSgpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZQogICAgIHVzaW5nIEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGE7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBs
YXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3
ICsxMjcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpCiAgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVzaChmbHVz
aElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdNb2RlID09IFJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgJKHJldmlzaW9uIDI3
MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSXRlbTsK
IH0KIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwotZW51bSBjbGFzcyBDb2xv
clNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWlu
dDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiB9CiAKQEAgLTExMCw3ICsx
MTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
b3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4
ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdl
QXJndW1lbnRzJik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGdldERhdGFVUkxGb3JJbWFn
ZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgewot
ICAgIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIENyZWF0ZUltYWdlQnVmZmVyKFdl
YkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdHJ1Y3Qg
V2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHMpCiAgICAg
R2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwogICAgIEdldERhdGFV
UkxGb3JJbWFnZUJ1ZmZlcihTdHJpbmcgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIC0+IChTdHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJvbm91cwpJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNzI0NjIp
CisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjU3LDcgKzI1Nyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmUK
ICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAg
J1N0cmluZycsCi0gICAgICAgICdXZWJDb3JlOjpDb2xvclNwYWNlJywKKyAgICAgICAgJ1dlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZScsCiAgICAgICAgICdXZWJDb3JlOjpEaWN0YXRpb25D
b250ZXh0JywKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIn
LAogICAgICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyJywK
QEAgLTY1NCw2ICs2NTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAg
J1BBTDo6U2Vzc2lvbklEJzogWyc8cGFsL1Nlc3Npb25JRC5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6QXV0b3BsYXlFdmVudEZsYWdzJzogWyc8V2ViQ29yZS9BdXRvcGxheUV2ZW50Lmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlJzogWyc8V2ViQ29yZS9ET01Q
YXN0ZUFjY2Vzcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
JzogWyc8V2ViQ29yZS9Db2xvclNwYWNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVu
dE9yV29ya2VySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncyc6IFsnPFdlYkNvcmUvRHJh
Z0RhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6IFsnPFdl
YkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODg5LDIw
ICs4ODksMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogCiBu
YW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpD
b2xvclNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICBXZWJDb3Jl
OjpDb2xvclNwYWNlLAotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNSR0IsCi0gICAgV2ViQ29y
ZTo6Q29sb3JTcGFjZTo6TGluZWFyUkdCLAotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OkRpc3Bs
YXlQMwotICAgID47Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OlJlbmRlcmluZ01vZGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUsCi0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwKLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZAorICAgICAg
ICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLAorICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLAorICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVy
YXRlZAogICAgID47CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCShy
ZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4MywxMSArMTgz
LDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGkKICAgICBhdXRv
IHJlbmRlcmluZ01vZGUgPSBtX2FjY2VsZXJhdGVzRHJhd2luZyA/IFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkIDogV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZDsKIAogICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSkKLSAgICAgICAgbV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoYmFja2luZ1N0b3JlU2l6ZSgp
LCByZW5kZXJpbmdNb2RlLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1h
dCgpKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRl
eHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZm
ZXIoYmFja2luZ1N0b3JlU2l6ZSgpLCByZW5kZXJpbmdNb2RlLCAxLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOwogICAgIGVsc2UgaWYgKHJlbmRl
cmluZ01vZGUgPT0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAg
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKGJh
Y2tpbmdTdG9yZVNpemUoKSwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3Jt
YXQoKSwgbnVsbHB0cik7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJD
b3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRCYWNrZW5kPjo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUoKSwgMSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICBl
bHNlCi0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0
ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+Ojpj
cmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBw
aXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVy
U2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIDEsIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiB9
CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBw
dWJsaWMgV2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlv
blNjYWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2Vi
Q29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKICAgICAgICAgaWYgKEJhY2tl
bmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OndhaXRGbwogICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5k
RGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpEaWRGbHVzaD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRG
b3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSXRlbTsKIGNsYXNzIEZsb2F0U2l6
ZTsKIGNsYXNzIEltYWdlRGF0YTsKIGVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6
IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2Rl
IDogYm9vbDsKIH0KIApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFN0cmluZyBnZXREYXRhVVJMRm9ySW1h
Z2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGdldERhdGFGb3JJbWFnZUJ1ZmZlcihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwOSw3ICs5MDks
NyBAQCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBXZWJDaHJvbWVDCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRl
cmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdG
b3IocHVycG9zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNyArMjQy
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9y
PiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQp
IGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhl
bEZvcm1hdCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQp
IGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGhv
c3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="437766"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419519</attachid>
            <date>2021-02-06 19:23:27 -0800</date>
            <delta_ts>2021-02-07 11:27:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221520-20210206192326.patch</filename>
            <type>text/plain</type>
            <size>105610</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1NiBAQAorMjAyMS0wMi0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRGlmZmVyZW50aWF0ZSBiZXR3ZWVu
IGNvbG9yIHNwYWNlcyB1c2VkIHRvIHRhZyBjb2xvcnMgYW5kIGNvbG9yIHNwYWNlcyB1c2VkIHRv
IHRhZyBkZXN0aW5hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTUyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlcGxhY2UgdXNlIG9mIHRoZSBDb2xvclNwYWNlIGVudW0gaW4gZGVzdGluYXRp
b24gY29udGV4dHMgKEltYWdlQnVmZmVyLCBGaWx0ZXJzLCBldGMuKQorICAgICAgICB3aXRoIGEg
bmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBlbnVtIHRoYXQgaXMganVzdCB0aGUgbGltaXRlZCBz
ZXQgb2YgY29sb3Igc3BhY2VzCisgICAgICAgIHN1cHBvcnRlZCBpbiB0aGF0IGNvbnRleHQsIGp1
c3QgU1JHQiBhbmQgTGluZWFyU1JHQi4gV2UgbWF5IG5lZWQgdG8gZXhwYW5kIHRoaXMgdG8KKyAg
ICAgICAgb3RoZXIgc3VwcG9ydGVkIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlcyBpbiB0aGUgZnV0
dXJlLCBidXQgY3VycmVudGx5IG9ubHkgdGhvc2UgdHdvCisgICAgICAgIGFyZSBhY3R1YWxseSB1
c2VkLCBhbmQgY29sb3Igc3BhY2UgaW5mb3JtYXRpb24gZm9yIGhpZ2hlciBnYW11dCBzcGFjZXMg
bGlrZSBEaXNwbGF5UDMKKyAgICAgICAgYXJlIGNvbW11bmljYXRlZCBkaWZmZXJlbnRseS4KKwor
ICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gbW9yZSBjbGVhcmx5IHNlZSB0aGVzZSB0d28g
Y29uY2VwdHMgYXMgZGlmZmVyZW50IGFuZCBlbnN1cmUgd2UKKyAgICAgICAgd2Ugc3VwcG9ydCBh
bGwgY2FzZXMgZm9yIGVhY2gsIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdG8gaWdub3JlIHNvbWUg
Y29sb3Igc3BhY2VzIGluCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0cy4KKworICAg
ICAgICBXaGlsZSBjaGFuZ2luZyBhIGJ1bmNoIG9mIG5hbWVzLCBhbHNvIHRha2UgdGhlIG9wcGVy
dHVuaXR5IHRvIHJlbmFtZSBDb2xvclNwYWNlOjpMaW5lYXJSR0IKKyAgICAgICAgdG8gQ29sb3JT
cGFjZTo6TGluZWFyU1JHQiB0byBtYXRjaCBDb2xvclNwYWNlOjpTUkdCIChhbHNvIGRvbmUgZm9y
IHRoZSBuZXcgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQikuCisK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSBjb25zdCk6CisgICAgICAgICogaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZm
ZXJGb3JQYWludGluZyBjb25zdCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVl
bkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNlcmlhbGl6YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXphdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsV2l0aENvbG9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAg
IChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OkNsaXBUb0RyYXdpbmdD
b21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29s
b3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNl
bWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
VGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpj
b252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rl
c3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNJ
bWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6Om9wZXJhdGluZ0NvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpzZXRPcGVyYXRpbmdDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6cmVzdWx0Q29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
R3JhcGhpYzo6U291cmNlR3JhcGhpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6
OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0
ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxk
UHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNr
QW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3UGF0
dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorCiAyMDIxLTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSUZDXSBDb250aW51YXRpb24gcHJlIGFuZCBwb3N0IGJsb2NrIGlubGluZSBi
b3hlcyBzaG91bGQgbm90IGhhdmUgYm90aCB0aGUgc3RhcnQgYW5kIGVuZCBkZWNvcmF0aW9ucyBv
ZiB0aGUgb3JpZ2luYWwgaW5saW5lIGJveApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBA
IEltYWdlKiBDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSAKICAgICBpZiAoIXdpZHRo
KCkgfHwgIWhlaWdodCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fY29waWVk
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0
cik7CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMiw3ICs5MzIs
NyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAgICAgYXV0byBy
ZW5kZXJpbmdNb2RlID0gc2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6
QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogICAgIC8vIEZJWE1F
OiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMuCiAg
ICAgYXV0byB1c2VEaXNwbGF5TGlzdCA9IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZU9y
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpID8gU2hv
dWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKLSAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KSk7CisgICAgc2V0SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIHVzZURpc3BsYXlM
aXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KSk7CiAKICAgICBpZiAoYnVmZmVy
KCkgJiYgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkpCiAgICAgICAgIGJ1ZmZlcigpLT5kcmF3
aW5nQ29udGV4dCgpLT5zZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShtX3RyYWNrc0Rpc3BsYXlM
aXN0UmVwbGF5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6Y3IKIHsKICAgICBhdXRvKiBob3N0V2luZG93ID0gZG9j
dW1lbnQoKS52aWV3KCkgJiYgZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKSA/IGRvY3VtZW50KCku
dmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CiAgICAgYXV0byBzaG91bGRV
c2VEaXNwbGF5TGlzdCA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdF
bmFibGVkKCkgPyBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzIDogU2hvdWxkVXNlRGlzcGxheUxp
c3Q6Ok5vOwotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01v
ZGUsIHNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5n
LCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHNob3Vs
ZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpNZWRpYVBhaW50aW5nLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7
CiB9CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3
ICs4NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5y
b290KCkpIHsKICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+
cm9vdCgpLT5ob3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRl
cmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6
Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogICAg
ICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
Y3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiwxNCArNDMyLDE0IEBAIHZvaWQgT2Zmc2Ny
ZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5i
dWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVy
LT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5s
b2dpY2FsU2l6ZSgpKSwgQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVy
KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICAg
ICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVy
UGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5n
Q29tbWl0QnVmZmVyICYmIHNob3VsZFB1c2hCdWZmZXIpCiAgICAgICAgIHB1c2hCdWZmZXJUb1Bs
YWNlaG9sZGVyKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MTcsNyArMTYxNyw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9z
aXRlT3BlcmF0b3I6OkNvcHkpIHsKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZh
c0Jhc2UoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RU
b0J1ZmZlcihzcmNSZWN0LCBDb2xvclNwYWNlOjpTUkdCLCAqYykpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGNvcHkgPSBidWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoc3JjUmVjdCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCAqYykpIHsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygp
OwogICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7
IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCku
Z2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9CkBAIC0yNTcyLDcgKzI1NzIsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAKLSAgICAgICAgaWYgKGMtPmNsaXBUb0RyYXdpbmdDb21tYW5kcyhtYXNrUmVjdCwg
Q29sb3JTcGFjZTo6U1JHQiwgV1RGTW92ZShwYWludE1hc2tJbWFnZSkpID09IEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVm
ZmVyKQorICAgICAgICBpZiAoYy0+Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKG1hc2tSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFdURk1vdmUocGFpbnRNYXNrSW1hZ2UpKSA9PSBHcmFw
aGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJ
bWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBkcmF3U3R5bGUuYXBw
bHlGaWxsQ29sb3IoKmMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MjgsNyArNTI4LDcgQEAgdm9pZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VN
bwogICAgIG1fY2xpZW50LnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVmUHRy
PEltYWdlQnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBv
c2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVu
dC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmlu
Z1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBj
b25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNyArMzI3LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAot
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIEVOQUJM
RShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW0JKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQogCisjaW1wb3J0ICJDb2xvclNwYWNl
Q0cuaCIKICNpbXBvcnQgIkNvbW1vblZNLmgiCiAjaW1wb3J0ICJKU0RPTVdpbmRvdy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCkBAIC0xMjAsOSArMTIxLDggQEAgcHJpdmF0ZToKIAog
c3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkKIHsKLSAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7CiAgICAgQ0dGbG9hdCBj
b21wb25lbnRzWzRdID0geyByLCBnLCBiLCBhIH07Ci0gICAgcmV0dXJuIENHQ29sb3JDcmVhdGUo
Y29sb3JTcGFjZSwgY29tcG9uZW50cyk7CisgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoc1JHQkNv
bG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cyk7CiB9CiAKIHN0cnVjdCBIaXN0b3JpY01lbW9yeUNh
dGVnb3J5SW5mbyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZp
c2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ3Vyc29yOwogY2xhc3MgSW1hZ2VC
dWZmZXI7CiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwotZW51bSBjbGFzcyBD
b2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDog
dWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFJl
bmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IElu
dFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNz
aWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9k
ZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAg
ICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0ID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJ
KHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICB9CiAKICAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgQ29sb3JTcGFj
ZTo6U1JHQiwgY3R4dCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclNlcmlhbGl6YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5jcHAJKHJldmlzaW9uIDI3MjQ2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU2VyaWFsaXphdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgQVNDSUlMaXRlcmFs
IHNlcmlhbGl6YXRpb24oQ29sb3JTCiAgICAgICAgIHJldHVybiAiZGlzcGxheS1wMyJfczsKICAg
ICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAgICAgcmV0dXJuICJsYWIiX3M7Ci0gICAgY2Fz
ZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJTUkdC
OgogICAgICAgICByZXR1cm4gImxpbmVhci1zcmdiIl9zOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6
UHJvUGhvdG9SR0I6CiAgICAgICAgIHJldHVybiAicHJvcGhvdG8tcmdiIl9zOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICBjYXNlIENvbG9yU3BhY2U6OkxhYjoKICAgICAg
ICAgdHMgPDwgIkwqYSpiIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpM
aW5lYXJSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJSR0IiOworICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQjoKKyAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbG9yU3BhY2U6OlByb1Bob3RvUkdCOgogICAgICAgICB0cyA8PCAiUHJv
UGhvdG9SR0IiOwpAQCAtNjEsNCArNjEsMTcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgQwogICAgIHJldHVybiB0czsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCit7Cisg
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0I6CisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHRzIDw8ICJz
UkdCIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkocmV2
aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb2xv
clR5cGVzLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0
cy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CkBAIC0zOCwyMSArMzks
MjcgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgQTk4UkdCLAogICAg
IERpc3BsYXlQMywKICAgICBMYWIsCi0gICAgTGluZWFyUkdCLAorICAgIExpbmVhclNSR0IsCiAg
ICAgUHJvUGhvdG9SR0IsCiAgICAgUmVjMjAyMCwKICAgICBTUkdCLAogICAgIFhZWl9ENTAsCiB9
OwogCitlbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3QgeworICAgIExp
bmVhclNSR0IsCisgICAgU1JHQiwKK307CisKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKK1dFQkNPUkVfRVhQ
T1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UpOwogCiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgQ29sb3JTcGFj
ZU1hcHBpbmc7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFjZU1hcHBpbmc8
QTk4UkdCPFQ+PiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlIHsgQ29sb3JTcGFj
ZTo6QTk4UkdCIH07IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFjZU1h
cHBpbmc8RGlzcGxheVAzPFQ+PiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlIHsg
Q29sb3JTcGFjZTo6RGlzcGxheVAzIH07IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29sb3JTcGFjZU1hcHBpbmc8TGFiPFQ+PiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNw
YWNlIHsgQ29sb3JTcGFjZTo6TGFiIH07IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29sb3JTcGFjZU1hcHBpbmc8TGluZWFyU1JHQkE8VD4+IHsgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGNvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgfTsgfTsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzxMaW5lYXJTUkdCQTxUPj4geyBzdGF0aWMg
Y29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OkxpbmVhclNSR0IgfTsgfTsK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzxQcm9QaG90b1JH
QjxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlBy
b1Bob3RvUkdCIH07IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29sb3JTcGFjZU1h
cHBpbmc8UmVjMjAyMDxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENv
bG9yU3BhY2U6OlJlYzIwMjAgfTsgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2xv
clNwYWNlTWFwcGluZzxTUkdCQTxUPj4geyBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFj
ZSB7IENvbG9yU3BhY2U6OlNSR0IgfTsgfTsKQEAgLTcwLDcgKzc3LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gYwogICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8RGlzcGxh
eVAzPFQ+Pihjb21wb25lbnRzKSk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpMYWI6CiAgICAgICAg
IHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VG
cm9tQ29tcG9uZW50czxMYWI8VD4+KGNvbXBvbmVudHMpKTsKLSAgICBjYXNlIENvbG9yU3BhY2U6
OkxpbmVhclJHQjoKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclNSR0I6CiAgICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwogICAgIGNhc2UgQ29sb3JT
cGFjZTo6UHJvUGhvdG9SR0I6CiAgICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndh
cmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxQcm9QaG90b1JHQjxUPj4o
Y29tcG9uZW50cykpOwpAQCAtODcsMyArOTQsMjkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgRnVuY3Rvcj4gYwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFj
ZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNvbG9yU3Bh
Y2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpD
b2xvclNwYWNlLAorICAgICAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpBOThSR0IsCisgICAgICAg
IFdlYkNvcmU6OkNvbG9yU3BhY2U6OkRpc3BsYXlQMywKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JT
cGFjZTo6TGFiLAorICAgICAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpMaW5lYXJTUkdCLAorICAg
ICAgICBXZWJDb3JlOjpDb2xvclNwYWNlOjpQcm9QaG90b1JHQiwKKyAgICAgICAgV2ViQ29yZTo6
Q29sb3JTcGFjZTo6UmVjMjAyMCwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwK
KyAgICAgICAgV2ViQ29yZTo6Q29sb3JTcGFjZTo6WFlaX0Q1MAorICAgID47Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwKKyAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCLAorICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IKKyAgICA+OworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tl
bmRUeXBlPgogY2xhc3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7
CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3Jl
dGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8g
cGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0byBiYWNr
ZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlw
ZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMgeyBzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgg
fTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTggfTsKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJh
bWV0ZXJzLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC05MSw3ICs5MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUg
bG9naWNhbFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVy
cy5sb2dpY2FsU2l6ZSk7IH0KICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNv
bG9yU3BhY2U7IH0KKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CiAgICAgUGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQ7IH0KICAgICBjb25zdCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIApA
QCAtMTk1LDcgKzE5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZv
aWQgdHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3Bh
Y2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCisgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2lu
Z0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUoMS4wIC8geFNjYWxlLCAxLjAg
LyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4U2NhbGUsIHlTY2FsZSk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFk
anVzdGVkU2l6ZSwgQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOworICAgIGF1dG8gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuOwogICAgIGRvQ3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkU2l6ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
cwogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAg
ICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRv
ckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3Nl
bnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0
b3IpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIENvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0
KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBkZXN0
Q29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgy
LDcgKzg4Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QKICAg
ICBjbGlwT3V0KHBhdGgpOwogfQogCi1HcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21t
YW5kc1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQorR3JhcGhpY3NDb250ZXh0
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJh
d2luZ0Z1bmN0aW9uKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2
aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNSw3ICs0MDUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYp
OwogCiAgICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgOiBib29sIHsg
U3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlciB9OwotICAgIENsaXBUb0RyYXdpbmdD
b21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7
CisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOwogICAgIAogICAgIEludFJlY3QgY2xpcEJv
dW5kcygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVj
dCBjbGlwQm91bmRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3Bh
Y2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0
IE1lZGlhUGxheWVyJikgY29uc3QgPSAwOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBj
b25zdCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBN
YXhDbGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1S
ZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNo
b3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJl
bmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlcjsKICAgICBpZiAoaG9zdFdpbmRvdykKQEAgLTU4LDcgKzU4LDcgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVy
OjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBAIC0xMDEs
NyArMTAxLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwogCiB9
CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
MTcsNyArMTE3LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwog
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNv
bnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogfQpA
QCAtMTczLDcgKzE3Myw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJT
aXoKICAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9y
KCkpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVy
Ojpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lv
biAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgc3RydWN0IEl0ZW1CdWZmZXJI
YW5kbGU7CiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJ
bWFnZUJ1ZmZlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4gewogcHVibGlj
OgogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVy
ZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBD
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0OjpCR1JBOCwgY29uc3Qg
SG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdCA9IFBp
eGVsRm9ybWF0OjpCR1JBOCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdCA9
IFBpeGVsRm9ybWF0OjpCR1JBOCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKICAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBh
dGlibGUgd2l0aCB0aGUgY29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3
aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgQ29sb3JTcGFj
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUg
dXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGljaCBpcyBjcmVhdGVkIGZvciBm
aWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBib29sIHNpemVOZWVkc0NsYW1w
aW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgPSAwOwogCkBAIC0xMDgsNyArMTA4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVz
b2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIg
Y29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZl
ciBpbnRvIHRoaXMgbmV3IG9uZS4KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9C
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
Jik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEs
IC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKQEAgLTEy
MSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRz
dENvbG9yU3BhY2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGRzdENvbG9yU3BhY2UpID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxv
cHQsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0KSBjb25zdCA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDcgKzgxLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKICAgICAgICAgRmxv
YXRTaXplIGxvZ2ljYWxTaXplOwogICAgICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGU7Ci0gICAg
ICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKKyAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2U7CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgIH07CiAK
QEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2so
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgeyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJh
bnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlLCBDb2xvclNwYWNlKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSkgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29s
dXRpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCA9IDA7
CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50U2l6ZSBsb2dpY2FsU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXplKTsgfQog
ICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0K
ICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVy
cy5waXhlbEZvcm1hdDsgfQogCiAgICAgSW50UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUoKSk7IH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNyBAQCBGbG9hdFJlY3Qg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpyb3VuCiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6
cm91bmRUb0RldmljZVBpeGVscyhtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYmKQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIElu
dFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNl
LCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1l
Rm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkocmV2
aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNyArODks
MTcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzawogICAgICAgICBD
YWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBp
bWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xv
clNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQordm9pZCBJbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29s
b3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQogewogICAgIGlm
IChzcmNDb2xvclNwYWNlID09IGRlc3RDb2xvclNwYWNlKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBvbmx5IHNSR0IgPC0+IGxpbmVhclJHQiBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQK
LSAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6TGluZWFyUkdCICYmIHNyY0Nv
bG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQikKLSAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNl
ICE9IENvbG9yU3BhY2U6OkxpbmVhclJHQiAmJiBkZXN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNl
OjpTUkdCKSkKKyAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKQorICAgICAgICB8fCAoZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBDb2xv
clNwYWNlOjpMaW5lYXJSR0IpIHsKKyAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFy
cmF5PHVpbnQ4X3QsIDI1Nj4gbGluZWFyUmdiTFVUID0gW10gewogICAgICAgICAgICAgc3RkOjph
cnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAg
ICB9KCk7CiAgICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JMVVQp
OwotICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZTo6U1JHQikgewor
ICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gZGV2
aWNlUmdiTFVUPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJy
YXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkocmV2aXNpb24gMjcyNDYyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBz
cmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3Bh
Y2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CiAKICAg
ICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0
b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkocmV2aXNpb24gMjcyNDYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VS
ZWYgY2FjaGVkQ0dDbwogICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwog
ICAgIGNhc2UgQ29sb3JTcGFjZTo6TGFiOgogICAgICAgICByZXR1cm4gbGFiQ29sb3JTcGFjZVJl
ZigpOwotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyUkdCOgorICAgIGNhc2UgQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQjoKICAgICAgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsK
ICAgICBjYXNlIENvbG9yU3BhY2U6OlByb1Bob3RvUkdCOgogICAgICAgICByZXR1cm4gcHJvUGhv
dG9SR0JDb2xvclNwYWNlUmVmKCk7CkBAIC02NSw0ICs2NSwxNiBAQCBzdGF0aWMgaW5saW5lIENH
Q29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvCiAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3Bh
Y2UpIHsKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKKyAgICAg
ICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJ
bWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtOwog
CiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogICAgIHsKICAgICAgICAgcmV0dXJuIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAkod29ya2luZyBjb3B5KQpAQCAtODY4LDcgKzg2OCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIENsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIERpc3BsYXlMaXN0JiYgZHJhd2luZ0NvbW1hbmRzKQorICAgIENsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgRGlzcGxheUxpc3QmJiBkcmF3aW5nQ29tbWFuZHMpCiAgICAg
ICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAgICAgLCBtX2NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSkKICAgICAgICAgLCBtX2RyYXdpbmdDb21tYW5kcyhXVEZNb3ZlKGRyYXdpbmdD
b21tYW5kcykpCkBAIC04OTEsNyArODkxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9
Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNl
OyB9CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2NvbG9yU3BhY2U7IH0KICAgICBjb25zdCBEaXNwbGF5TGlzdCYgZHJhd2luZ0NvbW1hbmRz
KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3aW5nQ29tbWFuZHM7IH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTkwMSw3ICs5MDEs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247Ci0g
ICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1f
Y29sb3JTcGFjZTsKICAgICBEaXNwbGF5TGlzdCBtX2RyYXdpbmdDb21tYW5kczsKIH07CiAKQEAg
LTkyMSw3ICs5MjEsNyBAQCBPcHRpb25hbDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+IENsaXBUb0Ry
CiAgICAgaWYgKCFkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgIE9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgT3B0aW9uYWw8RGVzdGlu
YXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsK
ICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzI0
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw3ICs0MzAsNyBAQCB2
b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1CiAgICAgYXBwZW5kPENsaXBU
b0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwg
ZGVzdFJlY3QpOwogfQogCi12b2lkIFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlv
bjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK3ZvaWQgUmVjb3Jk
ZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0Nv
bnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCiB7CiAgICAgLy8gVGhlIGluaXRpYWwgQ1RNIG1h
dGNoZXMgSW1hZ2VCdWZmZXIncyBpbml0aWFsIENUTS4KICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtID0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VT
Y2FsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBv
dmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNs
aXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lk
KEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50RnJhbWVGb3JN
ZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRl
OwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lv
biAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBib29s
IEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFj
ZSkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlKQogewogICAgIC8vIFNwZWM6IFRoZSAnY29sb3ItaW50ZXJwb2xhdGlvbi1m
aWx0ZXJzJyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgdG8gdGhlICdpbjInIHNvdXJjZSBpbWFnZQog
ICAgIC8vIGFuZCBkb2VzIG5vdCBhcHBseSB0byB0aGUgJ2luJyBzb3VyY2UgaW1hZ2UuIFRoZSAn
aW4nIHNvdXJjZSBpbWFnZSBtdXN0IHJlbWFpbiBpbiBpdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2Vt
ZW50TWFwLmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Nj
YWxlOyB9CiAgICAgYm9vbCBzZXRTY2FsZShmbG9hdCk7CiAKLSAgICB2b2lkIHNldFJlc3VsdENv
bG9yU3BhY2UoQ29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFuc2Zvcm1S
ZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Rmxvb2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRmxvb2QuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDgg
KzQwLDggQEAgcHVibGljOgogI2lmICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2VzIG5vdCBw
ZXJmb3JtIGNvbG9yIGludGVycG9sYXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1bHQgaXMg
YWx3YXlzIGluIHRoZSBjdXJyZW50CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVzcyBvZiB0
aGUgdmFsdWUgb2YgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQgc2V0T3Bl
cmF0aW5nQ29sb3JTcGFjZShDb2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0
UmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsgfQotICAgIHZvaWQgc2V0UmVzdWx0
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0
Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsgfQorICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0Ojpz
ZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KKyAgICB2
b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7
IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAkocmV2aXNp
b24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUxpZ2h0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA0LDcgKzQwNCw3IEBAIGJvb2wgRkVM
aWdodGluZzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXAKICAgICBkYXRhLndpZHRoRGVjcmVhc2Vk
QnlPbmUgPSB3aWR0aCAtIDE7CiAgICAgZGF0YS5oZWlnaHREZWNyZWFzZWRCeU9uZSA9IGhlaWdo
dCAtIDE7CiAgICAgCi0gICAgaWYgKG9wZXJhdGluZ0NvbG9yU3BhY2UoKSA9PSBDb2xvclNwYWNl
OjpMaW5lYXJSR0IpIHsKKyAgICBpZiAob3BlcmF0aW5nQ29sb3JTcGFjZSgpID09IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQikgewogICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9
IG1fbGlnaHRpbmdDb2xvci50b0NvbG9yVHlwZUxvc3N5PExpbmVhclNSR0JBPGZsb2F0Pj4oKTsK
ICAgICAgICAgcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEuY29sb3JWZWN0b3IgPSBG
bG9hdFBvaW50M0QociwgZywgYik7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHJldmlzaW9u
IDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEZFVGlsZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRl
clJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgp
KTsKICAgICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgQ29sb3JTcGFjZTo6U1JHQiwgZmls
dGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICgh
dGlsZUltYWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJl
dmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIElt
YWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmUKICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0
ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25h
bDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0
ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAgSW50U2l6ZSBzY2Fs
ZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhzY2FsZWRTaXplKSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OgogICAgIHJldHVybiBpbWFnZURhdGE7CiB9CiAKLVJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0
KGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCitS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3Vs
dChjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNv
bG9yU3BhY2UpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBB
U1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7CkBAIC00
MzMsNyArNDMzLDcgQEAgc3RhdGljIHZvaWQgY29weVVucHJlbXVsdGlwbHlpbmdBbHBoYShjbwog
I2VuZGlmCiB9CiAKLVJlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdl
RGF0YVRvQ29sb3JTcGFjZShDb2xvclNwYWNlIHRhcmdldENvbG9yU3BhY2UsIEltYWdlRGF0YSYg
aW5wdXREYXRhLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCkKK1JlZlB0cjxJ
bWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlRGF0YVRvQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VEYXRhJiBpbnB1dERhdGEs
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0KQogewogICAgIEludFJlY3QgZGVz
dGluYXRpb25SZWN0KEludFBvaW50KCksIGlucHV0RGF0YS5zaXplKCkpOwogICAgIGRlc3RpbmF0
aW9uUmVjdC5zY2FsZSgxIC8gbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CkBAIC00NDYsNyArNDQ2
LDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SQogICAgIHJldHVy
biBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JTcGFjZSwgKmJ1ZmZl
ciwgZGVzdGluYXRpb25SZWN0LCBvdXRwdXRGb3JtYXQpOwogfQogCi1SZWZQdHI8SW1hZ2VEYXRh
PiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShDb2xvclNwYWNl
IHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQpCitSZWZQdHI8SW1h
Z2VEYXRhPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVm
ZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBl
ZFNpemUocmVjdC5zaXplKCkpOwogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRoIHRo
ZSBjb3JyZWN0IGNvbG9yIHNwYWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBzcGFj
ZSBjb252ZXJzaW9uCkBAIC00NTgsNyArNDU4LDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVy
RWZmZWN0Ojpjb252ZXJ0SQogICAgIHJldHVybiBjb252ZXJ0ZWRCdWZmZXItPmdldEltYWdlRGF0
YShvdXRwdXRGb3JtYXQsIHJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZl
cnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlD
b252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3Rp
bmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8v
IENvbnZlcnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBtX2ltYWdlQnVmZmVyUmVzdWx0LCBhbmQgc2F2
ZSB0byBkZXN0aW5hdGlvbgogICAgIGF1dG8gY29udmVydGVkSW1hZ2VEYXRhID0gY29udmVydElt
YWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsICptX2ltYWdlQnVmZmVyUmVzdWx0LCB7
IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0sIG91dHB1dEZvcm1hdCk7
CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFn
ZUJ1ZgogICAgIGNvcHlJbWFnZUJ5dGVzKCpjb252ZXJ0ZWRJbWFnZURhdGEtPmRhdGEoKSwgZGVz
dGluYXRpb24sIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0
ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwg
SW1hZ2VEYXRhJiBpbWFnZURhdGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBG
aWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xh
bXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEg
c3RvcmVkIGluIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQvbV9wcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQsCiAgICAgLy8gd2hpY2hldmVyIGlzbid0IG51bGwsIGFuZCBzYXZlIHRvIGRlc3RpbmF0
aW9uCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJ
bWFnZURhdAogICAgIGNvcHlJbWFnZUJ5dGVzKCpjb252ZXJ0ZWRJbWFnZURhdGEtPmRhdGEoKSwg
ZGVzdGluYXRpb24sIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11
bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBPcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQordm9pZCBGaWx0ZXJF
ZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
IGNvbG9yU3BhY2UpCiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKICAgICAKQEAgLTUxMCw3
ICs1MTAsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsCiAgICAg
Y29weUltYWdlQnl0ZXMoKm1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgZGVzdGlu
YXRpb24sIHJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRS
ZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBPcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNv
cHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNw
YWNlKQogewogICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CiAKQEAgLTU5MCw3ICs1OTAsNyBAQCBJ
bWFnZURhdGEqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwCiAgICAgcmV0dXJuIG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogfQogCi1ib29sIEZpbHRlckVmZmVjdDo6cmVx
dWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbihPcHRpb25hbDxDb2xvclNwYWNlPiBk
c3RDb2xvclNwYWNlKQorYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVzSW1hZ2VEYXRhQ29sb3JT
cGFjZUNvbnZlcnNpb24oT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkc3RDb2xvclNw
YWNlKQogewogI2lmIFVTRShDRykKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgd2hl
dGhlciB3ZSBuZWVkIHRoZSBzdGVwIG9mIGFuIGV4dHJhIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
QEAgLTYwNCw3ICs2MDQsNyBAQCBib29sIEZpbHRlckVmZmVjdDo6cmVxdWlyZXNJbWFnZURhdGFD
b2xvCiAjZW5kaWYKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9y
U3BhY2UoQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKQordm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5z
Zm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2Up
CiB7CiAjaWYgVVNFKENHKQogICAgIC8vIENHIGhhbmRsZXMgY29sb3Igc3BhY2UgYWRqdXN0bWVu
dHMgaW50ZXJuYWxseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gMjcyNDYyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
UmVzdWx0c1JlY3Vyc2l2ZSgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyUmVzdWx0
KCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiB1bm11bHRpcGxpZWRSZXN1bHQoY29u
c3QgSW50UmVjdCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKLSAgICBS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVj
dCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlV
bm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bnRSZWN0JiwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQg
Y29weVByZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAg
IFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJl
Y3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKKyAg
ICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50
UmVjdCYsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOwor
ICAgIHZvaWQgY29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0g
V1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xh
bXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYg
aW5wdXRFZmZlY3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJFZmZl
Y3QqIGlucHV0RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKICAgICB1bnNpZ25lZCBudW1iZXJPZkVm
ZmVjdElucHV0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzLnNpemUoKTsgfQpAQCAt
MTYzLDEzICsxNjMsMTMgQEAgcHVibGljOgogICAgIGJvb2wgY2xpcHNUb0JvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpcHNUb0JvdW5kczsgfQogICAgIHZvaWQgc2V0Q2xpcHNUb0JvdW5kcyhi
b29sIHZhbHVlKSB7IG1fY2xpcHNUb0JvdW5kcyA9IHZhbHVlOyB9CiAKLSAgICBDb2xvclNwYWNl
IG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3Bh
Y2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShDb2xvclNwYWNl
IGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQotICAg
IENvbG9yU3BhY2UgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29s
b3JTcGFjZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CisgICAg
RGVzdGluYXRpb25Db2xvclNwYWNlIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX29wZXJhdGlu
Z0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIHJl
c3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqIGluLCBj
b25zdCBpbnQpIHsgaW4tPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UobV9vcGVyYXRpbmdDb2xv
clNwYWNlKTsgfQotICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNl
KTsKKyAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlKTsKICAgICAKICAgICBzdGF0aWMgVmVjdG9yPGZsb2F0PiBub3JtYWxpemVkRmxvYXRzKGNv
bnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKICAgICB7CkBAIC0yMDEsMTEgKzIwMSwxMSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7CiAK
ICAgICB2b2lkIGNvcHlJbWFnZUJ5dGVzKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2Us
IFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpIGNvbnN0Owot
ICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1w
ZWRBcnJheSYsIENvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKFVpbnQ4
Q2xhbXBlZEFycmF5JiwgSW1hZ2VEYXRhJiwgQ29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiwgY29uc3QgSW50UmVjdCYpOwotICAgIGJvb2wgcmVxdWlyZXNJbWFnZURhdGFDb2xvclNw
YWNlQ29udmVyc2lvbihPcHRpb25hbDxDb2xvclNwYWNlPik7Ci0gICAgUmVmUHRyPEltYWdlRGF0
YT4gY29udmVydEltYWdlRGF0YVRvQ29sb3JTcGFjZShDb2xvclNwYWNlLCBJbWFnZURhdGEmLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uKTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBjb252ZXJ0SW1h
Z2VCdWZmZXJUb0NvbG9yU3BhY2UoQ29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRS
ZWN0JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CisgICAgdm9pZCBjb3B5Q29udmVydGVkSW1h
Z2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9p
ZCBjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYs
IEltYWdlRGF0YSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biwgY29uc3QgSW50UmVjdCYpOworICAgIGJvb2wgcmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNl
Q29udmVyc2lvbihPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KTsKKyAgICBSZWZQdHI8
SW1hZ2VEYXRhPiBjb252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgSW1hZ2VEYXRhJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CisgICAgUmVmUHRyPElt
YWdlRGF0YT4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bik7CiAgICAgCiAKICAgICBGaWx0ZXImIG1fZmlsdGVyOwpAQCAtMjQxLDggKzI0MSw4IEBAIHBy
aXZhdGU6CiAgICAgLy8gU2hvdWxkIHRoZSBlZmZlY3QgY2xpcCB0byBpdHMgcHJpbWl0aXZlIHJl
Z2lvbiwgb3IgZXhwYW5kIHRvIHVzZSB0aGUgY29tYmluZWQgcmVnaW9uIG9mIGl0cyBpbnB1dHMu
CiAgICAgYm9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07CiAKLSAgICBDb2xvclNwYWNlIG1f
b3BlcmF0aW5nQ29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OkxpbmVhclJHQiB9OwotICAgIENvbG9y
U3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0IgfTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRD
b2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CiAgICAgCiAgICAgY29u
c3QgVHlwZSBtX2ZpbHRlckVmZmVjdENsYXNzVHlwZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
cHJpdmF0ZToKICAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVyKQogICAgICAgICA6IEZp
bHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OlNvdXJjZUdyYXBoaWMpCiAgICAgewotICAgICAgICBz
ZXRPcGVyYXRpbmdDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICBzZXRPcGVy
YXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CiAgICAgfQogCiAg
ICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VH
cmFwaGljIjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgwLDcgKzEwODAsNyBAQCB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmFwcGVuZChzdGQ6CiAgICAgbV9jb21tYW5kTGlzdC5hcHBl
bmQoV1RGTW92ZShjb21tYW5kKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCiB7CiAgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgJKHJldmlzaW9uIDI3MjQ2MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYsIFdlYkNvcmU6
OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBCb3VuZHMoKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
KT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlLCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wg
Y2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjAsNyArNDIwLDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6cgogICAgIHJldHVybiBEaXJlY3QyRDo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQ
aXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIENv
bG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit2b2lkIEdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0
IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVu
Y3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRp
b25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1l
ZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAkocmV2aXNp
b24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZCk7CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZD4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZShjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsK
ICAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVz
b2x1dGlvblNjYWxlKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQpAQCAtODcsMTAg
Kzg3LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2UKIAogc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIpOworICAgIHJldHVy
biBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgbnVsbHB0cik7CiB9CiAKLUltYWdlQnVmZmVyRGlyZWN0MkRCYWNr
ZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRD4mJiBwbGF0Zm9ybUNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+
JiYgY29udGV4dCwgUGxhdGZvcm1JbWFnZVB0ciYmIGJpdG1hcCkKK0ltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEPiYmIHBsYXRmb3JtQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0LCBQbGF0Zm9ybUltYWdlUHRyJiYgYml0bWFwKQog
ICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChXVEZNb3Zl
KHBsYXRmb3JtQ29udGV4dCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3MjQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzI2LDcgKzcyNiw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1Jp
bmdXaXRoVmkKIAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3QgaW1h
Z2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0bGlu
ZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSkpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3Vz
UmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IsIENvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkg
KyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNS
ZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgY29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmCiAKICAgICAgICAgZWZm
ZWN0RWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAg
aWYgKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3Bl
cmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5
bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpM
aW5lYXJSR0IgPyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgOiBDb2xvclNwYWNlOjpTUkdCKTsKKyAg
ICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJl
bmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkg
PT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwogCiAgICAgICAgIGJ1
aWxkZXItPmFkZChlZmZlY3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwogICAgICAgICByZWZl
cmVuY2VFZmZlY3RzLmFwcGVuZCgqZWZmZWN0KTsKQEAgLTI5Myw3ICsyOTMsNyBAQCBib29sIENT
U0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuCiAgICAgICAgICAgICAvLyBVbmxpa2Ug
U1ZHIEZpbHRlcnMgYW5kIENTU0ZpbHRlckltYWdlcywgZmlsdGVyIGZ1bmN0aW9ucyBvbiB0aGUg
ZmlsdGVyCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxkIG5vdCBj
bGlwIHRvIHRoZWlyIHByaW1pdGl2ZSBzdWJyZWdpb25zLgogICAgICAgICAgICAgZWZmZWN0LT5z
ZXRDbGlwc1RvQm91bmRzKGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5jdGlv
bik7Ci0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoQ29sb3JTcGFj
ZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KGZpbHRlck9wZXJhdGlvbi50eXBlKCkgIT0gRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0UpIHsK
ICAgICAgICAgICAgICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChXVEZNb3ZlKHBy
ZXZpb3VzRWZmZWN0KSk7CkBAIC0zNzcsMTIgKzM3NywxMiBAQCB2b2lkIENTU0ZpbHRlcjo6YXBw
bHkoKQogICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyKSB7CiAgICAgICAgIG1fZmlsdGVyUmVuZGVy
ZXItPmFwcGx5RWZmZWN0cyhlZmZlY3QpOwogICAgICAgICBpZiAobV9maWx0ZXJSZW5kZXJlci0+
aGFzUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNw
YWNlKENvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3Vs
dENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KICAgICBlZmZlY3QuYXBwbHkoKTsKLSAgICBlZmZlY3Qu
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsKKyAgICBlZmZlY3Qu
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwog
fQogCiBMYXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5
UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBk
aXJ0eVJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3OCw3
ICs4NzgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAg
ICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwog
CiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgQ29sb3JT
cGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQo
KSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI3MjQ2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjQzLDcgKzMyNDMsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+
IHBhdHRlcm5Gb3JEZXNjcmlwCiB7CiAgICAgY29uc3QgRmxvYXRTaXplIHRpbGVTaXplIHsgMzIs
IDE4IH07CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIodGlsZVNpemUsIENvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
dGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyNzI0NjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEzNTgsNyArMTM1OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJv
Z3Jlc3NCYXIoY28KICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRvd25jYXN0PFJl
bmRlclByb2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
ID0gcmVuZGVyT2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBib29s
IGlzSW5kZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCkgPCAwOwotICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZs
YXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZTo6U1JHQiwgcGFp
bnRJbmZvLmNvbnRleHQoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFj
dG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
Niw3ICsxNDYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwCiAg
ICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVu
ZGVyZXIpOwogICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJv
dW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2
OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNj
ZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBw
aW5nLCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3Jt
LCBDb2xvclNwYWNlOjpTUkdCLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4
dCk7CisgICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250
ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVy
PiBSZW5kZXIKICAgICAgICAgZWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0Lmdl
dCgpKTsKICAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRl
eHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PigmZWxlbWVudCwgZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCksIHRhcmdldEJvdW5k
aW5nQm94KSk7CiAgICAgICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBl
ZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgp
LnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xh
dGlvbjo6TGluZWFyUkdCID8gQ29sb3JTcGFjZTo6TGluZWFyUkdCIDogQ29sb3JTcGFjZTo6U1JH
Qik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5y
ZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygp
ID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKICAgICAgICAgYnVp
bGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURk1vdmUoZWZmZWN0KSk7CiAgICAgfQogICAg
IHJldHVybiBidWlsZGVyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3UKICAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmls
dGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNF
bmFibGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQ7Ci0gICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0aXZl
VHJhbnNmb3JtLCBDb2xvclNwYWNlOjpMaW5lYXJSR0IsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQp
OworICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0
KTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWMpIHsKICAgICAgICAgQVNTRVJUKCFtX3JlbmRlcmVy
RmlsdGVyRGF0YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICAgICAgZmlsdGVyRGF0YS0+
c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0YXRl
ID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgp
OwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCk7
Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9y
U3BhY2U6OlNSR0IpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwogICAgICAgICB9CiAgICAgICAg
IGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3
ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnQKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
YWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbSgqdGV4dFJv
b3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4dFJvb3RCbG9jay0+cmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gbWFza0ltYWdlID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRl
VHJhbnNmb3JtLCBDb2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOwor
ICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDI3
MjQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKIAogICAgIGlmICghbWFza2VyRGF0YS0+bWFza0lt
YWdlICYmICFyZXBhaW50UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgY29uc3QgU1ZHUmVuZGVy
U3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwotICAgICAgICBDb2xvclNwYWNl
IGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVy
cG9sYXRpb246OkxpbmVhclJHQiA/IENvbG9yU3BhY2U6OkxpbmVhclJHQiA6IENvbG9yU3BhY2U6
OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xh
dGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwogICAgICAg
ICAvLyBGSVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNv
bmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJy
ZWFrcyBhbHBoYSBtYXNraW5nLCB0aG91Z2guCiAgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFn
ZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBh
YnNvbHV0ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgY29udGV4dCk7CiAgICAgICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlKQpAQCAtODYs
NyArODYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250
ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1hc2tlckRhdGEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1h
Z2UtPmNvbnRleHQoKTsKIApAQCAtMTEzLDcgKzExMyw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXI6OmRyYXdDb250ZW4KICAgICB9CiAKICNpZiAhVVNFKENHKQotICAgIG1hc2tlckRh
dGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCLCBjb2xv
clNwYWNlKTsKKyAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb2xvclNwYWNlKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCShyZXZpc2lv
biAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIiOyB9CiAKLSAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJ
bWFnZShNYXNrZXJEYXRhKiwgQ29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBk
cmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxhdGVNYXNrQ29udGVudFJlcGFpbnRS
ZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgbV9tYXNrQ29udGVudEJvdW5kYXJpZXM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1NSw3ICsyNTUsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxl
CiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGls
ZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJp
ZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3Qm
IGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUpIGNvbnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1
ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91bmRhcmllcyk7Ci0gICAgYXV0byB0aWxl
SW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRp
bGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgQ29sb3JTcGFjZTo6
U1JHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVk
QWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCByZW5k
ZXJpbmdNb2RlKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2
LDcgKzIzNiw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWwKICAg
ICByZXR1cm4gYWJzb2x1dGVUcmFuc2Zvcm07CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUlt
YWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9u
J3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KQEAgLTI2NCw3ICsyNjQsNyBAQCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGltYWdlQnVmZmVy
OwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBj
bGFtcGVkUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJv
dW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7CiAgICAgRmxvYXRTaXplIHVuY2xhbXBl
ZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0LnNpemUoKSk7CkBAIC0zNTAsNyArMzUw
LDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdQogCiAgICAgLy8g
Q3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUo
KSksIENvbG9yU3BhY2U6OlNSR0IsIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOworICAgICAgICBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVk
SW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNzI0NjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJl
VG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVkc0dyYXBo
aWNzQ29udGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9vbCBpc1Jl
bmRlcmluZ1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRl
cmluZ1ByZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRp
b25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBz
dGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEcKICAgICBGbG9hdFJlY3QgaW1hZ2VCdWZmZXJTaXplID0gem9vbWVkQ29udGFpbmVyUmVjdDsK
ICAgICBpbWFnZUJ1ZmZlclNpemUuc2NhbGUoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCBpbWFn
ZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5z
aXplKCkpLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFn
ZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250
ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAg
ICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNv
bnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZm
ZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzI0NjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsOCBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gQ29sb3JTcGFjZTo6
U1JHQgotICAgIHNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZTo6U1JHQik7CisgICAgLy8g
RkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
CisgICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwog
CiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQo
KTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjQ2MykK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMjEtMDItMDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IERpZmZlcmVudGlhdGUgYmV0d2VlbiBjb2xvciBzcGFjZXMgdXNlZCB0byB0YWcgY29sb3JzIGFu
ZCBjb2xvciBzcGFjZXMgdXNlZCB0byB0YWcgZGVzdGluYXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE1MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
Q29kZXIgaW1wbGVtZW50YXRpb24gb2YgRW51bVRyYWl0cyBmb3IgY29sb3Igc3BhY2UgdHlwZXMg
aXMgbm93CisgICAgICAgIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIFVwZGF0ZSB0byB1c2UgRGVzdGluYXRpb25D
b2xvclNwYWNlIHJhdGhlciB0aGFuIENvbG9yU3BhY2UuCisKIDIwMjEtMDItMDUgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzIzMzcpOiBj
cmFzaCB1bmRlciBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzZXRJbmFjdGl2ZSgpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXIuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZQogICAgIHVzaW5n
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGE7CiAKIHB1YmxpYzoKLSAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNyw3ICsxMjcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERp
CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVz
aChmbHVzaElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdNb2Rl
ID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgJKHJldmlz
aW9uIDI3MjQ2MikKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3Mg
SXRlbTsKIH0KIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwotZW51bSBjbGFz
cyBDb2xvclNwYWNlIDogdWludDhfdDsKK2VudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiB9CiAKQEAgLTEx
MCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2
b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBN
ZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGdldERhdGFVUkxG
b3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjcy
NDYyKQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQgewotICAgIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgZW51bTp1aW50OF90IFdlYkNv
cmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIENyZWF0ZUltYWdlQnVm
ZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChz
dHJ1Y3QgV2ViS2l0OjpHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHMp
CiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAt
PiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwogICAgIEdl
dERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihTdHJpbmcgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2
ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChTdHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJvbm91cwpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAy
NzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmUKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAg
ICAgICAgJ1N0cmluZycsCi0gICAgICAgICdXZWJDb3JlOjpDb2xvclNwYWNlJywKKyAgICAgICAg
J1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZScsCiAgICAgICAgICdXZWJDb3JlOjpEaWN0
YXRpb25Db250ZXh0JywKICAgICAgICAgJ1dlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyJywKQEAgLTY1NCw2ICs2NTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAg
ICAgICAgJ1BBTDo6U2Vzc2lvbklEJzogWyc8cGFsL1Nlc3Npb25JRC5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzJzogWyc8V2ViQ29yZS9BdXRvcGxheUV2ZW50Lmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlJzogWyc8V2ViQ29y
ZS9ET01QYXN0ZUFjY2Vzcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlJzogWyc8V2ViQ29yZS9Db2xvclNwYWNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpE
b2N1bWVudE9yV29ya2VySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncyc6IFsnPFdlYkNv
cmUvRHJhZ0RhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6
IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODg5LDIwICs4ODksMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpDb2xvclNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICBX
ZWJDb3JlOjpDb2xvclNwYWNlLAotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNSR0IsCi0gICAg
V2ViQ29yZTo6Q29sb3JTcGFjZTo6TGluZWFyUkdCLAotICAgIFdlYkNvcmU6OkNvbG9yU3BhY2U6
OkRpc3BsYXlQMwotICAgID47Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OlJlbmRlcmluZ01vZGU+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAot
ICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsCi0gICAgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwKLSAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZAor
ICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLAorICAgICAgICBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLAorICAgICAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZAogICAgID47CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCShyZXZpc2lvbiAyNzI0NjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4Mywx
MSArMTgzLDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGkKICAg
ICBhdXRvIHJlbmRlcmluZ01vZGUgPSBtX2FjY2VsZXJhdGVzRHJhd2luZyA/IFdlYkNvcmU6OlJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZDsKIAogICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1v
dGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSkKLSAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoYmFja2luZ1N0b3Jl
U2l6ZSgpLCByZW5kZXJpbmdNb2RlLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBwaXhl
bEZvcm1hdCgpKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXIt
PmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1h
Z2VCdWZmZXIoYmFja2luZ1N0b3JlU2l6ZSgpLCByZW5kZXJpbmdNb2RlLCAxLCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOwogICAgIGVsc2UgaWYg
KHJlbmRlcmluZ01vZGUgPT0gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0g
ICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdl
QnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3Jl
YXRlKGJhY2tpbmdTdG9yZVNpemUoKSwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4
ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUoKSwgMSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tl
bmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpT
UkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdl
QnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIDEsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0
cik7CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkgOiBwdWJsaWMgV2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVz
b2x1dGlvblNjYWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKICAgICAgICAgaWYg
KEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGbwogICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0
Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpEaWRGbHVzaD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zLCBJUEM6
OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9
CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsK
ICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHJldmlzaW9uIDI3MjQ2MikKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSXRlbTsKIGNsYXNzIEZs
b2F0U2l6ZTsKIGNsYXNzIEltYWdlRGF0YTsKIGVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBj
bGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJp
bmdNb2RlIDogYm9vbDsKIH0KIApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFN0cmluZyBnZXREYXRhVVJM
Rm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGdldERhdGFGb3JJbWFnZUJ1
ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwOSw3
ICs5MDksNyBAQCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBXZWJDaHJvbWVDCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQp
IGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0
CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gMjcyNDYyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIs
NyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5SUQpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVy
cG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3Jl
OjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>