<?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>205944</bug_id>
          
          <creation_ts>2020-01-08 11:43:32 -0800</creation_ts>
          <short_desc>[LFC] Move Constraints struct out of UsedHorizontal(Vertical)values.</short_desc>
          <delta_ts>2020-01-09 10:20:46 -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>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1604189</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-08 11:43:32 -0800</bug_when>
    <thetext>This is in preparation for decoupling used values and constraints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604190</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-08 11:43:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/58415893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604195</commentid>
    <comment_count>2</comment_count>
      <attachid>387120</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-08 11:47:36 -0800</bug_when>
    <thetext>Created attachment 387120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604202</commentid>
    <comment_count>3</comment_count>
      <attachid>387121</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-08 11:56:19 -0800</bug_when>
    <thetext>Created attachment 387121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604695</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-09 10:20:46 -0800</bug_when>
    <thetext>Committed r254270: &lt;https://trac.webkit.org/changeset/254270&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387120</attachid>
            <date>2020-01-08 11:47:36 -0800</date>
            <delta_ts>2020-01-08 11:51:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205944-20200108114735.patch</filename>
            <type>text/plain</type>
            <size>56379</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZhZTczY2IyMGYzZTBi
NmI4M2MxZDk2OTgwNjFjMWJhYjFiMmE2Zi4uZWUxNTA2M2FlOTM2NjMwOTI4YTcwYzNiN2Y5Y2Y2
OTZmNTUzNjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTAxLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTW92ZSBDb25zdHJh
aW50cyBzdHJ1Y3Qgb3V0IG9mIFVzZWRIb3Jpem9udGFsKFZlcnRpY2FsKXZhbHVlcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTk0NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTg0MTU4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZGVjb3VwbGlu
ZyB1c2VkIHZhbHVlcyBhbmQgY29uc3RyYWludHMuCisgICAgICAgIENlcnRhaW4gImNvbXB1dGUg
Z2VvbWV0cnkiIGZ1bmN0aW9ucyBvbmx5IG5lZWQgdGhlIGNvbnN0cmFpbnRzIHdoaWxlIG90aGVy
cyBvbmx5IG5lZWQgdGhlIHVzZWQgdmFsdWVzLiAKKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdl
b21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVCb3JkZXJBbmRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dO
b25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdl
b21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFu
ZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRz
Rm9yT3V0T2ZGbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JJbkZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnZlcnRpY2FsQ29u
c3RyYWludHNGb3JJbkZsb3cpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRTdWJ0cmVlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VXNlZEhvcml6b250YWxWYWx1ZXM6OlVzZWRIb3Jpem9udGFs
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VXNlZFZlcnRpY2FsVmFsdWVzOjpV
c2VkVmVydGljYWxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkSG9yaXpv
bnRhbFZhbHVlczo6Q29uc3RyYWludHM6OkNvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50czo6Q29uc3Ry
YWludHMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpw
bGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1h
cmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJl
cGxhY2VkV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRz
Rm9yTGluZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb21wdXRlZFRleHRJbmRlbnQgY29uc3QpOgorICAgICAgICAqIGxheW91dC90
YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5zKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3Jt
YXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaDoKKwogMjAyMC0wMS0wOCAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbkZsb3dDb250ZW50IHNob3VsZCB0YWtlIFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29u
c3RyYWludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IDgzMjg0MTJmYTcwNWQ2ZTg5NTc1ZDM0M2M5MTViZmVhNDhiYmM0M2EuLjljODA2ZmEyY2E1
YzBlOTU1MGExZmU2YWQ1Mjg0M2IxMWIwNzQxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNjYsNyArNjYsNyBAQCBMYXlvdXRTdGF0ZSYgRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dFN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9mb3JtYXR0
aW5nU3RhdGUubGF5b3V0U3RhdGUoKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3Ry
YWludHMpCit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRh
bEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVy
dGljYWxDb25zdHJhaW50cykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpKTsKICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9IFVzZWRWZXJ0aWNhbFZh
bHVlcyB7IHZlcnRpY2FsQ29uc3RyYWludHMsIHsgfSB9OwpAQCAtNzYsNyArNzYsNyBAQCB2b2lk
IEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNv
bnN0IEJveCYgbGF5b3V0Qm94LAogICAgICAgICByZXR1cm4gZ2VvbWV0cnkoKS5vdXRPZkZsb3dI
b3Jpem9udGFsR2VvbWV0cnkobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZl
cnRpY2FsVmFsdWVzKTsKICAgICB9OwogCi0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9
IGhvcml6b250YWxDb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKICAgICBhdXRvIGhvcml6
b250YWxHZW9tZXRyeSA9IGNvbXB1dGUoeyB9KTsKICAgICBpZiAoYXV0byBtYXhXaWR0aCA9IGdl
b21ldHJ5KCkuY29tcHV0ZWRNYXhXaWR0aChsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KSkgewogICAgICAgICBhdXRvIG1heEhvcml6b250YWxHZW9tZXRyeSA9IGNvbXB1dGUobWF4V2lk
dGgpOwpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LAogICAgIGRpc3Bs
YXlCb3guc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKGhvcml6b250YWxHZW9tZXRyeS5jb250
ZW50V2lkdGhBbmRNYXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCi12b2lkIEZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91
dEJveCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiBob3Jpem9udGFs
Q29uc3RyYWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmIHZlcnRp
Y2FsQ29uc3RyYWludHMpCit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93
VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWlu
dHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSk7CiAgICAgYXV0byBjb21wdXRlID0gWyZdKGNvbnN0IGF1dG8mIHVz
ZWRIb3Jpem9udGFsVmFsdWVzLCBjb25zdCBhdXRvJiB1c2VkVmVydGljYWxWYWx1ZXMpIHsKQEAg
LTEwNSw3ICsxMDUsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93
VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgYwogICAgIH07CiAKICAgICBh
dXRvIHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBob3Jpem9u
dGFsQ29uc3RyYWludHMgfTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp2ZXJ0
aWNhbENvbnN0cmFpbnRzLmhlaWdodDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9
ICp2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7CiAgICAgYXV0byB2ZXJ0aWNhbEdl
b21ldHJ5ID0gY29tcHV0ZSh1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVz
IHsgdmVydGljYWxDb25zdHJhaW50cywgeyB9IH0pOwogICAgIGlmIChhdXRvIG1heEhlaWdodCA9
IGdlb21ldHJ5KCkuY29tcHV0ZWRNYXhIZWlnaHQobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tI
ZWlnaHQpKSB7CiAgICAgICAgIGF1dG8gbWF4VmVydGljYWxHZW9tZXRyeSA9IGNvbXB1dGUodXNl
ZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHZlcnRpY2FsQ29uc3RyYWlu
dHMsIG1heEhlaWdodCB9KTsKQEAgLTEyNywxNCArMTI3LDE0IEBAIHZvaWQgRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjCiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IG5vbkNvbGxhcHNlZFZl
cnRpY2FsTWFyZ2luLCB7IH0gfSk7CiB9CiAKLXZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpv
bnRhbFZhbHVlczo6Q29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50KQordm9pZCBGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnQpCiB7
CiAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3gobGF5
b3V0Qm94KTsKICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcihnZW9tZXRyeSgpLmNvbXB1dGVkQm9y
ZGVyKGxheW91dEJveCkpOwogICAgIGRpc3BsYXlCb3guc2V0UGFkZGluZyhnZW9tZXRyeSgpLmNv
bXB1dGVkUGFkZGluZyhsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgaG9yaXpvbnRh
bENvbnN0cmFpbnQgfSkpOwogfQogCi12b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRP
ZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3Qg
VXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiByb290SG9yaXpvbnRhbENvbnN0cmFp
bnRzLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiByb290VmVydGljYWxD
b25zdHJhaW50cykKK3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRl
bnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29u
c3RyYWludHMmIHJvb3RWZXJ0aWNhbENvbnN0cmFpbnRzKQogewogICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJTdGFydDogbGF5b3V0IG91dC1v
Zi1mbG93IGNvbnRlbnQgLT4gY29udGV4dDogIiA8PCAmbGF5b3V0U3RhdGUoKSA8PCAiIHJvb3Q6
ICIgPDwgJnJvb3QoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKaW5kZXggZTMzNzJjZGUzZGQzYzRiMTFkZDEyODY4ODUzZGFmNTVlNTVkNTVkOS4uN2QxOGE5
ZDFlMTY3YWJhODJjMDM0OWQ4OTg1NDM2OTk4Yzc0OWMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTY0LDggKzY0LDggQEAgcHVibGljOgogICAgIEZv
cm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBG
b3JtYXR0aW5nU3RhdGUmKTsKICAgICB2aXJ0dWFsIH5Gb3JtYXR0aW5nQ29udGV4dCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBj
b25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVydGlj
YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJikgPSAwOwotICAgIHZvaWQgbGF5b3V0T3V0T2ZGbG93Q29u
dGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25z
dHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSA9IDA7
CisgICAgdm9pZCBsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOwog
CiAgICAgc3RydWN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgewogICAgICAgICB2b2lkIGV4
cGFuZChMYXlvdXRVbml0IGhvcml6b250YWxWYWx1ZSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJv
dGVjdGVkOgogICAgIGNvbnN0IEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGU7IH0KICAgICBGb3JtYXR0aW5nU3RhdGUmIGZv
cm1hdHRpbmdTdGF0ZSgpIHsgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlOyB9CiAKLSAgICB2b2lk
IGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jpem9udGFs
VmFsdWVzOjpDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmco
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlR2VvbWV0cnlDb25zdHJhaW50c0FmdGVyTGF5
b3V0KCkgY29uc3Q7CkBAIC0xNDIsMTAgKzE0MiwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAg
TGF5b3V0VW5pdCBjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJv
eCYpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3Ry
YWludHMgaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KGNvbnN0IERpc3BsYXk6OkJv
eCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpOwotICAgICAgICBzdGF0aWMgVXNlZFZlcnRpY2Fs
VmFsdWVzOjpDb25zdHJhaW50cyB2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KGNvbnN0
IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpOwotICAgICAgICBzdGF0aWMg
VXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIGhvcml6b250YWxDb25zdHJhaW50c0Zv
ckluRmxvdyhjb25zdCBEaXNwbGF5OjpCb3gmIGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5KTsKLSAg
ICAgICAgc3RhdGljIFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgdmVydGljYWxDb25z
dHJhaW50c0ZvckluRmxvdyhjb25zdCBEaXNwbGF5OjpCb3gmIGNvbnRhaW5pbmdCbG9ja0dlb21l
dHJ5KTsKKyAgICAgICAgc3RhdGljIEhvcml6b250YWxDb25zdHJhaW50cyBob3Jpem9udGFsQ29u
c3RyYWludHNGb3JPdXRPZkZsb3coY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tH
ZW9tZXRyeSk7CisgICAgICAgIHN0YXRpYyBWZXJ0aWNhbENvbnN0cmFpbnRzIHZlcnRpY2FsQ29u
c3RyYWludHNGb3JPdXRPZkZsb3coY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tH
ZW9tZXRyeSk7CisgICAgICAgIHN0YXRpYyBIb3Jpem9udGFsQ29uc3RyYWludHMgaG9yaXpvbnRh
bENvbnN0cmFpbnRzRm9ySW5GbG93KGNvbnN0IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2Nr
R2VvbWV0cnkpOworICAgICAgICBzdGF0aWMgVmVydGljYWxDb25zdHJhaW50cyB2ZXJ0aWNhbENv
bnN0cmFpbnRzRm9ySW5GbG93KGNvbnN0IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2Vv
bWV0cnkpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBmcmllbmQgY2xhc3MgRm9ybWF0dGlu
Z0NvbnRleHQ7CkBAIC0xOTcsOCArMTk3LDggQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAg
IHZvaWQgY29sbGVjdE91dE9mRmxvd0Rlc2NlbmRhbnRzSWZOZWVkZWQoKTsKLSAgICB2b2lkIGNv
bXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29u
c3RyYWludHMmKTsKLSAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnko
Y29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiwgY29u
c3QgVXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZU91
dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZU91
dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CiAKICAgICBXZWFrUHRyPGNv
bnN0IENvbnRhaW5lcj4gbV9yb290OwogICAgIEZvcm1hdHRpbmdTdGF0ZSYgbV9mb3JtYXR0aW5n
U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAKaW5kZXggNTgyODZlMTQ2OGE1OWNlMTk2NWVhODQ3MzViMTAwODYxMDc5MDEx
OC4uMjZkNjNiMjlhZmJjZmM3NmM3M2YzOWZkMWRjMTBkZTE2OGVlYjY1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAt
MjQ0LDcgKzI0NCw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpz
dGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpCiAgICAgICAgIEFTU0VSVCgh
Y29udGFpbmVyLT5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQo
KSk7CiAgICAgfQogICAgIC8vIE1vdmUgdGhlIHN0YXRpYyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0
aGUgcGFkZGluZyBib3guIFRoaXMgaXMgdmVyeSBzcGVjaWZpYyB0byBhYm9sdXRlbHkgcG9zaXRp
b25lZCBib3hlcy4KLSAgICByZXR1cm4gdG9wIC0gdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFp
bnRzLmNvbnRlbnRCb3hUb3A7CisgICAgcmV0dXJuIHRvcCAtIHVzZWRWZXJ0aWNhbFZhbHVlcy5j
b25zdHJhaW50cy5sb2dpY2FsVG9wOwogfQogCiBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25l
ZChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRI
b3Jpem9udGFsVmFsdWVzKSBjb25zdApAQCAtMjY3LDcgKzI2Nyw3IEBAIExheW91dFVuaXQgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRP
ZkZsb3dQb3NpCiAgICAgICAgIEFTU0VSVCghY29udGFpbmVyLT5pc1Bvc2l0aW9uZWQoKSB8fCBs
YXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7CiAgICAgfQogICAgIC8vIE1vdmUgdGhlIHN0
YXRpYyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgcGFkZGluZyBib3guIFRoaXMgaXMgdmVyeSBz
cGVjaWZpYyB0byBhYm9sdXRlbHkgcG9zaXRpb25lZCBib3hlcy4KLSAgICByZXR1cm4gbGVmdCAt
IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRCb3hMZWZ0OworICAgIHJl
dHVybiBsZWZ0IC0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbExlZnQ7
CiB9CiAKIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJpbmtUb0Zp
dFdpZHRoKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QsIExheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgpCkBAIC0yOTgsNyArMjk4LDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OnNocmlua1RvRml0V2lkdGgoY29uc3QgQm94JiBmb3JtYXR0aW5nUm8KIFZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNl
ZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jpem9u
dGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcywgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVz
JiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwotICAgIEFTU0VS
VCh1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMuaGVpZ2h0KTsKKyAgICBBU1NFUlQodXNl
ZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOwogCiAgICAgLy8gMTAu
Ni40IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAgLy8K
QEAgLTMyNyw4ICszMjcsOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogICAgIGF1dG8mIGZv
cm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKICAgICBhdXRvJiBz
dHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0
dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja0hlaWdodCA9ICp1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMuaGVpZ2h0Owot
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25z
dHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp1c2VkVmVy
dGljYWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbEhlaWdodDsKKyAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbFdp
ZHRoOwogCiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2lj
YWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoKTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogCiAgICAg
Ly8gRm9yIG91dC1vZi1mbG93IGVsZW1lbnRzIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1l
ZCBieSB0aGUgcGFkZGluZyBlZGdlIG9mIHRoZSBhbmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBv
aW50IHRoZSBwb3NpdGlvbmVkIHZhbHVlIGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0
aGUgcGFkZGluZyBib3guIExldCdzIGNvbnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRl
IHN5c3RlbS4KLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1
c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMuY29udGVudEJveFRvcDsKKyAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkVmVydGljYWxWYWx1ZXMuY29u
c3RyYWludHMubG9naWNhbFRvcDsKICAgICAqdG9wICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdW
ZXJ0aWNhbEVkZ2U7CiAgICAgKmJvdHRvbSArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGlj
YWxFZGdlOwogCkBAIC00NDcsNyArNDQ3LDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKICAg
ICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAg
ICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBib3hHZW9tZXRy
eSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYXV0
byBjb250YWluaW5nQmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRz
LndpZHRoOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZh
bHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGg7CiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKTsKICAgICAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RB
dXRvKHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTU0OSw3
ICs1NDksNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogCiAgICAgLy8gRm9yIG91dC1vZi1m
bG93IGVsZW1lbnRzIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1lZCBieSB0aGUgcGFkZGlu
ZyBlZGdlIG9mIHRoZSBhbmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwb3NpdGlv
bmVkIHZhbHVlIGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFkZGluZyBib3gu
IExldCdzIGNvbnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBh
dXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZh
bHVlcy5jb25zdHJhaW50cy5jb250ZW50Qm94TGVmdDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9j
a1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5s
b2dpY2FsTGVmdDsKICAgICAqbGVmdCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxF
ZGdlOwogICAgICpyaWdodCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwog
CkBAIC01NjAsNyArNTYwLDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKIFZlcnRpY2FsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFs
dWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcywgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJiB1c2Vk
VmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7Ci0gICAgQVNTRVJUKHVzZWRW
ZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5oZWlnaHQpOworICAgIEFTU0VSVCh1c2VkVmVydGlj
YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbEhlaWdodCk7CiAKICAgICAvLyAxMC42LjUgQWJz
b2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8vCkBAIC01NzUsOCAr
NTc1LDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKICAgICBhdXRvJiBmb3JtYXR0aW5nQ29u
dGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlv
dXRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0
Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tIZWln
aHQgPSAqdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmhlaWdodDsKLSAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMud2lk
dGg7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSAqdXNlZFZlcnRpY2FsVmFsdWVz
LmNvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0
aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKIAogICAg
IGF1dG8gdG9wID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubG9naWNhbEJvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC02
MjcsNyArNjI3LDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKIAogICAgIC8vIEZvciBvdXQt
b2YtZmxvdyBlbGVtZW50cyB0aGUgY29udGFpbmluZyBibG9jayBpcyBmb3JtZWQgYnkgdGhlIHBh
ZGRpbmcgZWRnZSBvZiB0aGUgYW5jZXN0b3IuCiAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcG9z
aXRpb25lZCB2YWx1ZSBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIHBhZGRpbmcg
Ym94LiBMZXQncyBjb252ZXJ0IGl0IHRvIGJvcmRlciBib3ggY29vcmRpbmF0ZSBzeXN0ZW0uCi0g
ICAgYXV0byBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlID0gdXNlZFZlcnRpY2Fs
VmFsdWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRCb3hUb3A7CisgICAgYXV0byBjb250YWluaW5nQmxv
Y2tQYWRkaW5nVmVydGljYWxFZGdlID0gdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmxv
Z2ljYWxUb3A7CiAgICAgKnRvcCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdl
OwogICAgICpib3R0b20gKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKIApA
QCAtNjYwLDcgKzY2MCw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21lCiAgICAgYXV0byYgZm9y
bWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0
eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0
aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3Ry
YWludHMubG9naWNhbFdpZHRoOwogICAgIGF1dG8gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCk7CiAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2lj
YWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTczNSw3ICs3MzUsNyBAQCBIb3Jp
em9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBs
YWNlZEhvcml6b250YWxHZW9tZQogCiAgICAgLy8gRm9yIG91dC1vZi1mbG93IGVsZW1lbnRzIHRo
ZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1lZCBieSB0aGUgcGFkZGluZyBlZGdlIG9mIHRoZSBh
bmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwb3NpdGlvbmVkIHZhbHVlIGlzIGlu
IHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFkZGluZyBib3guIExldCdzIGNvbnZlcnQg
aXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50
cy5jb250ZW50Qm94TGVmdDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNh
bEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsTGVmdDsKICAg
ICAqbGVmdCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwogICAgICpyaWdo
dCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwogCkBAIC03ODgsOSArNzg4
LDkgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWEKICAgICAvLyAjMQogICAgIGF1dG8gdXNlZEhv
cml6b250YWxsTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJnaW4geyBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52
YWx1ZU9yKDApIH07CiAgICAgLy8gIzIKLSAgICBhdXRvIHdpZHRoID0gdXNlZEhvcml6b250YWxW
YWx1ZXMud2lkdGggPyB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkQ29udGVu
dFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMud2lkdGgp
OworICAgIGF1dG8gd2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVzZWRIb3Jp
em9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lkdGgobGF5b3V0Qm94LCB1c2Vk
SG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAgIGlmICghd2lk
dGgpCi0gICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRCb3gsIHVzZWRIb3Jp
em9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLndpZHRoKTsKKyAgICAgICAgd2lkdGggPSBzaHJpbmtU
b0ZpdFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9n
aWNhbFdpZHRoKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91
dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2VkIC0+
IHdpZHRoKCIgPDwgKndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgdXNlZEhvcml6b250YWxsTWFy
Z2luLnN0YXJ0IDw8ICJweCwgIiA8PCB1c2VkSG9yaXpvbnRhbGxNYXJnaW4uZW5kIDw8ICJweCkg
LT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBDb250ZW50
V2lkdGhBbmRNYXJnaW4geyAqd2lkdGgsIHVzZWRIb3Jpem9udGFsbE1hcmdpbiwgY29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luIH07CkBAIC04NzgsNyArODc4LDcgQEAgQ29udGVudEhlaWdodEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5k
TWFyZ2kKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gcmVw
bGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsKIAotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZl
cnRpY2FsVmFsdWVzLmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6
IGNvbXB1dGVkQ29udGVudEhlaWdodChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25z
dHJhaW50cy5oZWlnaHQpOworICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2FsVmFsdWVzLmhl
aWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkQ29udGVu
dEhlaWdodChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2Fs
SGVpZ2h0KTsKICAgICBhdXRvIGhlaWdodElzQXV0byA9ICF1c2VkVmVydGljYWxWYWx1ZXMuaGVp
Z2h0ICYmIGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpOwogICAgIGF1dG8gd2lkdGhJc0F1dG8gPSBz
dHlsZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKTsKIApAQCAtOTQzLDkgKzk0Myw5IEBAIENvbnRl
bnRXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oCiAgICAgYXV0byByZXBsYWNlZCA9IGxheW91dEJveC5yZXBsYWNl
ZCgpOwogICAgIEFTU0VSVChyZXBsYWNlZCk7CiAKLSAgICBhdXRvIHdpZHRoID0gdXNlZEhvcml6
b250YWxWYWx1ZXMud2lkdGggPyB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVk
Q29udGVudFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMu
d2lkdGgpOworICAgIGF1dG8gd2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVz
ZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lkdGgobGF5b3V0Qm94
LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAgIGF1
dG8gaGVpZ2h0SXNBdXRvID0gaXNIZWlnaHRBdXRvKGxheW91dEJveCk7Ci0gICAgYXV0byBoZWln
aHQgPSBjb21wdXRlZENvbnRlbnRIZWlnaHQobGF5b3V0Qm94LCB1c2VkVmVydGljYWxWYWx1ZXMg
PyB1c2VkVmVydGljYWxWYWx1ZXMtPmNvbnN0cmFpbnRzLmhlaWdodCA6IFdURjo6bnVsbG9wdCk7
CisgICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZENvbnRlbnRIZWlnaHQobGF5b3V0Qm94LCB1c2Vk
VmVydGljYWxWYWx1ZXMgPyB1c2VkVmVydGljYWxWYWx1ZXMtPmNvbnN0cmFpbnRzLmxvZ2ljYWxI
ZWlnaHQgOiBXVEY6Om51bGxvcHQpOwogCiAgICAgaWYgKCF3aWR0aCAmJiBoZWlnaHRJc0F1dG8g
JiYgcmVwbGFjZWQtPmhhc0ludHJpbnNpY1dpZHRoKCkpIHsKICAgICAgICAgLy8gIzEKQEAgLTk4
Niw3ICs5ODYsNyBAQCBMYXlvdXRTaXplIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJveAogICAgIC8vIDMuIElmIG5laXRo
ZXIgaXMgJ2F1dG8nLCAnYm90dG9tJyBpcyBpZ25vcmVkIChpLmUuLCB0aGUgdXNlZCB2YWx1ZSBv
ZiAnYm90dG9tJyB3aWxsIGJlIG1pbnVzIHRoZSB2YWx1ZSBvZiAndG9wJykuCiAKICAgICBhdXRv
JiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lk
dGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9n
aWNhbFdpZHRoOwogCiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxl
LmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKQEAgLTEwNjMsNyArMTA2Myw3IEBAIE9wdGlvbmFsPEVkZ2VzPiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBCb3gmIGxheW91dEJv
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBzdHlsZSA9IGxheW91
dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpv
bnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbFdpZHRoOwogICAg
IExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUGFk
ZGluZ10gLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3gpOwogICAgIHJldHVybiBFZGdlcyB7
CiAgICAgICAgIHsgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ0xlZnQoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nUmlnaHQoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpIH0sCkBAIC0xMDc0LDE0ICsxMDc0LDE0IEBAIE9wdGlvbmFsPEVkZ2Vz
PiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBCb3gm
IGxheW91dEJvCiBDb21wdXRlZEhvcml6b250YWxNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNv
bnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsK
ICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3Ry
YWludHMubG9naWNhbFdpZHRoOwogICAgIHJldHVybiB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8o
c3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLCBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfTsKIH0K
IAogQ29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsKICAgICBhdXRvJiBz
dHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGgg
PSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNh
bFdpZHRoOwogICAgIHJldHVybiB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2lu
QmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhz
dHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfTsKIH0KIApAQCAtMTEw
NywyNCArMTEwNywyNCBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJh
aW50cyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnN0cgogICAgIHJldHVybiBpbnRy
aW5zaWNXaWR0aDsKIH0KIAotVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93
KGNvbnN0IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCitIb3Jpem9udGFs
Q29uc3RyYWludHMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3Ry
YWludHNGb3JPdXRPZkZsb3coY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9t
ZXRyeSkKIHsKLSAgICByZXR1cm4gVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsg
Y29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveExlZnQoKSwgY29udGFpbmluZ0Jsb2Nr
R2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCkgfTsKKyAgICByZXR1cm4gSG9yaXpvbnRhbENvbnN0
cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveExlZnQoKSwgY29udGFp
bmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCkgfTsKIH0KIAotVXNlZFZlcnRpY2Fs
VmFsdWVzOjpDb25zdHJhaW50cyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnZlcnRpY2Fs
Q29uc3RyYWludHNGb3JPdXRPZkZsb3coY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxv
Y2tHZW9tZXRyeSkKK1ZlcnRpY2FsQ29uc3RyYWludHMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KGNvbnN0IERpc3BsYXk6OkJveCYg
Y29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCiB7Ci0gICAgcmV0dXJuIFVzZWRWZXJ0aWNhbFZhbHVl
czo6Q29uc3RyYWludHMgeyBjb250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5nQm94VG9wKCks
IGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5LnBhZGRpbmdCb3hIZWlnaHQoKSB9OworICAgIHJldHVy
biBWZXJ0aWNhbENvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0Jv
eFRvcCgpLCBjb250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5nQm94SGVpZ2h0KCkgfTsKIH0K
IAotVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9ySW5GbG93KGNvbnN0IERpc3BsYXk6OkJv
eCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCitIb3Jpem9udGFsQ29uc3RyYWludHMgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JJbkZsb3coY29u
c3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSkKIHsKLSAgICByZXR1cm4g
VXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0
cnkuY29udGVudEJveExlZnQoKSwgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29udGVudEJveFdp
ZHRoKCkgfTsKKyAgICByZXR1cm4gSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Js
b2NrR2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29u
dGVudEJveFdpZHRoKCkgfTsKIH0KIAotVXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnZlcnRpY2FsQ29uc3RyYWludHNGb3JJbkZsb3co
Y29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSkKK1ZlcnRpY2FsQ29u
c3RyYWludHMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRz
Rm9ySW5GbG93KGNvbnN0IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCiB7
Ci0gICAgcmV0dXJuIFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBjb250YWluaW5n
QmxvY2tHZW9tZXRyeS5jb250ZW50Qm94VG9wKCksIHsgfSB9OworICAgIHJldHVybiBWZXJ0aWNh
bENvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29udGVudEJveFRvcCgpLCB7
IH0gfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4
IGFiYzIyMzEwZWMzODI5MmNhNDM1NmQyYjgyZDAxNjM3OWE5YzA5M2UuLmRlMWYzNjM4YjIyYzUz
ZWVkNzUzMjNkYzYwMmQ2MzYxM2UzNzdjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9MYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
Q29udGV4dC5jcHAKQEAgLTk1LDggKzk1LDggQEAgdm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXRG
b3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ28KICAg
ICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0
dGluZ0NvbnRleHRSb290LCBsYXlvdXRTdGF0ZSgpKTsKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
bGF5b3V0U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZvcm1hdHRpbmdDb250ZXh0Um9v
dCk7CiAKLSAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IFVzZWRIb3Jpem9udGFsVmFs
dWVzOjpDb25zdHJhaW50cyB7IGRpc3BsYXlCb3guY29udGVudEJveExlZnQoKSwgZGlzcGxheUJv
eC5jb250ZW50Qm94V2lkdGgoKSB9OwotICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50cyA9IFVz
ZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hUb3Ao
KSwgeyB9IH07CisgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBIb3Jpem9udGFsQ29u
c3RyYWludHMgeyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCksIGRpc3BsYXlCb3guY29udGVu
dEJveFdpZHRoKCkgfTsKKyAgICBhdXRvIHZlcnRpY2FsQ29uc3RyYWludHMgPSBWZXJ0aWNhbENv
bnN0cmFpbnRzIHsgZGlzcGxheUJveC5jb250ZW50Qm94VG9wKCksIHsgfSB9OwogICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBob3Jp
em9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOwogCiAgICAgLy8gRklYTUU6
IGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZSgpIGRvZXMgbm90IHBlcmZvcm0gbGF5b3V0
IG9uIHRoZSByb290LCByYXRoZXIgaXQgbGF5cyBvdXQgdGhlIHJvb3QncyBjb250ZW50LgpAQCAt
MTA0LDggKzEwNCw4IEBAIHZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvCiAgICAgLy8gSXQgYWxzbyBt
ZWFucyB0aGF0IHRoZSBmb3JtYXR0aW5nQ29udGV4dFJvb3QgaGFzIHRvIGhhdmUgYSB2YWxpZC9j
bGVhbiBnZW9tZXRyeSBhdCB0aGlzIHBvaW50LgogICAgIC8vIEN1cnJlbnRseSB0aGUgaW50ZWdy
YXRpb24gY29kZXBhdGggZG9lcyBub3QgZ3VhcmFudGVlIGl0IGFuZCB0aGF0J3MgZmluZSBhcyBs
b25nIGFzIHdlIGxheW91dCBpbmZsb3cgY29udGVudCBvbmx5LgogICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dElu
dGVncmF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRz
ID0gVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgZGlzcGxheUJveC5wYWRkaW5n
Qm94TGVmdCgpLCBkaXNwbGF5Qm94LnBhZGRpbmdCb3hXaWR0aCgpIH07Ci0gICAgICAgIGF1dG8g
dmVydGljYWxDb25zdHJhaW50cyA9IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBk
aXNwbGF5Qm94LnBhZGRpbmdCb3hUb3AoKSwgZGlzcGxheUJveC5wYWRkaW5nQm94SGVpZ2h0KCkg
fTsKKyAgICAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBIb3Jpem9udGFsQ29uc3Ry
YWludHMgeyBkaXNwbGF5Qm94LnBhZGRpbmdCb3hMZWZ0KCksIGRpc3BsYXlCb3gucGFkZGluZ0Jv
eFdpZHRoKCkgfTsKKyAgICAgICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnRzID0gVmVydGljYWxD
b25zdHJhaW50cyB7IGRpc3BsYXlCb3gucGFkZGluZ0JveFRvcCgpLCBkaXNwbGF5Qm94LnBhZGRp
bmdCb3hIZWlnaHQoKSB9OwogICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZG
bG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0
aWNhbENvbnN0cmFpbnRzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0VW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5o
CmluZGV4IDQ3ZjgwMjQ2MmIyYjM0NDRhYTkwN2QyYTg0MmVjZjk0MjY4NmFkMjkuLjVlNWUxMDNh
ZDZiMmU1YTYyMDJmMTk1ZWJlYjk4ZmFlYzY5ZjJkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRVbml0cy5oCkBAIC0xNTEsNTQgKzE1MSw0MiBAQCBzdHJ1Y3QgVmVydGljYWxHZW9tZXRyeSB7
CiAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luOwogfTsK
IAorc3RydWN0IEhvcml6b250YWxDb25zdHJhaW50cyB7CisgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdDsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aDsKK307CisKK3N0cnVjdCBWZXJ0aWNh
bENvbnN0cmFpbnRzIHsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3A7CisgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodDsKK307CisKIHN0cnVjdCBVc2VkSG9yaXpvbnRhbFZh
bHVlcyB7Ci0gICAgc3RydWN0IENvbnN0cmFpbnRzIHsKLSAgICAgICAgZXhwbGljaXQgQ29uc3Ry
YWludHMoTGF5b3V0VW5pdCBjb250ZW50Qm94TGVmdCwgTGF5b3V0VW5pdCBob3Jpem9udGFsQ29u
c3RyYWludCkKLSAgICAgICAgICAgIDogY29udGVudEJveExlZnQoY29udGVudEJveExlZnQpCi0g
ICAgICAgICAgICAsIHdpZHRoKGhvcml6b250YWxDb25zdHJhaW50KQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQotICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hMZWZ0OwotICAgICAgICBMYXlv
dXRVbml0IHdpZHRoOwotICAgIH07Ci0KLSAgICBleHBsaWNpdCBVc2VkSG9yaXpvbnRhbFZhbHVl
cyhDb25zdHJhaW50cyBjb25zdHJhaW50cykKKyAgICBleHBsaWNpdCBVc2VkSG9yaXpvbnRhbFZh
bHVlcyhIb3Jpem9udGFsQ29uc3RyYWludHMgY29uc3RyYWludHMpCiAgICAgICAgIDogY29uc3Ry
YWludHMoY29uc3RyYWludHMpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IFVzZWRIb3Jp
em9udGFsVmFsdWVzKENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzLCBPcHRpb25hbDxMYXlvdXRVbml0
PiB3aWR0aCwgT3B0aW9uYWw8VXNlZEhvcml6b250YWxNYXJnaW4+IG1hcmdpbikKKyAgICBleHBs
aWNpdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyhIb3Jpem9udGFsQ29uc3RyYWludHMgY29uc3RyYWlu
dHMsIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoLCBPcHRpb25hbDxVc2VkSG9yaXpvbnRhbE1h
cmdpbj4gbWFyZ2luKQogICAgICAgICA6IGNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKQogICAgICAg
ICAsIHdpZHRoKHdpZHRoKQogICAgICAgICAsIG1hcmdpbihtYXJnaW4pCiAgICAgewogICAgIH0K
IAotICAgIENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzOworICAgIEhvcml6b250YWxDb25zdHJhaW50
cyBjb25zdHJhaW50czsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aDsKICAgICBPcHRp
b25hbDxVc2VkSG9yaXpvbnRhbE1hcmdpbj4gbWFyZ2luOwogfTsKIAogc3RydWN0IFVzZWRWZXJ0
aWNhbFZhbHVlcyB7Ci0gICAgc3RydWN0IENvbnN0cmFpbnRzIHsKLSAgICAgICAgZXhwbGljaXQg
Q29uc3RyYWludHMoTGF5b3V0VW5pdCBjb250ZW50Qm94VG9wLCBPcHRpb25hbDxMYXlvdXRVbml0
PiB2ZXJ0aWNhbENvbnN0cmFpbnQgPSBXVEY6Om51bGxvcHQpCi0gICAgICAgICAgICA6IGNvbnRl
bnRCb3hUb3AoY29udGVudEJveFRvcCkKLSAgICAgICAgICAgICwgaGVpZ2h0KHZlcnRpY2FsQ29u
c3RyYWludCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgTGF5b3V0VW5pdCBjb250
ZW50Qm94VG9wOwotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7Ci0gICAgfTsK
LQotICAgIGV4cGxpY2l0IFVzZWRWZXJ0aWNhbFZhbHVlcyhDb25zdHJhaW50cyBjb25zdHJhaW50
cywgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0ID0geyB9KQorICAgIGV4cGxpY2l0IFVzZWRW
ZXJ0aWNhbFZhbHVlcyhWZXJ0aWNhbENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzLCBPcHRpb25hbDxM
YXlvdXRVbml0PiBoZWlnaHQgPSB7IH0pCiAgICAgICAgIDogY29uc3RyYWludHMoY29uc3RyYWlu
dHMpCiAgICAgICAgICwgaGVpZ2h0KGhlaWdodCkKICAgICB7CiAgICAgfQogCi0gICAgQ29uc3Ry
YWludHMgY29uc3RyYWludHM7CisgICAgVmVydGljYWxDb25zdHJhaW50cyBjb25zdHJhaW50czsK
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCBkODNkYzljZWIxMWNhMjg3Y2NjOWEwYTk1NzljMTBmMzdkODkw
NGQyLi45MWQzYzI3ZGNhZjYwZmU3MWRlZWJjOGEyYTRhZGNjZTIwOWVmOTA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRp
bmdDb250ZXgKIH0KIAogZW51bSBjbGFzcyBMYXlvdXREaXJlY3Rpb24geyBDaGlsZCwgU2libGlu
ZyB9Owotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KElu
dmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgVXNlZEhvcml6b250YWxW
YWx1ZXM6OkNvbnN0cmFpbnRzJiByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBVc2Vk
VmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiByb290VmVydGljYWxDb25zdHJhaW50cykKK3Zv
aWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRp
b25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYg
cm9vdEhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgcm9v
dFZlcnRpY2FsQ29uc3RyYWludHMpCiB7CiAgICAgLy8gOS40LjEgQmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0cwogICAgIC8vIEluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LCBib3hlcyBhcmUg
bGFpZCBvdXQgb25lIGFmdGVyIHRoZSBvdGhlciwgdmVydGljYWxseSwgYmVnaW5uaW5nIGF0IHRo
ZSB0b3Agb2YgYSBjb250YWluaW5nIGJsb2NrLgpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFs
PExheW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRBdmFpbGFibGVXaWR0aEZv
ckZsb2F0QXZvaWRlcihjCiAgICAgcmV0dXJuIGF2YWlsYWJsZVdpZHRoOwogfQogCi12b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBC
b3gmIGxheW91dEJveCwgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIEludmFsaWRh
dGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6
OkNvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZh
bHVlczo6Q29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCit2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGxheW91
dEJveCwgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIEludmFsaWRhdGlvblN0YXRl
JiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9u
dGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3Ry
YWludHMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250
ZXh0KCkpOwogICAgIC8vIFN0YXJ0IGxheWluZyBvdXQgdGhpcyBmb3JtYXR0aW5nIHJvb3QgaW4g
dGhlIGZvcm1hdHRpbmcgY29udGVueHQgaXQgbGl2ZXMgaW4uCkBAIC0xOTUsMTIgKzE5NSwxMiBA
QCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9v
dChjb25zdCBCb3gmIGxheW91dEJveCwgRgogICAgIGF1dG8gYWRqdXN0ZWRIb3Jpem9udGFsQ29u
c3RyYWludHMgPSBob3Jpem9udGFsQ29uc3RyYWludHM7CiAgICAgYXV0byBob3Jpem9udGFsQXZh
aWxhYmxlU3BhY2VJc0NvbnN0cmFpbmVkQnlFeGlzdGluZ0Zsb2F0cyA9IGxheW91dEJveC5pc0Zs
b2F0QXZvaWRlcigpICYmICFsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKTsKICAgICBp
ZiAoaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlSXNDb25zdHJhaW5lZEJ5RXhpc3RpbmdGbG9hdHMp
Ci0gICAgICAgIGFkanVzdGVkSG9yaXpvbnRhbENvbnN0cmFpbnRzLndpZHRoID0gdXNlZEF2YWls
YWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KS52YWx1
ZU9yKGhvcml6b250YWxDb25zdHJhaW50cy53aWR0aCk7CisgICAgICAgIGFkanVzdGVkSG9yaXpv
bnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCA9IHVzZWRBdmFpbGFibGVXaWR0aEZvckZsb2F0
QXZvaWRlcihmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCkudmFsdWVPcihob3Jpem9udGFsQ29u
c3RyYWludHMubG9naWNhbFdpZHRoKTsKIAogICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxh
eW91dEJveCwgYWRqdXN0ZWRIb3Jpem9udGFsQ29uc3RyYWludHMpOwogICAgIGNvbXB1dGVTdGF0
aWNWZXJ0aWNhbFBvc2l0aW9uKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94LCB2ZXJ0aWNhbENv
bnN0cmFpbnRzKTsKICAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBhZGp1c3Rl
ZEhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3Np
dGlvbihsYXlvdXRCb3gsIGFkanVzdGVkSG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKKyAgICBjb21w
dXRlU3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGxheW91dEJveCwgeyBhZGp1c3RlZEhvcml6b250
YWxDb25zdHJhaW50cy5sb2dpY2FsTGVmdCwgYWRqdXN0ZWRIb3Jpem9udGFsQ29uc3RyYWludHMu
bG9naWNhbFdpZHRoIH0pOwogCiAgICAgaWYgKGlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkgewog
ICAgICAgICAvLyBTd2ljaCBvdmVyIHRvIHRoZSBuZXcgZm9ybWF0dGluZyBjb250ZXh0ICh0aGUg
b25lIHRoYXQgdGhlIHJvb3QgY3JlYXRlcykuCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94
JiBsYXlvdXRCb3gsIEYKICAgICAgICAgY29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhmbG9h
dGluZ0NvbnRleHQsIGxheW91dEJveCk7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIE9w
dGlvbmFsPFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cz4gaG9yaXpvbnRhbENvbnN0
cmFpbnRzKQordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpwbGFjZUluRmxvd1Bvc2l0aW9u
ZWRDaGlsZHJlbihjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0
cmFpbnRzPiBob3Jpem9udGFsQ29uc3RyYWludHMpCiB7CiAgICAgaWYgKCFpczxDb250YWluZXI+
KGxheW91dEJveCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0
IEJveCYgbGF5b3V0Qm94LAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExh
eW91dCwgc3RyZWFtIDw8ICJFbmQ6IG1vdmUgaW4tZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVuIC0+
IHBhcmVudDogIiA8PCAmbGF5b3V0Qm94KTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQm
IGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNh
bFZhbHVlczo6Q29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCit2b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEZsb2F0
aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
VmVydGljYWxDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cykKIHsKICAgICBmb3JtYXR0
aW5nU3RhdGUoKS5kaXNwbGF5Qm94KGxheW91dEJveCkuc2V0VG9wKGdlb21ldHJ5KCkuc3RhdGlj
VmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gsIFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHZlcnRpY2Fs
Q29uc3RyYWludHMgfSkpOwogICAgIGlmIChsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKQpAQCAt
MjUwLDE1ICsyNTAsMTUgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3Rh
dGljVmVydGljYWxQb3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQKICAgICAgICAgY29tcHV0
ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdChsYXlvdXRCb3gpOwog
fQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNIb3Jpem9udGFs
UG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVz
OjpDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQordm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IEJveCYsIGNv
bnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpCiB7Ci0gICAgZm9ybWF0dGluZ1N0YXRlKCkuZGlz
cGxheUJveChsYXlvdXRCb3gpLnNldExlZnQoZ2VvbWV0cnkoKS5zdGF0aWNIb3Jpem9udGFsUG9z
aXRpb24obGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGhvcml6b250YWxDb25zdHJh
aW50cyB9KSk7CisgICAgLy8gZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUJveChsYXlvdXRCb3gp
LnNldExlZnQoZ2VvbWV0cnkoKS5zdGF0aWNIb3Jpem9udGFsUG9zaXRpb24obGF5b3V0Qm94LCBV
c2VkSG9yaXpvbnRhbFZhbHVlcyB7IGhvcml6b250YWxDb25zdHJhaW50cyB9KSk7CiB9CiAKLXZv
aWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEZs
b2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3Ry
YWludHMpCit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlv
bihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlv
dXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRz
LCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzKQogewogICAg
IGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94
LCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsKLSAgICBjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBvc2l0
aW9uKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKKyAgICBjb21wdXRlU3RhdGlj
SG9yaXpvbnRhbFBvc2l0aW9uKGxheW91dEJveCwgeyBob3Jpem9udGFsQ29uc3RyYWludHMubG9n
aWNhbExlZnQsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGggfSk7CiB9CiAKIHZv
aWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRp
b24oY29uc3QgQm94JiBsYXlvdXRCb3gpCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzKGNvbnN0IEZsb2F0
aW5nQ29udGV4dCYKICAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUJveChsYXlvdXRC
b3gpLnNldFRvcExlZnQoKmFkanVzdGVkUG9zaXRpb24pOwogfQogCi12b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwg
Y29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3Ry
YWludHMpCit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMpCiB7CiAgICAgYXV0byBjb21wdXRlID0gWyZdKE9wdGlvbmFsPExh
eW91dFVuaXQ+IHVzZWRXaWR0aCkgLT4gQ29udGVudFdpZHRoQW5kTWFyZ2luIHsKICAgICAgICAg
YXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBob3Jpem9udGFsQ29uc3Ry
YWludHMsIHVzZWRXaWR0aCwgeyB9IH07CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IFUKIAogICAgIGF1dG8gY29udGVudFdpZHRoQW5kTWFyZ2luID0gY29tcHV0ZSh7
IH0pOwogCi0gICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IGhvcml6b250YWxDb25zdHJhaW50cy53
aWR0aDsKKyAgICBhdXRvIGF2YWlsYWJsZVdpZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxv
Z2ljYWxXaWR0aDsKICAgICBpZiAoYXV0byBtYXhXaWR0aCA9IGdlb21ldHJ5KCkuY29tcHV0ZWRN
YXhXaWR0aChsYXlvdXRCb3gsIGF2YWlsYWJsZVdpZHRoKSkgewogICAgICAgICBhdXRvIG1heFdp
ZHRoQW5kTWFyZ2luID0gY29tcHV0ZShtYXhXaWR0aCk7CiAgICAgICAgIGlmIChjb250ZW50V2lk
dGhBbmRNYXJnaW4uY29udGVudFdpZHRoID4gbWF4V2lkdGhBbmRNYXJnaW4uY29udGVudFdpZHRo
KQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVCiAgICAgZGlzcGxh
eUJveC5zZXRIb3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4oY29udGVudFdpZHRoQW5kTWFyZ2luLmNv
bXB1dGVkTWFyZ2luKTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpvbnRh
bFZhbHVlczo6Q29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVXNlZFZl
cnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cykKK3ZvaWQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxh
eW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCiB7CiAg
ICAgYXV0byB1c2VkSG9yaXpvbnRhbFZhbHVlcyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgaG9y
aXpvbnRhbENvbnN0cmFpbnRzIH07CiAgICAgYXV0byBjb21wdXRlID0gWyZdKGF1dG8gdXNlZFZl
cnRpY2FsVmFsdWVzKSAtPiBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmgKaW5kZXggZjlkOTMxZDE3MWQ3ODE1MTEzZWMwNzE2YmE3NTJkNTJkNDg3NjU0
My4uZTNmNzg1Zjg5N2MxZDdjODBiZmJmZjRjOTQ1NWY3Mjk4ZmEyNDhmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ4LDE4ICs0OCwxOCBAQCBjbGFzcyBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290
LCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYpOwogCi0gICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50
KEludmFsaWRhdGlvblN0YXRlJiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFp
bnRzJiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IEhv
cml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25z
dCBCb3gmLCBGbG9hdGluZ0NvbnRleHQmLCBJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IFVzZWRI
b3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6
Q29uc3RyYWludHMmKTsKLSAgICB2b2lkIHBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNv
bnN0IEJveCYsIE9wdGlvbmFsPFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cz4gPSBX
VEY6Om51bGxvcHQpOworICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0
IEJveCYsIEZsb2F0aW5nQ29udGV4dCYsIEludmFsaWRhdGlvblN0YXRlJiwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOworICAgIHZvaWQg
cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQm94JiwgT3B0aW9uYWw8SG9yaXpv
bnRhbENvbnN0cmFpbnRzPiA9IFdURjo6bnVsbG9wdCk7CiAKLSAgICB2b2lkIGNvbXB1dGVXaWR0
aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3Ry
YWludHMmKTsKLSAgICB2b2lkIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgY29u
c3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiwgY29uc3QgVXNlZFZlcnRpY2Fs
VmFsdWVzOjpDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNv
bnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0
ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
LCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CiAKLSAgICB2b2lkIGNvbXB1dGVTdGF0aWNI
b3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6
OkNvbnN0cmFpbnRzJik7Ci0gICAgdm9pZCBjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihj
b25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmLCBjb25zdCBVc2VkVmVydGljYWxWYWx1
ZXM6OkNvbnN0cmFpbnRzJik7Ci0gICAgdm9pZCBjb21wdXRlU3RhdGljUG9zaXRpb24oY29uc3Qg
RmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6
OkNvbnN0cmFpbnRzJiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyYpOwor
ICAgIHZvaWQgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihjb25zdCBCb3gmLCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIGNvbXB1dGVTdGF0aWNWZXJ0aWNh
bFBvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYsIGNvbnN0IFZlcnRp
Y2FsQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBG
bG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
LCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CiAgICAgdm9pZCBjb21wdXRlRmxvYXRpbmdQ
b3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKTsKICAgICB2b2lkIGNv
bXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3QgRmxvYXRpbmdDb250ZXh0JiwgY29uc3Qg
Qm94Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApp
bmRleCBmYmUzYWQyZmRmNDI1ZjNjYTRlMTQ0YjQwNTNmNDAwNzY5ZDJhMjJjLi44ZDU5OTE1ZTNj
MjVjM2FiOGNjZjUzZmExZGQxZTJiZmJiOWVmZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgQ29udGVudFdpZHRo
QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBs
YWNlZFdpZHRoQW4KICAgICAgICAgLy8gNS4gSWYgYm90aCAnbWFyZ2luLWxlZnQnIGFuZCAnbWFy
Z2luLXJpZ2h0JyBhcmUgJ2F1dG8nLCB0aGVpciB1c2VkIHZhbHVlcyBhcmUgZXF1YWwuIFRoaXMg
aG9yaXpvbnRhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIHRoZQogICAg
ICAgICAvLyAgICBlZGdlcyBvZiB0aGUgY29udGFpbmluZyBibG9jay4KIAotICAgICAgICBhdXRv
IGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMu
d2lkdGg7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRh
bFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGg7CiAgICAgICAgIGF1dG8mIGJveEdlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogCiAg
ICAgICAgIGF1dG8gd2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVzZWRIb3Jp
em9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lkdGgobGF5b3V0Qm94LCBjb250
YWluaW5nQmxvY2tXaWR0aCk7CkBAIC0yMjUsMTQgKzIyNSwxNCBAQCBMYXlvdXRVbml0IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0
IEJveCYgbAogICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0JveEdlb21ldHJ5ID0gZm9ybWF0
dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveCgqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKICAg
ICAgICAgcmV0dXJuIHByZXZpb3VzSW5GbG93Qm94R2VvbWV0cnkuYm90dG9tKCkgKyBwcmV2aW91
c0luRmxvd0JveEdlb21ldHJ5Lm1hcmdpbkFmdGVyKCk7CiAgICAgfQotICAgIHJldHVybiB1c2Vk
VmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMuY29udGVudEJveFRvcDsKKyAgICByZXR1cm4gdXNl
ZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxUb3A7CiB9CiAKIExheW91dFVuaXQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY0hvcml6b250YWxQb3NpdGlv
bihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRI
b3Jpem9udGFsVmFsdWVzKSBjb25zdAogewogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9D
U1MyMi92aXN1cmVuLmh0bWwjYmxvY2stZm9ybWF0dGluZwogICAgIC8vIEluIGEgYmxvY2sgZm9y
bWF0dGluZyBjb250ZXh0LCBlYWNoIGJveCdzIGxlZnQgb3V0ZXIgZWRnZSB0b3VjaGVzIHRoZSBs
ZWZ0IGVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgKGZvciByaWdodC10by1sZWZ0IGZvcm1h
dHRpbmcsIHJpZ2h0IGVkZ2VzIHRvdWNoKS4KLSAgICByZXR1cm4gdXNlZEhvcml6b250YWxWYWx1
ZXMuY29uc3RyYWludHMuY29udGVudEJveExlZnQgKyBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21l
dHJ5Rm9yQm94KGxheW91dEJveCkubWFyZ2luU3RhcnQoKTsKKyAgICByZXR1cm4gdXNlZEhvcml6
b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbExlZnQgKyBmb3JtYXR0aW5nQ29udGV4dCgp
Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCkubWFyZ2luU3RhcnQoKTsKIH0KIAogUG9pbnQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyYgdXNlZEhvcml6b250YWxWYWx1
ZXMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlcyYgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdApA
QCAtMjgxLDcgKzI4MSw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJnaW4oY29uCiAgICAgICAgICAgICBy
ZXR1cm4gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jp
em9udGFsVmFsdWVzKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgdGFibGUgImZpdC1j
b250ZW50IHNpemUiIGJlaGF2aW9yIGhhbmRsaW5nLiBOb3QgaW4gdGhlIHNwZWMgdGhvdWdoLgog
ICAgICAgICAvLyBUYWJsZSByZXR1cm5zIGl0cyBmaW5hbCB3aWR0aCBhcyBtaW4vbWF4LiBVc2Ug
dGhpcyBmaW5hbCB3aWR0aCB2YWx1ZSB0byBjb21wdXRlZCBob3Jpem9udGFsIG1hcmdpbnMgZXRj
LgotICAgICAgICBhdXRvIHVzZWRXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8g
dXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGggOiBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dEJveCwg
dXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMud2lkdGgpOworICAgICAgICBhdXRvIHVz
ZWRXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gdXNlZEhvcml6b250YWxWYWx1
ZXMud2lkdGggOiBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1
ZXMuY29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKICAgICAgICAgcmV0dXJuIGluRmxvd05vblJl
cGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IHVz
ZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLCB1c2VkV2lkdGgsIHVzZWRIb3Jpem9udGFs
VmFsdWVzLm1hcmdpbiB9KTsKICAgICB9CiAgICAgcmV0dXJuIGluRmxvd1JlcGxhY2VkV2lkdGhB
bmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMjQyMTFiNzc5NDk5M2QxZTE2OTFhZDIyYzQ5NmVj
MWU5Y2U2Njg0Ny4uMjE4MjZhMGUwYmUwZjA4YzM1YmI0MmUwYmI5MWI2ZTcwNjA3ODNmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0
aWMgaW5saW5lIGNvbnN0IEJveCogbmV4dEluUHJlT3JkZXIoY29uc3QgQm94JiBsYXlvdXRCb3gs
IGNvbnN0IENvbnRhaW5lciYgcwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRl
JiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFp
bnRzJiBob3JpenRvbmFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29u
c3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25T
dGF0ZSwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3JpenRvbmFsQ29uc3RyYWludHMs
IGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCiB7CiAgICAg
aWYgKCFyb290KCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE5Miw3ICsxOTIsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbgogICAgIH0KIAogICAg
IFZlY3Rvcjxjb25zdCBCb3gqPiBmb3JtYXR0aW5nQ29udGV4dFJvb3RMaXN0OwotICAgIGF1dG8g
dXNlZEhvcml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IFVzZWRIb3Jpem9u
dGFsVmFsdWVzOjpDb25zdHJhaW50cyB7IDBfbHUsIDBfbHUgfSB9OworICAgIGF1dG8gdXNlZEhv
cml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IEhvcml6b250YWxDb25zdHJh
aW50cyB7IDBfbHUsIDBfbHUgfSB9OwogICAgIGF1dG8qIGxheW91dEJveCA9IHJvb3QoKS5maXJz
dEluRmxvd09yRmxvYXRpbmdDaGlsZCgpOwogICAgIHdoaWxlIChsYXlvdXRCb3gpIHsKICAgICAg
ICAgaWYgKGxheW91dEJveC0+ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7CkBAIC0y
MjIsNyArMjIyLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW4KICAgICAgICAgICAgIGF1dG8g
Y29udGVudFdpZHRoID0gKGF2YWlsYWJsZVdpZHRoID8gaW50cmluc2ljV2lkdGhzLT5tYXhpbXVt
IDogaW50cmluc2ljV2lkdGhzLT5taW5pbXVtKSAtIGRpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdp
bkJvcmRlckFuZFBhZGRpbmcoKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJv
eFdpZHRoKGNvbnRlbnRXaWR0aCk7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byB1c2VkSG9yaXpv
bnRhbFZhbHVlcyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgVXNlZEhvcml6b250YWxWYWx1ZXM6
OkNvbnN0cmFpbnRzIHsgMF9sdSwgdG9MYXlvdXRVbml0KGF2YWlsYWJsZVdpZHRoKSB9IH07Cisg
ICAgICAgIGF1dG8gdXNlZEhvcml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7
IEhvcml6b250YWxDb25zdHJhaW50cyB7IDBfbHUsIHRvTGF5b3V0VW5pdChhdmFpbGFibGVXaWR0
aCkgfSB9OwogICAgICAgICByZXR1cm4gY29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZvckNvbnN0cmFp
bnQodXNlZEhvcml6b250YWxWYWx1ZXMpOwogICAgIH07CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCBJ
bmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNp
Y1dpZHRoRm9yQ29uc3RyYWludChjbwogICAgIGF1dG8gbGluZUxheW91dENvbnRleHQgPSBMaW5l
TGF5b3V0Q29udGV4dCB7ICp0aGlzLCByb290KCksIGlubGluZUl0ZW1zIH07CiAgICAgd2hpbGUg
KGxlYWRpbmdJbmxpbmVJdGVtSW5kZXggPCBpbmxpbmVJdGVtcy5zaXplKCkpIHsKICAgICAgICAg
Ly8gT25seSB0aGUgaG9yaXp0b25hbCBhdmFpbGFibGUgd2lkdGggaXMgY29uc3RyYWluZWQgd2hl
biBjb21wdXRpbmcgaW50cmluc2ljIHdpZHRoLgotICAgICAgICBsaW5lQnVpbGRlci5pbml0aWFs
aXplKExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyB7IHsgfSwgdXNlZEhvcml6b250YWxWYWx1ZXMu
Y29uc3RyYWludHMud2lkdGgsIGZhbHNlLCB7IH0gfSk7CisgICAgICAgIGxpbmVCdWlsZGVyLmlu
aXRpYWxpemUoTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIHsgeyB9LCB1c2VkSG9yaXpvbnRhbFZh
bHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGgsIGZhbHNlLCB7IH0gfSk7CiAgICAgICAgIGF1
dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlvdXRMaW5lKGxpbmVCdWlsZGVy
LCBsZWFkaW5nSW5saW5lSXRlbUluZGV4LCB7IH0pOwogCiAgICAgICAgIGxlYWRpbmdJbmxpbmVJ
dGVtSW5kZXggPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXggKyAxOwpAQCAt
Mzc3LDcgKzM3Nyw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxp
bmVDb250ZW50SWZOZWVkZWQoKQogTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIElubGluZUZvcm1h
dHRpbmdDb250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29uc3QgVXNlZEhvcml6b250YWxWYWx1
ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsVG9w
KQogewogICAgIGF1dG8gbGluZUxvZ2ljYWxMZWZ0ID0gZ2VvbWV0cnlGb3JCb3gocm9vdCgpKS5j
b250ZW50Qm94TGVmdCgpOwotICAgIGF1dG8gbGluZUxvZ2ljYWxSaWdodCA9IGxpbmVMb2dpY2Fs
TGVmdCArIHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLndpZHRoOworICAgIGF1dG8g
bGluZUxvZ2ljYWxSaWdodCA9IGxpbmVMb2dpY2FsTGVmdCArIHVzZWRIb3Jpem9udGFsVmFsdWVz
LmNvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKICAgICBhdXRvIGxpbmVJc0NvbnN0cmFpbmVkQnlG
bG9hdCA9IGZhbHNlOwogCiAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRl
eHQgeyByb290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS5mbG9hdGluZ1N0YXRlKCkgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGY2YmIwZmM3NGRmZWY1NzFkMjc3
NWIwODA5MjBiZDhhYmJjMDdkMTguLmJlODkyNjAxNjNlNWRmNGQyODNjZjI3ZWFjNGFjZjFlYTg4
N2NhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDMsNyArNDMsNyBA
QCBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7
CiBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYpOwotICAgIHZvaWQg
bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IFVzZWRIb3Jpem9u
dGFsVmFsdWVzOjpDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3Ry
YWludHMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0
aW9uU3RhdGUmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENv
bnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBvdmVycmlkZTsKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBwdWJsaWM6CiAgICAgICAgIENvbnRlbnRIZWln
aHRBbmRNYXJnaW4gaW5saW5lQmxvY2tIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3Qg
VXNlZEhvcml6b250YWxWYWx1ZXMmLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXMmKSBjb25zdDsK
ICAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmKTsKLSAgICAgICAgT3B0aW9u
YWw8SW5saW5lTGF5b3V0VW5pdD4gY29tcHV0ZWRUZXh0SW5kZW50KGNvbnN0IENvbnRhaW5lciYg
Zm9ybWF0dGluZ0NvbnRleHRSb290LCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3Ry
YWludHMmKSBjb25zdDsKKyAgICAgICAgT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gY29tcHV0
ZWRUZXh0SW5kZW50KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggMjk3ZDA3MDcwZmE5Mzc4YzQz
ZTJhMjU4ZjA2NDcxODU2YzM3ZjQzYi4uMjBkYjE0ZTQ4ZmZjYmNiOWFmMDBjMzVlMDgxZTEzNmQ5
MWUxYjg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lQmxvY2tXaWR0aEFuZE1hcmcKICAgICAvLyBJ
ZiAnd2lkdGgnIGlzICdhdXRvJywgdGhlIHVzZWQgdmFsdWUgaXMgdGhlIHNocmluay10by1maXQg
d2lkdGggYXMgZm9yIGZsb2F0aW5nIGVsZW1lbnRzLgogICAgIC8vIEEgY29tcHV0ZWQgdmFsdWUg
b2YgJ2F1dG8nIGZvciAnbWFyZ2luLWxlZnQnIG9yICdtYXJnaW4tcmlnaHQnIGJlY29tZXMgYSB1
c2VkIHZhbHVlIG9mICcwJy4KICAgICAvLyAjMQotICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZh
bHVlSWZOb3RBdXRvKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgp
LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aCk7CisgICAgYXV0byB3aWR0
aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oZm9ybWF0dGluZ0NvbnRleHRSb290LnN0eWxlKCku
bG9naWNhbFdpZHRoKCksIHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxX
aWR0aCk7CiAgICAgaWYgKCF3aWR0aCkKLSAgICAgICAgd2lkdGggPSBzaHJpbmtUb0ZpdFdpZHRo
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMu
d2lkdGgpOworICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgoZm9ybWF0dGluZ0NvbnRl
eHRSb290LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwog
CiAgICAgLy8gIzIKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5
Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB1c2VkSG9y
aXpvbnRhbFZhbHVlcyk7CkBAIC03NCwxMiArNzQsMTIgQEAgQ29udGVudEhlaWdodEFuZE1hcmdp
biBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrSGVpZ2h0QW5k
TWEKICAgICByZXR1cm4gY29tcGxpY2F0ZWRDYXNlcyhsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFs
VmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMpOwogfQogCi1PcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkVGV4dEluZGVu
dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgVXNlZEhvcml6
b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpIGNvbnN0CitP
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmNvbXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMp
IGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0SW5kZW50ID0gZm9ybWF0dGluZ0NvbnRleHRSb290LnN0
eWxlKCkudGV4dEluZGVudCgpOwogICAgIGlmICh0ZXh0SW5kZW50ID09IFJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dEluZGVudCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBJbmxp
bmVMYXlvdXRVbml0IHsgbWluaW11bVZhbHVlRm9yTGVuZ3RoKHRleHRJbmRlbnQsIGhvcml6b250
YWxDb25zdHJhaW50cy53aWR0aCkgfTsKKyAgICByZXR1cm4gSW5saW5lTGF5b3V0VW5pdCB7IG1p
bmltdW1WYWx1ZUZvckxlbmd0aCh0ZXh0SW5kZW50LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9n
aWNhbFdpZHRoKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCAzMDAyNjQxM2M1Mjc2NDhjZjFjZmFjNGI4OGM2YmMzZjhmNjQ5NjUxLi40ZGJiMjBjZGI5ZWRm
MzgzZDk0ZDIwM2FlZDM3ZDYzMmJkYmE2YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVGb3Jt
YXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXgKIHsKIH0KIAot
dm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRh
dGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6
OkNvbnN0cmFpbnRzJiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyYpCit2
b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0
aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
LCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJikKIHsKICAgICBhdXRvJiBncmlkID0gZm9ybWF0
dGluZ1N0YXRlKCkudGFibGVHcmlkKCk7CiAgICAgYXV0byYgY29sdW1uc0NvbnRleHQgPSBncmlk
LmNvbHVtbnNDb250ZXh0KCk7CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5zKCkKICAgICAgICAgICAg
ICAgICBpbnRyaW5zaWNXaWR0aCA9IExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250
ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4odGFibGVDZWxsQm94KSwgbGF5b3V0U3RhdGUoKSktPmNv
bXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwogICAgICAgICAgICAgaW50cmluc2lj
V2lkdGggPSBnZW9tZXRyeSgpLmNvbnN0cmFpbkJ5TWluTWF4V2lkdGgodGFibGVDZWxsQm94LCAq
aW50cmluc2ljV2lkdGgpOwogICAgICAgICAgICAgYXV0byBib3JkZXIgPSBnZW9tZXRyeSgpLmNv
bXB1dGVkQm9yZGVyKHRhYmxlQ2VsbEJveCk7Ci0gICAgICAgICAgICBhdXRvIHBhZGRpbmcgPSAq
Z2VvbWV0cnkoKS5jb21wdXRlZFBhZGRpbmcodGFibGVDZWxsQm94LCBVc2VkSG9yaXpvbnRhbFZh
bHVlcyB7IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyB7IHsgfSwgeyB9IH0gfSk7
CisgICAgICAgICAgICBhdXRvIHBhZGRpbmcgPSAqZ2VvbWV0cnkoKS5jb21wdXRlZFBhZGRpbmco
dGFibGVDZWxsQm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IEhvcml6b250YWxDb25zdHJhaW50
cyB7IHsgfSwgeyB9IH0gfSk7CiAKICAgICAgICAgICAgIGludHJpbnNpY1dpZHRoLT5leHBhbmQo
Ym9yZGVyLmhvcml6b250YWwud2lkdGgoKSArIHBhZGRpbmcuaG9yaXpvbnRhbC53aWR0aCgpKTsK
ICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5zZXRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
Rm9yQm94KHRhYmxlQ2VsbEJveCwgKmludHJpbnNpY1dpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0LmgKaW5kZXggMjAxZmMxNzViM2RmMWFjODYzZDMwNWY5YmI5ZTQ0NGI4NDQ1OWZkZS4u
OTlmNDFiMWI5NDE4YzBiYjQ0MDhhZjVmZWYxMjg0YWY2Y2E4ZmQ5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgVGFibGVGb3JtYXR0aW5nQ29u
dGV4dCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChUYWJsZUZvcm1hdHRpbmdDb250ZXh0KTsKIHB1YmxpYzoKICAgICBUYWJsZUZvcm1hdHRp
bmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBUYWJsZUZv
cm1hdHRpbmdTdGF0ZSYpOwotICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRp
b25TdGF0ZSYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYsIGNvbnN0
IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxh
eW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387121</attachid>
            <date>2020-01-08 11:56:19 -0800</date>
            <delta_ts>2020-01-09 07:20:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205944-20200108115618.patch</filename>
            <type>text/plain</type>
            <size>55627</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZhZTczY2IyMGYzZTBi
NmI4M2MxZDk2OTgwNjFjMWJhYjFiMmE2Zi4uZWUxNTA2M2FlOTM2NjMwOTI4YTcwYzNiN2Y5Y2Y2
OTZmNTUzNjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTAxLTA4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTW92ZSBDb25zdHJh
aW50cyBzdHJ1Y3Qgb3V0IG9mIFVzZWRIb3Jpem9udGFsKFZlcnRpY2FsKXZhbHVlcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTk0NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTg0MTU4OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZGVjb3VwbGlu
ZyB1c2VkIHZhbHVlcyBhbmQgY29uc3RyYWludHMuCisgICAgICAgIENlcnRhaW4gImNvbXB1dGUg
Z2VvbWV0cnkiIGZ1bmN0aW9ucyBvbmx5IG5lZWQgdGhlIGNvbnN0cmFpbnRzIHdoaWxlIG90aGVy
cyBvbmx5IG5lZWQgdGhlIHVzZWQgdmFsdWVzLiAKKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdl
b21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVCb3JkZXJBbmRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dO
b25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdl
b21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFu
ZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRz
Rm9yT3V0T2ZGbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JJbkZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnZlcnRpY2FsQ29u
c3RyYWludHNGb3JJbkZsb3cpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRTdWJ0cmVlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VXNlZEhvcml6b250YWxWYWx1ZXM6OlVzZWRIb3Jpem9udGFs
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VXNlZFZlcnRpY2FsVmFsdWVzOjpV
c2VkVmVydGljYWxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkSG9yaXpv
bnRhbFZhbHVlczo6Q29uc3RyYWludHM6OkNvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50czo6Q29uc3Ry
YWludHMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpw
bGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1h
cmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJl
cGxhY2VkV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRz
Rm9yTGluZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb21wdXRlZFRleHRJbmRlbnQgY29uc3QpOgorICAgICAgICAqIGxheW91dC90
YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5zKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3Jt
YXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaDoKKwogMjAyMC0wMS0wOCAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbkZsb3dDb250ZW50IHNob3VsZCB0YWtlIFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29u
c3RyYWludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IDgzMjg0MTJmYTcwNWQ2ZTg5NTc1ZDM0M2M5MTViZmVhNDhiYmM0M2EuLjljODA2ZmEyY2E1
YzBlOTU1MGExZmU2YWQ1Mjg0M2IxMWIwNzQxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNjYsNyArNjYsNyBAQCBMYXlvdXRTdGF0ZSYgRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dFN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9mb3JtYXR0
aW5nU3RhdGUubGF5b3V0U3RhdGUoKTsKIH0KIAotdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29u
c3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWlu
dHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3Ry
YWludHMpCit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRh
bEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgdmVy
dGljYWxDb25zdHJhaW50cykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpKTsKICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9IFVzZWRWZXJ0aWNhbFZh
bHVlcyB7IHZlcnRpY2FsQ29uc3RyYWludHMsIHsgfSB9OwpAQCAtNzYsNyArNzYsNyBAQCB2b2lk
IEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNv
bnN0IEJveCYgbGF5b3V0Qm94LAogICAgICAgICByZXR1cm4gZ2VvbWV0cnkoKS5vdXRPZkZsb3dI
b3Jpem9udGFsR2VvbWV0cnkobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZl
cnRpY2FsVmFsdWVzKTsKICAgICB9OwogCi0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9
IGhvcml6b250YWxDb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoID0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKICAgICBhdXRvIGhvcml6
b250YWxHZW9tZXRyeSA9IGNvbXB1dGUoeyB9KTsKICAgICBpZiAoYXV0byBtYXhXaWR0aCA9IGdl
b21ldHJ5KCkuY29tcHV0ZWRNYXhXaWR0aChsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KSkgewogICAgICAgICBhdXRvIG1heEhvcml6b250YWxHZW9tZXRyeSA9IGNvbXB1dGUobWF4V2lk
dGgpOwpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LAogICAgIGRpc3Bs
YXlCb3guc2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKGhvcml6b250YWxHZW9tZXRyeS5jb250
ZW50V2lkdGhBbmRNYXJnaW4uY29tcHV0ZWRNYXJnaW4pOwogfQogCi12b2lkIEZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91
dEJveCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiBob3Jpem9udGFs
Q29uc3RyYWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmIHZlcnRp
Y2FsQ29uc3RyYWludHMpCit2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93
VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWlu
dHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSk7CiAgICAgYXV0byBjb21wdXRlID0gWyZdKGNvbnN0IGF1dG8mIHVz
ZWRIb3Jpem9udGFsVmFsdWVzLCBjb25zdCBhdXRvJiB1c2VkVmVydGljYWxWYWx1ZXMpIHsKQEAg
LTEwNSw3ICsxMDUsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93
VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgYwogICAgIH07CiAKICAgICBh
dXRvIHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBob3Jpem9u
dGFsQ29uc3RyYWludHMgfTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp2ZXJ0
aWNhbENvbnN0cmFpbnRzLmhlaWdodDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9
ICp2ZXJ0aWNhbENvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7CiAgICAgYXV0byB2ZXJ0aWNhbEdl
b21ldHJ5ID0gY29tcHV0ZSh1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVz
IHsgdmVydGljYWxDb25zdHJhaW50cywgeyB9IH0pOwogICAgIGlmIChhdXRvIG1heEhlaWdodCA9
IGdlb21ldHJ5KCkuY29tcHV0ZWRNYXhIZWlnaHQobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tI
ZWlnaHQpKSB7CiAgICAgICAgIGF1dG8gbWF4VmVydGljYWxHZW9tZXRyeSA9IGNvbXB1dGUodXNl
ZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHZlcnRpY2FsQ29uc3RyYWlu
dHMsIG1heEhlaWdodCB9KTsKQEAgLTEyNywxNCArMTI3LDE0IEBAIHZvaWQgRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjCiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IG5vbkNvbGxhcHNlZFZl
cnRpY2FsTWFyZ2luLCB7IH0gfSk7CiB9CiAKLXZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpv
bnRhbFZhbHVlczo6Q29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50KQordm9pZCBGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnQpCiB7
CiAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3gobGF5
b3V0Qm94KTsKICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcihnZW9tZXRyeSgpLmNvbXB1dGVkQm9y
ZGVyKGxheW91dEJveCkpOwogICAgIGRpc3BsYXlCb3guc2V0UGFkZGluZyhnZW9tZXRyeSgpLmNv
bXB1dGVkUGFkZGluZyhsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgaG9yaXpvbnRh
bENvbnN0cmFpbnQgfSkpOwogfQogCi12b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRP
ZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3Qg
VXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiByb290SG9yaXpvbnRhbENvbnN0cmFp
bnRzLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiByb290VmVydGljYWxD
b25zdHJhaW50cykKK3ZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRl
bnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmIHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29u
c3RyYWludHMmIHJvb3RWZXJ0aWNhbENvbnN0cmFpbnRzKQogewogICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJTdGFydDogbGF5b3V0IG91dC1v
Zi1mbG93IGNvbnRlbnQgLT4gY29udGV4dDogIiA8PCAmbGF5b3V0U3RhdGUoKSA8PCAiIHJvb3Q6
ICIgPDwgJnJvb3QoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKaW5kZXggZTMzNzJjZGUzZGQzYzRiMTFkZDEyODY4ODUzZGFmNTVlNTVkNTVkOS4uN2QxOGE5
ZDFlMTY3YWJhODJjMDM0OWQ4OTg1NDM2OTk4Yzc0OWMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTY0LDggKzY0LDggQEAgcHVibGljOgogICAgIEZv
cm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBG
b3JtYXR0aW5nU3RhdGUmKTsKICAgICB2aXJ0dWFsIH5Gb3JtYXR0aW5nQ29udGV4dCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBj
b25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVydGlj
YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJikgPSAwOwotICAgIHZvaWQgbGF5b3V0T3V0T2ZGbG93Q29u
dGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25z
dHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSA9IDA7
CisgICAgdm9pZCBsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOwog
CiAgICAgc3RydWN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgewogICAgICAgICB2b2lkIGV4
cGFuZChMYXlvdXRVbml0IGhvcml6b250YWxWYWx1ZSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJv
dGVjdGVkOgogICAgIGNvbnN0IEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGU7IH0KICAgICBGb3JtYXR0aW5nU3RhdGUmIGZv
cm1hdHRpbmdTdGF0ZSgpIHsgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlOyB9CiAKLSAgICB2b2lk
IGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jpem9udGFs
VmFsdWVzOjpDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmco
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlR2VvbWV0cnlDb25zdHJhaW50c0FmdGVyTGF5
b3V0KCkgY29uc3Q7CkBAIC0xNDIsMTAgKzE0MiwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAg
TGF5b3V0VW5pdCBjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJv
eCYpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3Ry
YWludHMgaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KGNvbnN0IERpc3BsYXk6OkJv
eCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpOwotICAgICAgICBzdGF0aWMgVXNlZFZlcnRpY2Fs
VmFsdWVzOjpDb25zdHJhaW50cyB2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KGNvbnN0
IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpOwotICAgICAgICBzdGF0aWMg
VXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIGhvcml6b250YWxDb25zdHJhaW50c0Zv
ckluRmxvdyhjb25zdCBEaXNwbGF5OjpCb3gmIGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5KTsKLSAg
ICAgICAgc3RhdGljIFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgdmVydGljYWxDb25z
dHJhaW50c0ZvckluRmxvdyhjb25zdCBEaXNwbGF5OjpCb3gmIGNvbnRhaW5pbmdCbG9ja0dlb21l
dHJ5KTsKKyAgICAgICAgc3RhdGljIEhvcml6b250YWxDb25zdHJhaW50cyBob3Jpem9udGFsQ29u
c3RyYWludHNGb3JPdXRPZkZsb3coY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tH
ZW9tZXRyeSk7CisgICAgICAgIHN0YXRpYyBWZXJ0aWNhbENvbnN0cmFpbnRzIHZlcnRpY2FsQ29u
c3RyYWludHNGb3JPdXRPZkZsb3coY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tH
ZW9tZXRyeSk7CisgICAgICAgIHN0YXRpYyBIb3Jpem9udGFsQ29uc3RyYWludHMgaG9yaXpvbnRh
bENvbnN0cmFpbnRzRm9ySW5GbG93KGNvbnN0IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2Nr
R2VvbWV0cnkpOworICAgICAgICBzdGF0aWMgVmVydGljYWxDb25zdHJhaW50cyB2ZXJ0aWNhbENv
bnN0cmFpbnRzRm9ySW5GbG93KGNvbnN0IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2Vv
bWV0cnkpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBmcmllbmQgY2xhc3MgRm9ybWF0dGlu
Z0NvbnRleHQ7CkBAIC0xOTcsOCArMTk3LDggQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAg
IHZvaWQgY29sbGVjdE91dE9mRmxvd0Rlc2NlbmRhbnRzSWZOZWVkZWQoKTsKLSAgICB2b2lkIGNv
bXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29u
c3RyYWludHMmKTsKLSAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnko
Y29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiwgY29u
c3QgVXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZU91
dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOworICAgIHZvaWQgY29tcHV0ZU91
dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJik7CiAKICAgICBXZWFrUHRyPGNv
bnN0IENvbnRhaW5lcj4gbV9yb290OwogICAgIEZvcm1hdHRpbmdTdGF0ZSYgbV9mb3JtYXR0aW5n
U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAKaW5kZXggNTgyODZlMTQ2OGE1OWNlMTk2NWVhODQ3MzViMTAwODYxMDc5MDEx
OC4uMjZkNjNiMjlhZmJjZmM3NmM3M2YzOWZkMWRjMTBkZTE2OGVlYjY1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAt
MjQ0LDcgKzI0NCw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpz
dGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpCiAgICAgICAgIEFTU0VSVCgh
Y29udGFpbmVyLT5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQo
KSk7CiAgICAgfQogICAgIC8vIE1vdmUgdGhlIHN0YXRpYyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0
aGUgcGFkZGluZyBib3guIFRoaXMgaXMgdmVyeSBzcGVjaWZpYyB0byBhYm9sdXRlbHkgcG9zaXRp
b25lZCBib3hlcy4KLSAgICByZXR1cm4gdG9wIC0gdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFp
bnRzLmNvbnRlbnRCb3hUb3A7CisgICAgcmV0dXJuIHRvcCAtIHVzZWRWZXJ0aWNhbFZhbHVlcy5j
b25zdHJhaW50cy5sb2dpY2FsVG9wOwogfQogCiBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25l
ZChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRI
b3Jpem9udGFsVmFsdWVzKSBjb25zdApAQCAtMjY3LDcgKzI2Nyw3IEBAIExheW91dFVuaXQgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRP
ZkZsb3dQb3NpCiAgICAgICAgIEFTU0VSVCghY29udGFpbmVyLT5pc1Bvc2l0aW9uZWQoKSB8fCBs
YXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7CiAgICAgfQogICAgIC8vIE1vdmUgdGhlIHN0
YXRpYyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgcGFkZGluZyBib3guIFRoaXMgaXMgdmVyeSBz
cGVjaWZpYyB0byBhYm9sdXRlbHkgcG9zaXRpb25lZCBib3hlcy4KLSAgICByZXR1cm4gbGVmdCAt
IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRCb3hMZWZ0OworICAgIHJl
dHVybiBsZWZ0IC0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbExlZnQ7
CiB9CiAKIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJpbmtUb0Zp
dFdpZHRoKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QsIExheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgpCkBAIC0yOTgsNyArMjk4LDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OnNocmlua1RvRml0V2lkdGgoY29uc3QgQm94JiBmb3JtYXR0aW5nUm8KIFZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNl
ZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jpem9u
dGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcywgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVz
JiB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwotICAgIEFTU0VS
VCh1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMuaGVpZ2h0KTsKKyAgICBBU1NFUlQodXNl
ZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQpOwogCiAgICAgLy8gMTAu
Ni40IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAgLy8K
QEAgLTMyNyw4ICszMjcsOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogICAgIGF1dG8mIGZv
cm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKICAgICBhdXRvJiBz
dHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0
dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja0hlaWdodCA9ICp1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMuaGVpZ2h0Owot
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25z
dHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp1c2VkVmVy
dGljYWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbEhlaWdodDsKKyAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbFdp
ZHRoOwogCiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2lj
YWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0gY29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoKTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogCiAgICAg
Ly8gRm9yIG91dC1vZi1mbG93IGVsZW1lbnRzIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1l
ZCBieSB0aGUgcGFkZGluZyBlZGdlIG9mIHRoZSBhbmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBv
aW50IHRoZSBwb3NpdGlvbmVkIHZhbHVlIGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0
aGUgcGFkZGluZyBib3guIExldCdzIGNvbnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRl
IHN5c3RlbS4KLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1
c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWludHMuY29udGVudEJveFRvcDsKKyAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkVmVydGljYWxWYWx1ZXMuY29u
c3RyYWludHMubG9naWNhbFRvcDsKICAgICAqdG9wICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdW
ZXJ0aWNhbEVkZ2U7CiAgICAgKmJvdHRvbSArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGlj
YWxFZGdlOwogCkBAIC00NDcsNyArNDQ3LDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKICAg
ICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAg
ICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBib3hHZW9tZXRy
eSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYXV0
byBjb250YWluaW5nQmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRz
LndpZHRoOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZh
bHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGg7CiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKTsKICAgICAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RB
dXRvKHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTU0OSw3
ICs1NDksNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogCiAgICAgLy8gRm9yIG91dC1vZi1m
bG93IGVsZW1lbnRzIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1lZCBieSB0aGUgcGFkZGlu
ZyBlZGdlIG9mIHRoZSBhbmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwb3NpdGlv
bmVkIHZhbHVlIGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFkZGluZyBib3gu
IExldCdzIGNvbnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBh
dXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZh
bHVlcy5jb25zdHJhaW50cy5jb250ZW50Qm94TGVmdDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9j
a1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5s
b2dpY2FsTGVmdDsKICAgICAqbGVmdCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxF
ZGdlOwogICAgICpyaWdodCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwog
CkBAIC01NjAsNyArNTYwLDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKIFZlcnRpY2FsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFs
dWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcywgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJiB1c2Vk
VmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7Ci0gICAgQVNTRVJUKHVzZWRW
ZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5oZWlnaHQpOworICAgIEFTU0VSVCh1c2VkVmVydGlj
YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbEhlaWdodCk7CiAKICAgICAvLyAxMC42LjUgQWJz
b2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8vCkBAIC01NzUsOCAr
NTc1LDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKICAgICBhdXRvJiBmb3JtYXR0aW5nQ29u
dGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlv
dXRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0
Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tIZWln
aHQgPSAqdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmhlaWdodDsKLSAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMud2lk
dGg7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSAqdXNlZFZlcnRpY2FsVmFsdWVz
LmNvbnN0cmFpbnRzLmxvZ2ljYWxIZWlnaHQ7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0
aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKIAogICAg
IGF1dG8gdG9wID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubG9naWNhbEJvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC02
MjcsNyArNjI3LDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKIAogICAgIC8vIEZvciBvdXQt
b2YtZmxvdyBlbGVtZW50cyB0aGUgY29udGFpbmluZyBibG9jayBpcyBmb3JtZWQgYnkgdGhlIHBh
ZGRpbmcgZWRnZSBvZiB0aGUgYW5jZXN0b3IuCiAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcG9z
aXRpb25lZCB2YWx1ZSBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIHBhZGRpbmcg
Ym94LiBMZXQncyBjb252ZXJ0IGl0IHRvIGJvcmRlciBib3ggY29vcmRpbmF0ZSBzeXN0ZW0uCi0g
ICAgYXV0byBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlID0gdXNlZFZlcnRpY2Fs
VmFsdWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRCb3hUb3A7CisgICAgYXV0byBjb250YWluaW5nQmxv
Y2tQYWRkaW5nVmVydGljYWxFZGdlID0gdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmxv
Z2ljYWxUb3A7CiAgICAgKnRvcCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdl
OwogICAgICpib3R0b20gKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKIApA
QCAtNjYwLDcgKzY2MCw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21lCiAgICAgYXV0byYgZm9y
bWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0
eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0
aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3Ry
YWludHMubG9naWNhbFdpZHRoOwogICAgIGF1dG8gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCk7CiAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2lj
YWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTczNSw3ICs3MzUsNyBAQCBIb3Jp
em9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBs
YWNlZEhvcml6b250YWxHZW9tZQogCiAgICAgLy8gRm9yIG91dC1vZi1mbG93IGVsZW1lbnRzIHRo
ZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1lZCBieSB0aGUgcGFkZGluZyBlZGdlIG9mIHRoZSBh
bmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwb3NpdGlvbmVkIHZhbHVlIGlzIGlu
IHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFkZGluZyBib3guIExldCdzIGNvbnZlcnQg
aXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRlIHN5c3RlbS4KLSAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50
cy5jb250ZW50Qm94TGVmdDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNh
bEVkZ2UgPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsTGVmdDsKICAg
ICAqbGVmdCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwogICAgICpyaWdo
dCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwogCkBAIC03ODgsOSArNzg4
LDkgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWEKICAgICAvLyAjMQogICAgIGF1dG8gdXNlZEhv
cml6b250YWxsTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJnaW4geyBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52
YWx1ZU9yKDApIH07CiAgICAgLy8gIzIKLSAgICBhdXRvIHdpZHRoID0gdXNlZEhvcml6b250YWxW
YWx1ZXMud2lkdGggPyB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkQ29udGVu
dFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMud2lkdGgp
OworICAgIGF1dG8gd2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVzZWRIb3Jp
em9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lkdGgobGF5b3V0Qm94LCB1c2Vk
SG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAgIGlmICghd2lk
dGgpCi0gICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRCb3gsIHVzZWRIb3Jp
em9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLndpZHRoKTsKKyAgICAgICAgd2lkdGggPSBzaHJpbmtU
b0ZpdFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9n
aWNhbFdpZHRoKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91
dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gZmxvYXRpbmcgbm9uLXJlcGxhY2VkIC0+
IHdpZHRoKCIgPDwgKndpZHRoIDw8ICJweCkgbWFyZ2luKCIgPDwgdXNlZEhvcml6b250YWxsTWFy
Z2luLnN0YXJ0IDw8ICJweCwgIiA8PCB1c2VkSG9yaXpvbnRhbGxNYXJnaW4uZW5kIDw8ICJweCkg
LT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBDb250ZW50
V2lkdGhBbmRNYXJnaW4geyAqd2lkdGgsIHVzZWRIb3Jpem9udGFsbE1hcmdpbiwgY29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luIH07CkBAIC04NzgsNyArODc4LDcgQEAgQ29udGVudEhlaWdodEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5k
TWFyZ2kKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gcmVw
bGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsKIAotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZl
cnRpY2FsVmFsdWVzLmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6
IGNvbXB1dGVkQ29udGVudEhlaWdodChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25z
dHJhaW50cy5oZWlnaHQpOworICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2FsVmFsdWVzLmhl
aWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkQ29udGVu
dEhlaWdodChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2Fs
SGVpZ2h0KTsKICAgICBhdXRvIGhlaWdodElzQXV0byA9ICF1c2VkVmVydGljYWxWYWx1ZXMuaGVp
Z2h0ICYmIGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpOwogICAgIGF1dG8gd2lkdGhJc0F1dG8gPSBz
dHlsZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKTsKIApAQCAtOTQzLDkgKzk0Myw5IEBAIENvbnRl
bnRXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oCiAgICAgYXV0byByZXBsYWNlZCA9IGxheW91dEJveC5yZXBsYWNl
ZCgpOwogICAgIEFTU0VSVChyZXBsYWNlZCk7CiAKLSAgICBhdXRvIHdpZHRoID0gdXNlZEhvcml6
b250YWxWYWx1ZXMud2lkdGggPyB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVk
Q29udGVudFdpZHRoKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMu
d2lkdGgpOworICAgIGF1dG8gd2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVz
ZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0ZWRDb250ZW50V2lkdGgobGF5b3V0Qm94
LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAgIGF1
dG8gaGVpZ2h0SXNBdXRvID0gaXNIZWlnaHRBdXRvKGxheW91dEJveCk7Ci0gICAgYXV0byBoZWln
aHQgPSBjb21wdXRlZENvbnRlbnRIZWlnaHQobGF5b3V0Qm94LCB1c2VkVmVydGljYWxWYWx1ZXMg
PyB1c2VkVmVydGljYWxWYWx1ZXMtPmNvbnN0cmFpbnRzLmhlaWdodCA6IFdURjo6bnVsbG9wdCk7
CisgICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZENvbnRlbnRIZWlnaHQobGF5b3V0Qm94LCB1c2Vk
VmVydGljYWxWYWx1ZXMgPyB1c2VkVmVydGljYWxWYWx1ZXMtPmNvbnN0cmFpbnRzLmxvZ2ljYWxI
ZWlnaHQgOiBXVEY6Om51bGxvcHQpOwogCiAgICAgaWYgKCF3aWR0aCAmJiBoZWlnaHRJc0F1dG8g
JiYgcmVwbGFjZWQtPmhhc0ludHJpbnNpY1dpZHRoKCkpIHsKICAgICAgICAgLy8gIzEKQEAgLTk4
Niw3ICs5ODYsNyBAQCBMYXlvdXRTaXplIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJveAogICAgIC8vIDMuIElmIG5laXRo
ZXIgaXMgJ2F1dG8nLCAnYm90dG9tJyBpcyBpZ25vcmVkIChpLmUuLCB0aGUgdXNlZCB2YWx1ZSBv
ZiAnYm90dG9tJyB3aWxsIGJlIG1pbnVzIHRoZSB2YWx1ZSBvZiAndG9wJykuCiAKICAgICBhdXRv
JiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lk
dGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9n
aWNhbFdpZHRoOwogCiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxl
LmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKQEAgLTEwNjMsNyArMTA2Myw3IEBAIE9wdGlvbmFsPEVkZ2VzPiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBCb3gmIGxheW91dEJv
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBzdHlsZSA9IGxheW91
dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpv
bnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbFdpZHRoOwogICAg
IExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUGFk
ZGluZ10gLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3gpOwogICAgIHJldHVybiBFZGdlcyB7
CiAgICAgICAgIHsgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ0xlZnQoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nUmlnaHQoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpIH0sCkBAIC0xMDc0LDE0ICsxMDc0LDE0IEBAIE9wdGlvbmFsPEVkZ2Vz
PiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBCb3gm
IGxheW91dEJvCiBDb21wdXRlZEhvcml6b250YWxNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNv
bnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsK
ICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3Ry
YWludHMubG9naWNhbFdpZHRoOwogICAgIHJldHVybiB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8o
c3R5bGUubWFyZ2luU3RhcnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLCBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLm1hcmdpbkVuZCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfTsKIH0K
IAogQ29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkVmVydGljYWxNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKIHsKICAgICBhdXRvJiBz
dHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGgg
PSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNh
bFdpZHRoOwogICAgIHJldHVybiB7IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2lu
QmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhz
dHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfTsKIH0KIApAQCAtMTEw
NywyNCArMTEwNywyNCBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJh
aW50cyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnN0cgogICAgIHJldHVybiBpbnRy
aW5zaWNXaWR0aDsKIH0KIAotVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93
KGNvbnN0IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCitIb3Jpem9udGFs
Q29uc3RyYWludHMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3Ry
YWludHNGb3JPdXRPZkZsb3coY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9t
ZXRyeSkKIHsKLSAgICByZXR1cm4gVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsg
Y29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveExlZnQoKSwgY29udGFpbmluZ0Jsb2Nr
R2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCkgfTsKKyAgICByZXR1cm4gSG9yaXpvbnRhbENvbnN0
cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveExlZnQoKSwgY29udGFp
bmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCkgfTsKIH0KIAotVXNlZFZlcnRpY2Fs
VmFsdWVzOjpDb25zdHJhaW50cyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnZlcnRpY2Fs
Q29uc3RyYWludHNGb3JPdXRPZkZsb3coY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxv
Y2tHZW9tZXRyeSkKK1ZlcnRpY2FsQ29uc3RyYWludHMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93KGNvbnN0IERpc3BsYXk6OkJveCYg
Y29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCiB7Ci0gICAgcmV0dXJuIFVzZWRWZXJ0aWNhbFZhbHVl
czo6Q29uc3RyYWludHMgeyBjb250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5nQm94VG9wKCks
IGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5LnBhZGRpbmdCb3hIZWlnaHQoKSB9OworICAgIHJldHVy
biBWZXJ0aWNhbENvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0Jv
eFRvcCgpLCBjb250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5nQm94SGVpZ2h0KCkgfTsKIH0K
IAotVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9ySW5GbG93KGNvbnN0IERpc3BsYXk6OkJv
eCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCitIb3Jpem9udGFsQ29uc3RyYWludHMgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JJbkZsb3coY29u
c3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSkKIHsKLSAgICByZXR1cm4g
VXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0
cnkuY29udGVudEJveExlZnQoKSwgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29udGVudEJveFdp
ZHRoKCkgfTsKKyAgICByZXR1cm4gSG9yaXpvbnRhbENvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Js
b2NrR2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29u
dGVudEJveFdpZHRoKCkgfTsKIH0KIAotVXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnZlcnRpY2FsQ29uc3RyYWludHNGb3JJbkZsb3co
Y29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSkKK1ZlcnRpY2FsQ29u
c3RyYWludHMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojp2ZXJ0aWNhbENvbnN0cmFpbnRz
Rm9ySW5GbG93KGNvbnN0IERpc3BsYXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCiB7
Ci0gICAgcmV0dXJuIFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBjb250YWluaW5n
QmxvY2tHZW9tZXRyeS5jb250ZW50Qm94VG9wKCksIHsgfSB9OworICAgIHJldHVybiBWZXJ0aWNh
bENvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29udGVudEJveFRvcCgpLCB7
IH0gfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4
IGFiYzIyMzEwZWMzODI5MmNhNDM1NmQyYjgyZDAxNjM3OWE5YzA5M2UuLmRlMWYzNjM4YjIyYzUz
ZWVkNzUzMjNkYzYwMmQ2MzYxM2UzNzdjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9MYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
Q29udGV4dC5jcHAKQEAgLTk1LDggKzk1LDggQEAgdm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXRG
b3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ28KICAg
ICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0
dGluZ0NvbnRleHRSb290LCBsYXlvdXRTdGF0ZSgpKTsKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
bGF5b3V0U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZvcm1hdHRpbmdDb250ZXh0Um9v
dCk7CiAKLSAgICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IFVzZWRIb3Jpem9udGFsVmFs
dWVzOjpDb25zdHJhaW50cyB7IGRpc3BsYXlCb3guY29udGVudEJveExlZnQoKSwgZGlzcGxheUJv
eC5jb250ZW50Qm94V2lkdGgoKSB9OwotICAgIGF1dG8gdmVydGljYWxDb25zdHJhaW50cyA9IFVz
ZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hUb3Ao
KSwgeyB9IH07CisgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBIb3Jpem9udGFsQ29u
c3RyYWludHMgeyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCksIGRpc3BsYXlCb3guY29udGVu
dEJveFdpZHRoKCkgfTsKKyAgICBhdXRvIHZlcnRpY2FsQ29uc3RyYWludHMgPSBWZXJ0aWNhbENv
bnN0cmFpbnRzIHsgZGlzcGxheUJveC5jb250ZW50Qm94VG9wKCksIHsgfSB9OwogICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBob3Jp
em9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOwogCiAgICAgLy8gRklYTUU6
IGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZSgpIGRvZXMgbm90IHBlcmZvcm0gbGF5b3V0
IG9uIHRoZSByb290LCByYXRoZXIgaXQgbGF5cyBvdXQgdGhlIHJvb3QncyBjb250ZW50LgpAQCAt
MTA0LDggKzEwNCw4IEBAIHZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvCiAgICAgLy8gSXQgYWxzbyBt
ZWFucyB0aGF0IHRoZSBmb3JtYXR0aW5nQ29udGV4dFJvb3QgaGFzIHRvIGhhdmUgYSB2YWxpZC9j
bGVhbiBnZW9tZXRyeSBhdCB0aGlzIHBvaW50LgogICAgIC8vIEN1cnJlbnRseSB0aGUgaW50ZWdy
YXRpb24gY29kZXBhdGggZG9lcyBub3QgZ3VhcmFudGVlIGl0IGFuZCB0aGF0J3MgZmluZSBhcyBs
b25nIGFzIHdlIGxheW91dCBpbmZsb3cgY29udGVudCBvbmx5LgogICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dElu
dGVncmF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRz
ID0gVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgZGlzcGxheUJveC5wYWRkaW5n
Qm94TGVmdCgpLCBkaXNwbGF5Qm94LnBhZGRpbmdCb3hXaWR0aCgpIH07Ci0gICAgICAgIGF1dG8g
dmVydGljYWxDb25zdHJhaW50cyA9IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBk
aXNwbGF5Qm94LnBhZGRpbmdCb3hUb3AoKSwgZGlzcGxheUJveC5wYWRkaW5nQm94SGVpZ2h0KCkg
fTsKKyAgICAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBIb3Jpem9udGFsQ29uc3Ry
YWludHMgeyBkaXNwbGF5Qm94LnBhZGRpbmdCb3hMZWZ0KCksIGRpc3BsYXlCb3gucGFkZGluZ0Jv
eFdpZHRoKCkgfTsKKyAgICAgICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnRzID0gVmVydGljYWxD
b25zdHJhaW50cyB7IGRpc3BsYXlCb3gucGFkZGluZ0JveFRvcCgpLCBkaXNwbGF5Qm94LnBhZGRp
bmdCb3hIZWlnaHQoKSB9OwogICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZG
bG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0
aWNhbENvbnN0cmFpbnRzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0VW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5o
CmluZGV4IDQ3ZjgwMjQ2MmIyYjM0NDRhYTkwN2QyYTg0MmVjZjk0MjY4NmFkMjkuLjVlNWUxMDNh
ZDZiMmU1YTYyMDJmMTk1ZWJlYjk4ZmFlYzY5ZjJkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRVbml0cy5oCkBAIC0xNTEsNTQgKzE1MSw0MiBAQCBzdHJ1Y3QgVmVydGljYWxHZW9tZXRyeSB7
CiAgICAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luOwogfTsK
IAorc3RydWN0IEhvcml6b250YWxDb25zdHJhaW50cyB7CisgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdDsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aDsKK307CisKK3N0cnVjdCBWZXJ0aWNh
bENvbnN0cmFpbnRzIHsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3A7CisgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodDsKK307CisKIHN0cnVjdCBVc2VkSG9yaXpvbnRhbFZh
bHVlcyB7Ci0gICAgc3RydWN0IENvbnN0cmFpbnRzIHsKLSAgICAgICAgZXhwbGljaXQgQ29uc3Ry
YWludHMoTGF5b3V0VW5pdCBjb250ZW50Qm94TGVmdCwgTGF5b3V0VW5pdCBob3Jpem9udGFsQ29u
c3RyYWludCkKLSAgICAgICAgICAgIDogY29udGVudEJveExlZnQoY29udGVudEJveExlZnQpCi0g
ICAgICAgICAgICAsIHdpZHRoKGhvcml6b250YWxDb25zdHJhaW50KQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQotICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hMZWZ0OwotICAgICAgICBMYXlv
dXRVbml0IHdpZHRoOwotICAgIH07Ci0KLSAgICBleHBsaWNpdCBVc2VkSG9yaXpvbnRhbFZhbHVl
cyhDb25zdHJhaW50cyBjb25zdHJhaW50cykKKyAgICBleHBsaWNpdCBVc2VkSG9yaXpvbnRhbFZh
bHVlcyhIb3Jpem9udGFsQ29uc3RyYWludHMgY29uc3RyYWludHMpCiAgICAgICAgIDogY29uc3Ry
YWludHMoY29uc3RyYWludHMpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IFVzZWRIb3Jp
em9udGFsVmFsdWVzKENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzLCBPcHRpb25hbDxMYXlvdXRVbml0
PiB3aWR0aCwgT3B0aW9uYWw8VXNlZEhvcml6b250YWxNYXJnaW4+IG1hcmdpbikKKyAgICBleHBs
aWNpdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyhIb3Jpem9udGFsQ29uc3RyYWludHMgY29uc3RyYWlu
dHMsIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoLCBPcHRpb25hbDxVc2VkSG9yaXpvbnRhbE1h
cmdpbj4gbWFyZ2luKQogICAgICAgICA6IGNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKQogICAgICAg
ICAsIHdpZHRoKHdpZHRoKQogICAgICAgICAsIG1hcmdpbihtYXJnaW4pCiAgICAgewogICAgIH0K
IAotICAgIENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzOworICAgIEhvcml6b250YWxDb25zdHJhaW50
cyBjb25zdHJhaW50czsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aDsKICAgICBPcHRp
b25hbDxVc2VkSG9yaXpvbnRhbE1hcmdpbj4gbWFyZ2luOwogfTsKIAogc3RydWN0IFVzZWRWZXJ0
aWNhbFZhbHVlcyB7Ci0gICAgc3RydWN0IENvbnN0cmFpbnRzIHsKLSAgICAgICAgZXhwbGljaXQg
Q29uc3RyYWludHMoTGF5b3V0VW5pdCBjb250ZW50Qm94VG9wLCBPcHRpb25hbDxMYXlvdXRVbml0
PiB2ZXJ0aWNhbENvbnN0cmFpbnQgPSBXVEY6Om51bGxvcHQpCi0gICAgICAgICAgICA6IGNvbnRl
bnRCb3hUb3AoY29udGVudEJveFRvcCkKLSAgICAgICAgICAgICwgaGVpZ2h0KHZlcnRpY2FsQ29u
c3RyYWludCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgTGF5b3V0VW5pdCBjb250
ZW50Qm94VG9wOwotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7Ci0gICAgfTsK
LQotICAgIGV4cGxpY2l0IFVzZWRWZXJ0aWNhbFZhbHVlcyhDb25zdHJhaW50cyBjb25zdHJhaW50
cywgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0ID0geyB9KQorICAgIGV4cGxpY2l0IFVzZWRW
ZXJ0aWNhbFZhbHVlcyhWZXJ0aWNhbENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzLCBPcHRpb25hbDxM
YXlvdXRVbml0PiBoZWlnaHQgPSB7IH0pCiAgICAgICAgIDogY29uc3RyYWludHMoY29uc3RyYWlu
dHMpCiAgICAgICAgICwgaGVpZ2h0KGhlaWdodCkKICAgICB7CiAgICAgfQogCi0gICAgQ29uc3Ry
YWludHMgY29uc3RyYWludHM7CisgICAgVmVydGljYWxDb25zdHJhaW50cyBjb25zdHJhaW50czsK
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCBkODNkYzljZWIxMWNhMjg3Y2NjOWEwYTk1NzljMTBmMzdkODkw
NGQyLi42ZWI5MzliN2Y2NWIxOWNjNzM2OWI4NGMwNjE5MDIxMGViMzNmZmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRp
bmdDb250ZXgKIH0KIAogZW51bSBjbGFzcyBMYXlvdXREaXJlY3Rpb24geyBDaGlsZCwgU2libGlu
ZyB9Owotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KElu
dmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgVXNlZEhvcml6b250YWxW
YWx1ZXM6OkNvbnN0cmFpbnRzJiByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBVc2Vk
VmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiByb290VmVydGljYWxDb25zdHJhaW50cykKK3Zv
aWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRp
b25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYg
cm9vdEhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYgcm9v
dFZlcnRpY2FsQ29uc3RyYWludHMpCiB7CiAgICAgLy8gOS40LjEgQmxvY2sgZm9ybWF0dGluZyBj
b250ZXh0cwogICAgIC8vIEluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LCBib3hlcyBhcmUg
bGFpZCBvdXQgb25lIGFmdGVyIHRoZSBvdGhlciwgdmVydGljYWxseSwgYmVnaW5uaW5nIGF0IHRo
ZSB0b3Agb2YgYSBjb250YWluaW5nIGJsb2NrLgpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFs
PExheW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRBdmFpbGFibGVXaWR0aEZv
ckZsb2F0QXZvaWRlcihjCiAgICAgcmV0dXJuIGF2YWlsYWJsZVdpZHRoOwogfQogCi12b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBC
b3gmIGxheW91dEJveCwgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIEludmFsaWRh
dGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6
OkNvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZh
bHVlczo6Q29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCit2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGxheW91
dEJveCwgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIEludmFsaWRhdGlvblN0YXRl
JiBpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9u
dGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3Ry
YWludHMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250
ZXh0KCkpOwogICAgIC8vIFN0YXJ0IGxheWluZyBvdXQgdGhpcyBmb3JtYXR0aW5nIHJvb3QgaW4g
dGhlIGZvcm1hdHRpbmcgY29udGVueHQgaXQgbGl2ZXMgaW4uCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3Qo
Y29uc3QgQm94JiBsYXlvdXRCb3gsIEYKICAgICBhdXRvIGFkanVzdGVkSG9yaXpvbnRhbENvbnN0
cmFpbnRzID0gaG9yaXpvbnRhbENvbnN0cmFpbnRzOwogICAgIGF1dG8gaG9yaXpvbnRhbEF2YWls
YWJsZVNwYWNlSXNDb25zdHJhaW5lZEJ5RXhpc3RpbmdGbG9hdHMgPSBsYXlvdXRCb3guaXNGbG9h
dEF2b2lkZXIoKSAmJiAhbGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCk7CiAgICAgaWYg
KGhvcml6b250YWxBdmFpbGFibGVTcGFjZUlzQ29uc3RyYWluZWRCeUV4aXN0aW5nRmxvYXRzKQot
ICAgICAgICBhZGp1c3RlZEhvcml6b250YWxDb25zdHJhaW50cy53aWR0aCA9IHVzZWRBdmFpbGFi
bGVXaWR0aEZvckZsb2F0QXZvaWRlcihmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCkudmFsdWVP
cihob3Jpem9udGFsQ29uc3RyYWludHMud2lkdGgpOworICAgICAgICBhZGp1c3RlZEhvcml6b250
YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGggPSB1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2
b2lkZXIoZmxvYXRpbmdDb250ZXh0LCBsYXlvdXRCb3gpLnZhbHVlT3IoaG9yaXpvbnRhbENvbnN0
cmFpbnRzLmxvZ2ljYWxXaWR0aCk7CiAKICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhsYXlv
dXRCb3gsIGFkanVzdGVkSG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICBjb21wdXRlU3RhdGlj
VmVydGljYWxQb3NpdGlvbihmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCwgdmVydGljYWxDb25z
dHJhaW50cyk7CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXlvdXRCb3gsIEYKICAg
ICAgICAgY29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhmbG9hdGluZ0NvbnRleHQsIGxheW91
dEJveCk7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3Np
dGlvbmVkQ2hpbGRyZW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPFVzZWRIb3Jpem9u
dGFsVmFsdWVzOjpDb25zdHJhaW50cz4gaG9yaXpvbnRhbENvbnN0cmFpbnRzKQordm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihjb25zdCBC
b3gmIGxheW91dEJveCwgT3B0aW9uYWw8SG9yaXpvbnRhbENvbnN0cmFpbnRzPiBob3Jpem9udGFs
Q29uc3RyYWludHMpCiB7CiAgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IEJveCYgbGF5b3V0Qm94LAog
ICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJF
bmQ6IG1vdmUgaW4tZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVuIC0+IHBhcmVudDogIiA8PCAmbGF5
b3V0Qm94KTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGlj
VmVydGljYWxQb3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwg
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWlu
dHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRp
bmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVmVydGljYWxDb25zdHJhaW50
cyYgdmVydGljYWxDb25zdHJhaW50cykKIHsKICAgICBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5
Qm94KGxheW91dEJveCkuc2V0VG9wKGdlb21ldHJ5KCkuc3RhdGljVmVydGljYWxQb3NpdGlvbihs
YXlvdXRCb3gsIFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHZlcnRpY2FsQ29uc3RyYWludHMgfSkpOwog
ICAgIGlmIChsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKQpAQCAtMjUwLDEyICsyNTAsMTIgQEAg
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlv
bihjb25zdCBGbG9hdGluZ0NvbnRleHQKICAgICAgICAgY29tcHV0ZUVzdGltYXRlZFZlcnRpY2Fs
UG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdChsYXlvdXRCb3gpOwogfQogCi12b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYgaG9y
aXpvbnRhbENvbnN0cmFpbnRzKQordm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
U3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cykKIHsKICAgICBmb3JtYXR0
aW5nU3RhdGUoKS5kaXNwbGF5Qm94KGxheW91dEJveCkuc2V0TGVmdChnZW9tZXRyeSgpLnN0YXRp
Y0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgaG9y
aXpvbnRhbENvbnN0cmFpbnRzIH0pKTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlU3RhdGljUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0Nv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlczo6
Q29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgVXNlZFZlcnRpY2FsVmFs
dWVzOjpDb25zdHJhaW50cyYgdmVydGljYWxDb25zdHJhaW50cykKK3ZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYg
ZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWlu
dHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCiB7CiAgICAgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9z
aXRpb24oZmxvYXRpbmdDb250ZXh0LCBsYXlvdXRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMpOwog
ICAgIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24obGF5b3V0Qm94LCBob3Jpem9udGFs
Q29uc3RyYWludHMpOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQm
CiAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3gobGF5b3V0Qm94KS5zZXRUb3BM
ZWZ0KCphZGp1c3RlZFBvc2l0aW9uKTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRI
b3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQordm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0
cmFpbnRzKQogewogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1
c2VkV2lkdGgpIC0+IENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7CiAgICAgICAgIGF1dG8gdXNlZFZh
bHVlcyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB1c2Vk
V2lkdGgsIHsgfSB9OwpAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBV
CiAKICAgICBhdXRvIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IGNvbXB1dGUoeyB9KTsKIAotICAg
IGF1dG8gYXZhaWxhYmxlV2lkdGggPSBob3Jpem9udGFsQ29uc3RyYWludHMud2lkdGg7CisgICAg
YXV0byBhdmFpbGFibGVXaWR0aCA9IGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGg7
CiAgICAgaWYgKGF1dG8gbWF4V2lkdGggPSBnZW9tZXRyeSgpLmNvbXB1dGVkTWF4V2lkdGgobGF5
b3V0Qm94LCBhdmFpbGFibGVXaWR0aCkpIHsKICAgICAgICAgYXV0byBtYXhXaWR0aEFuZE1hcmdp
biA9IGNvbXB1dGUobWF4V2lkdGgpOwogICAgICAgICBpZiAoY29udGVudFdpZHRoQW5kTWFyZ2lu
LmNvbnRlbnRXaWR0aCA+IG1heFdpZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0aCkKQEAgLTQxMyw3
ICs0MTMsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1h
cmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVQogICAgIGRpc3BsYXlCb3guc2V0SG9y
aXpvbnRhbENvbXB1dGVkTWFyZ2luKGNvbnRlbnRXaWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdp
bik7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1h
cmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNv
bnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVl
czo6Q29uc3RyYWludHMmIHZlcnRpY2FsQ29uc3RyYWludHMpCit2b2lkIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNv
bnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBjb25zdCBW
ZXJ0aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzKQogewogICAgIGF1dG8gdXNl
ZEhvcml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGhvcml6b250YWxDb25z
dHJhaW50cyB9OwogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShhdXRvIHVzZWRWZXJ0aWNhbFZhbHVl
cykgLT4gQ29udGVudEhlaWdodEFuZE1hcmdpbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5o
CmluZGV4IGY5ZDkzMWQxNzFkNzgxNTExM2VjMDcxNmJhNzUyZDUyZDQ4NzY1NDMuLmUzZjc4NWY4
OTdjMWQ3YzgwYmZiZmY0Yzk0NTVmNzI5OGZhMjQ4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oCkBAIC00OCwxOCArNDgsMTggQEAgY2xhc3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCA6
IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgQmxvY2tGb3Jt
YXR0aW5nU3RhdGUmKTsKIAotICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRp
b25TdGF0ZSYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYsIGNvbnN0
IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxh
eW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiwgRmxv
YXRpbmdDb250ZXh0JiwgSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZh
bHVlczo6Q29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRz
Jik7Ci0gICAgdm9pZCBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihjb25zdCBCb3gmLCBP
cHRpb25hbDxVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHM+ID0gV1RGOjpudWxsb3B0
KTsKKyAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmLCBGbG9h
dGluZ0NvbnRleHQmLCBJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIHBsYWNlSW5GbG93
UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IEJveCYsIE9wdGlvbmFsPEhvcml6b250YWxDb25zdHJh
aW50cz4gPSBXVEY6Om51bGxvcHQpOwogCi0gICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJik7Ci0g
ICAgdm9pZCBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jp
em9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29u
c3RyYWludHMmKTsKKyAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBj
b25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIGNvbXB1dGVIZWlnaHRBbmRN
YXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVy
dGljYWxDb25zdHJhaW50cyYpOwogCi0gICAgdm9pZCBjb21wdXRlU3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uKGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50
cyYpOwotICAgIHZvaWQgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgRmxvYXRp
bmdDb250ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJh
aW50cyYpOwotICAgIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYsIGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50
cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmKTsKKyAgICB2b2lkIGNv
bXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJik7CisgICAgdm9pZCBjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihj
b25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmLCBjb25zdCBWZXJ0aWNhbENvbnN0cmFp
bnRzJik7CisgICAgdm9pZCBjb21wdXRlU3RhdGljUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250
ZXh0JiwgY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVy
dGljYWxDb25zdHJhaW50cyYpOwogICAgIHZvaWQgY29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29u
c3QgRmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94Jik7CiAgICAgdm9pZCBjb21wdXRlUG9zaXRp
b25Ub0F2b2lkRmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZmJlM2Fk
MmZkZjQyNWYzY2E0ZTE0NGI0MDUzZjQwMDc2OWQyYTIyYy4uOGQ1OTkxNWUzYzI1YzNhYjhjY2Y1
M2ZhMWRkMWUyYmZiYjllZmQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFu
CiAgICAgICAgIC8vIDUuIElmIGJvdGggJ21hcmdpbi1sZWZ0JyBhbmQgJ21hcmdpbi1yaWdodCcg
YXJlICdhdXRvJywgdGhlaXIgdXNlZCB2YWx1ZXMgYXJlIGVxdWFsLiBUaGlzIGhvcml6b250YWxs
eSBjZW50ZXJzIHRoZSBlbGVtZW50IHdpdGggcmVzcGVjdCB0byB0aGUKICAgICAgICAgLy8gICAg
ZWRnZXMgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suCiAKLSAgICAgICAgYXV0byBjb250YWluaW5n
QmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLndpZHRoOworICAg
ICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29u
c3RyYWludHMubG9naWNhbFdpZHRoOwogICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKIAogICAgICAgICBhdXRv
IHdpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGggPyB1c2VkSG9yaXpvbnRhbFZhbHVl
cy53aWR0aCA6IGNvbXB1dGVkQ29udGVudFdpZHRoKGxheW91dEJveCwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwpAQCAtMjI1LDE0ICsyMjUsMTQgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGwKICAg
ICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0
KCkuZ2VvbWV0cnlGb3JCb3goKnByZXZpb3VzSW5GbG93U2libGluZyk7CiAgICAgICAgIHJldHVy
biBwcmV2aW91c0luRmxvd0JveEdlb21ldHJ5LmJvdHRvbSgpICsgcHJldmlvdXNJbkZsb3dCb3hH
ZW9tZXRyeS5tYXJnaW5BZnRlcigpOwogICAgIH0KLSAgICByZXR1cm4gdXNlZFZlcnRpY2FsVmFs
dWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRCb3hUb3A7CisgICAgcmV0dXJuIHVzZWRWZXJ0aWNhbFZh
bHVlcy5jb25zdHJhaW50cy5sb2dpY2FsVG9wOwogfQogCiBMYXlvdXRVbml0IEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9yaXpvbnRhbFZh
bHVlcykgY29uc3QKIHsKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJl
bi5odG1sI2Jsb2NrLWZvcm1hdHRpbmcKICAgICAvLyBJbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29u
dGV4dCwgZWFjaCBib3gncyBsZWZ0IG91dGVyIGVkZ2UgdG91Y2hlcyB0aGUgbGVmdCBlZGdlIG9m
IHRoZSBjb250YWluaW5nIGJsb2NrIChmb3IgcmlnaHQtdG8tbGVmdCBmb3JtYXR0aW5nLCByaWdo
dCBlZGdlcyB0b3VjaCkuCi0gICAgcmV0dXJuIHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFp
bnRzLmNvbnRlbnRCb3hMZWZ0ICsgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChs
YXlvdXRCb3gpLm1hcmdpblN0YXJ0KCk7CisgICAgcmV0dXJuIHVzZWRIb3Jpem9udGFsVmFsdWVz
LmNvbnN0cmFpbnRzLmxvZ2ljYWxMZWZ0ICsgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZv
ckJveChsYXlvdXRCb3gpLm1hcmdpblN0YXJ0KCk7CiB9CiAKIFBvaW50IEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwg
Y29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXMmIHVzZWRIb3Jpem9udGFsVmFsdWVzLCBjb25zdCBV
c2VkVmVydGljYWxWYWx1ZXMmIHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKQEAgLTI4MSw3ICsy
ODEsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKGNvbgogICAgICAgICAgICAgcmV0dXJuIGluRmxv
d05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVl
cyk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIHRhYmxlICJmaXQtY29udGVudCBzaXpl
IiBiZWhhdmlvciBoYW5kbGluZy4gTm90IGluIHRoZSBzcGVjIHRob3VnaC4KICAgICAgICAgLy8g
VGFibGUgcmV0dXJucyBpdHMgZmluYWwgd2lkdGggYXMgbWluL21heC4gVXNlIHRoaXMgZmluYWwg
d2lkdGggdmFsdWUgdG8gY29tcHV0ZWQgaG9yaXpvbnRhbCBtYXJnaW5zIGV0Yy4KLSAgICAgICAg
YXV0byB1c2VkV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVzZWRIb3Jpem9u
dGFsVmFsdWVzLndpZHRoIDogc2hyaW5rVG9GaXRXaWR0aChsYXlvdXRCb3gsIHVzZWRIb3Jpem9u
dGFsVmFsdWVzLmNvbnN0cmFpbnRzLndpZHRoKTsKKyAgICAgICAgYXV0byB1c2VkV2lkdGggPSB1
c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoIDog
c2hyaW5rVG9GaXRXaWR0aChsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFp
bnRzLmxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIHJldHVybiBpbkZsb3dOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgeyB1c2VkSG9yaXpvbnRh
bFZhbHVlcy5jb25zdHJhaW50cywgdXNlZFdpZHRoLCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5tYXJn
aW4gfSk7CiAgICAgfQogICAgIHJldHVybiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxh
eW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IDI0MjExYjc3OTQ5OTNkMWUxNjkxYWQyMmM0OTZlYzFlOWNlNjY4NDcu
LjIxODI2YTBlMGJlMGYwOGMzNWJiNDJlMGJiOTFiNmU3MDYwNzgzZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGlubGluZSBj
b25zdCBCb3gqIG5leHRJblByZU9yZGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb250
YWluZXImIHMKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0
aW9uU3RhdGUsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyYgaG9yaXp0
b25hbENvbnN0cmFpbnRzLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzJiB2
ZXJ0aWNhbENvbnN0cmFpbnRzKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXp0b25hbENvbnN0cmFpbnRzLCBjb25zdCBWZXJ0
aWNhbENvbnN0cmFpbnRzJiB2ZXJ0aWNhbENvbnN0cmFpbnRzKQogewogICAgIGlmICghcm9vdCgp
Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xOTIsNyAr
MTkyLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW4KICAgICB9CiAKICAgICBWZWN0b3I8Y29u
c3QgQm94Kj4gZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdDsKLSAgICBhdXRvIHVzZWRIb3Jpem9u
dGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBVc2VkSG9yaXpvbnRhbFZhbHVlczo6
Q29uc3RyYWludHMgeyAwX2x1LCAwX2x1IH0gfTsKKyAgICBhdXRvIHVzZWRIb3Jpem9udGFsVmFs
dWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBIb3Jpem9udGFsQ29uc3RyYWludHMgeyAwX2x1
LCAwX2x1IH0gfTsKICAgICBhdXRvKiBsYXlvdXRCb3ggPSByb290KCkuZmlyc3RJbkZsb3dPckZs
b2F0aW5nQ2hpbGQoKTsKICAgICB3aGlsZSAobGF5b3V0Qm94KSB7CiAgICAgICAgIGlmIChsYXlv
dXRCb3gtPmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkgewpAQCAtMjIyLDcgKzIyMiw3
IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEluCiAgICAgICAgICAgICBhdXRvIGNvbnRlbnRXaWR0
aCA9IChhdmFpbGFibGVXaWR0aCA/IGludHJpbnNpY1dpZHRocy0+bWF4aW11bSA6IGludHJpbnNp
Y1dpZHRocy0+bWluaW11bSkgLSBkaXNwbGF5Qm94Lmhvcml6b250YWxNYXJnaW5Cb3JkZXJBbmRQ
YWRkaW5nKCk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChjb250
ZW50V2lkdGgpOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gdXNlZEhvcml6b250YWxWYWx1ZXMg
PSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50
cyB7IDBfbHUsIHRvTGF5b3V0VW5pdChhdmFpbGFibGVXaWR0aCkgfSB9OworICAgICAgICBhdXRv
IHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBIb3Jpem9udGFs
Q29uc3RyYWludHMgeyAwX2x1LCB0b0xheW91dFVuaXQoYXZhaWxhYmxlV2lkdGgpIH0gfTsKICAg
ICAgICAgcmV0dXJuIGNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KHVzZWRIb3Jp
em9udGFsVmFsdWVzKTsKICAgICB9OwogCkBAIC0yNDAsNyArMjQwLDcgQEAgSW5saW5lTGF5b3V0
VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZvckNv
bnN0cmFpbnQoY28KICAgICBhdXRvIGxpbmVMYXlvdXRDb250ZXh0ID0gTGluZUxheW91dENvbnRl
eHQgeyAqdGhpcywgcm9vdCgpLCBpbmxpbmVJdGVtcyB9OwogICAgIHdoaWxlIChsZWFkaW5nSW5s
aW5lSXRlbUluZGV4IDwgaW5saW5lSXRlbXMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIE9ubHkgdGhl
IGhvcml6dG9uYWwgYXZhaWxhYmxlIHdpZHRoIGlzIGNvbnN0cmFpbmVkIHdoZW4gY29tcHV0aW5n
IGludHJpbnNpYyB3aWR0aC4KLSAgICAgICAgbGluZUJ1aWxkZXIuaW5pdGlhbGl6ZShMaW5lQnVp
bGRlcjo6Q29uc3RyYWludHMgeyB7IH0sIHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRz
LndpZHRoLCBmYWxzZSwgeyB9IH0pOworICAgICAgICBsaW5lQnVpbGRlci5pbml0aWFsaXplKExp
bmVCdWlsZGVyOjpDb25zdHJhaW50cyB7IHsgfSwgdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3Ry
YWludHMubG9naWNhbFdpZHRoLCBmYWxzZSwgeyB9IH0pOwogICAgICAgICBhdXRvIGxpbmVDb250
ZW50ID0gbGluZUxheW91dENvbnRleHQubGF5b3V0TGluZShsaW5lQnVpbGRlciwgbGVhZGluZ0lu
bGluZUl0ZW1JbmRleCwgeyB9KTsKIAogICAgICAgICBsZWFkaW5nSW5saW5lSXRlbUluZGV4ID0g
KmxpbmVDb250ZW50LnRyYWlsaW5nSW5saW5lSXRlbUluZGV4ICsgMTsKQEAgLTM3Nyw3ICszNzcs
NyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudElm
TmVlZGVkKCkKIExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29uc3RyYWludHNGb3JMaW5lKGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJiB1c2VkSG9y
aXpvbnRhbFZhbHVlcywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCkKIHsKICAgICBh
dXRvIGxpbmVMb2dpY2FsTGVmdCA9IGdlb21ldHJ5Rm9yQm94KHJvb3QoKSkuY29udGVudEJveExl
ZnQoKTsKLSAgICBhdXRvIGxpbmVMb2dpY2FsUmlnaHQgPSBsaW5lTG9naWNhbExlZnQgKyB1c2Vk
SG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53aWR0aDsKKyAgICBhdXRvIGxpbmVMb2dpY2Fs
UmlnaHQgPSBsaW5lTG9naWNhbExlZnQgKyB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50
cy5sb2dpY2FsV2lkdGg7CiAgICAgYXV0byBsaW5lSXNDb25zdHJhaW5lZEJ5RmxvYXQgPSBmYWxz
ZTsKIAogICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgcm9vdCgp
LCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBmNmJiMGZjNzRkZmVmNTcxZDI3NzViMDgwOTIwYmQ4
YWJiYzA3ZDE4Li5iZTg5MjYwMTYzZTVkZjRkMjgzY2YyN2VhYzRhY2YxZWE4ODdjYWEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOwogcHVibGljOgog
ICAgIElubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmKTsKLSAgICB2b2lkIGxheW91dEluRmxv
d0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlczo6
Q29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29t
cHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3
IEBAIHByaXZhdGU6CiAgICAgcHVibGljOgogICAgICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
IGlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IFVzZWRIb3Jpem9u
dGFsVmFsdWVzJiwgY29uc3QgVXNlZFZlcnRpY2FsVmFsdWVzJikgY29uc3Q7CiAgICAgICAgIENv
bnRlbnRXaWR0aEFuZE1hcmdpbiBpbmxpbmVCbG9ja1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYs
IGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzJik7Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IGNvbXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgY29uc3QgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJikgY29u
c3Q7CisgICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNvbXB1dGVkVGV4dEluZGVu
dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJikgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDI5N2QwNzA3MGZhOTM3OGM0M2UyYTI1OGYwNjQ3
MTg1NmMzN2Y0M2IuLjIwZGIxNGU0OGZmY2JjYjlhZjAwYzM1ZTA4MWUxMzZkOTFlMWI4NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC01
MSw5ICs1MSw5IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnCiAgICAgLy8gSWYgJ3dpZHRoJyBp
cyAnYXV0bycsIHRoZSB1c2VkIHZhbHVlIGlzIHRoZSBzaHJpbmstdG8tZml0IHdpZHRoIGFzIGZv
ciBmbG9hdGluZyBlbGVtZW50cy4KICAgICAvLyBBIGNvbXB1dGVkIHZhbHVlIG9mICdhdXRvJyBm
b3IgJ21hcmdpbi1sZWZ0JyBvciAnbWFyZ2luLXJpZ2h0JyBiZWNvbWVzIGEgdXNlZCB2YWx1ZSBv
ZiAnMCcuCiAgICAgLy8gIzEKLSAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0
byhmb3JtYXR0aW5nQ29udGV4dFJvb3Quc3R5bGUoKS5sb2dpY2FsV2lkdGgoKSwgdXNlZEhvcml6
b250YWxWYWx1ZXMuY29uc3RyYWludHMud2lkdGgpOworICAgIGF1dG8gd2lkdGggPSBjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5zdHlsZSgpLmxvZ2ljYWxXaWR0
aCgpLCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAg
IGlmICghd2lkdGgpCi0gICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLndpZHRoKTsKKyAg
ICAgICAgd2lkdGggPSBzaHJpbmtUb0ZpdFdpZHRoKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdXNl
ZEhvcml6b250YWxWYWx1ZXMuY29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKIAogICAgIC8vICMy
CiAgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdXNlZEhvcml6b250YWxWYWx1
ZXMpOwpAQCAtNzQsMTIgKzc0LDEyIEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hCiAgICAgcmV0
dXJuIGNvbXBsaWNhdGVkQ2FzZXMobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNl
ZFZlcnRpY2FsVmFsdWVzKTsKIH0KIAotT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFRleHRJbmRlbnQoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVz
OjpDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSBjb25zdAorT3B0aW9uYWw8SW5s
aW5lTGF5b3V0VW5pdD4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRl
ZFRleHRJbmRlbnQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSBjb25zdAogewog
ICAgIGF1dG8gdGV4dEluZGVudCA9IGZvcm1hdHRpbmdDb250ZXh0Um9vdC5zdHlsZSgpLnRleHRJ
bmRlbnQoKTsKICAgICBpZiAodGV4dEluZGVudCA9PSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJ
bmRlbnQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gSW5saW5lTGF5b3V0VW5p
dCB7IG1pbmltdW1WYWx1ZUZvckxlbmd0aCh0ZXh0SW5kZW50LCBob3Jpem9udGFsQ29uc3RyYWlu
dHMud2lkdGgpIH07CisgICAgcmV0dXJuIElubGluZUxheW91dFVuaXQgeyBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgodGV4dEluZGVudCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCkg
fTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90
YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMzAwMjY0MTNj
NTI3NjQ4Y2YxY2ZhYzRiODhjNmJjM2Y4ZjY0OTY1MS4uNGRiYjIwY2RiOWVkZjM4M2Q5NGQyMDNh
ZWQzN2Q2MzJiZGJhNmMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxl
Zm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4CiB7CiB9CiAKLXZvaWQgVGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYg
aW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0IFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50
cyYsIGNvbnN0IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMmKQordm9pZCBUYWJsZUZv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBp
bnZhbGlkYXRpb25TdGF0ZSwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVy
dGljYWxDb25zdHJhaW50cyYpCiB7CiAgICAgYXV0byYgZ3JpZCA9IGZvcm1hdHRpbmdTdGF0ZSgp
LnRhYmxlR3JpZCgpOwogICAgIGF1dG8mIGNvbHVtbnNDb250ZXh0ID0gZ3JpZC5jb2x1bW5zQ29u
dGV4dCgpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVByZWZlcnJlZFdpZHRoRm9yQ29sdW1ucygpCiAgICAgICAgICAgICAgICAgaW50cmlu
c2ljV2lkdGggPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2Fz
dDxDb250YWluZXI+KHRhYmxlQ2VsbEJveCksIGxheW91dFN0YXRlKCkpLT5jb21wdXRlZEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMoKTsKICAgICAgICAgICAgIGludHJpbnNpY1dpZHRoID0gZ2Vv
bWV0cnkoKS5jb25zdHJhaW5CeU1pbk1heFdpZHRoKHRhYmxlQ2VsbEJveCwgKmludHJpbnNpY1dp
ZHRoKTsKICAgICAgICAgICAgIGF1dG8gYm9yZGVyID0gZ2VvbWV0cnkoKS5jb21wdXRlZEJvcmRl
cih0YWJsZUNlbGxCb3gpOwotICAgICAgICAgICAgYXV0byBwYWRkaW5nID0gKmdlb21ldHJ5KCku
Y29tcHV0ZWRQYWRkaW5nKHRhYmxlQ2VsbEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgeyBVc2Vk
SG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMgeyB7IH0sIHsgfSB9IH0pOworICAgICAgICAg
ICAgYXV0byBwYWRkaW5nID0gKmdlb21ldHJ5KCkuY29tcHV0ZWRQYWRkaW5nKHRhYmxlQ2VsbEJv
eCwgVXNlZEhvcml6b250YWxWYWx1ZXMgeyBIb3Jpem9udGFsQ29uc3RyYWludHMgeyB7IH0sIHsg
fSB9IH0pOwogCiAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aC0+ZXhwYW5kKGJvcmRlci5ob3Jp
em9udGFsLndpZHRoKCkgKyBwYWRkaW5nLmhvcml6b250YWwud2lkdGgoKSk7CiAgICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveCh0YWJs
ZUNlbGxCb3gsICppbnRyaW5zaWNXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCmlu
ZGV4IDIwMWZjMTc1YjNkZjFhYzg2M2QzMDVmOWJiOWU0NDRiODQ0NTlmZGUuLjk5ZjQxYjFiOTQx
OGMwYmI0NDA4YWY1ZmVmMTI4NGFmNmNhOGZkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQgOiBwdWJs
aWMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGFibGVG
b3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dChj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3Rh
dGUmKTsKLSAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBj
b25zdCBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMmLCBjb25zdCBVc2VkVmVydGlj
YWxWYWx1ZXM6OkNvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXRJbkZsb3dD
b250ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwg
Y29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGNs
YXNzIEdlb21ldHJ5IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7Cg==
</data>
<flag name="review"
          id="402898"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>