<?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>204191</bug_id>
          
          <creation_ts>2019-11-13 21:06:37 -0800</creation_ts>
          <short_desc>[LFC][Invalidation] Use InvalidationState to populate LayoutQueue</short_desc>
          <delta_ts>2019-11-14 11:42:59 -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>commit-queue</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>1590199</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-11-13 21:06:37 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590201</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-13 21:07:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/57179614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590202</commentid>
    <comment_count>2</comment_count>
      <attachid>383543</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-13 21:11:46 -0800</bug_when>
    <thetext>Created attachment 383543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590267</commentid>
    <comment_count>3</comment_count>
      <attachid>383543</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-14 10:36:32 -0800</bug_when>
    <thetext>Comment on attachment 383543
Patch

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

&gt; Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp:94
&gt; +    populateLayoutQueue(formattingRoot, LayoutDirection::Child);

Maybe appendNextToLayoutQueue or similar since this only adds one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590276</commentid>
    <comment_count>4</comment_count>
      <attachid>383560</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-14 10:58:42 -0800</bug_when>
    <thetext>Created attachment 383560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590286</commentid>
    <comment_count>5</comment_count>
      <attachid>383560</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-14 11:42:57 -0800</bug_when>
    <thetext>Comment on attachment 383560
Patch

Clearing flags on attachment: 383560

Committed r252460: &lt;https://trac.webkit.org/changeset/252460&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590287</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-14 11:42:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383543</attachid>
            <date>2019-11-13 21:11:46 -0800</date>
            <delta_ts>2019-11-14 10:58:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204191-20191113211131.patch</filename>
            <type>text/plain</type>
            <size>26225</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwZTQ5N2QzYTYxYjEz
ZGJlMGVlOGM3YmI1ZjA2ODc1ZjJhOThlNy4uZjAzY2M5YjRjZDcxM2NhMjFhZThlNTEzOGJmNDYy
ZTQ4Y2ZhNzU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTExLTEzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSW52YWxpZGF0aW9u
XSBVc2UgSW52YWxpZGF0aW9uU3RhdGUgdG8gcG9wdWxhdGUgTGF5b3V0UXVldWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE5MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTcxNzk2MTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RhcnQgdXNpbmcgdGhlIEludmFsaWRhdGlvblN0YXRlIGluIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoKSB0byBmaWx0ZXIgb3V0
CisgICAgICAgIG5vbi1kaXJ0eSBib3hlcyAoY3VycmVudGx5IEludmFsaWRhdGlvblN0YXRlIHJl
dHVybnMgdHJ1ZSBmb3IgZXZlcnkgYm94KS4KKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHQuaDogSW52YWxpZGF0aW9uU3RhdGUgc2hvdWxkIG5vdCBiZSBjb25zdCBhcyB3ZSBrZWVw
IGFkZGluZyBhZGRpdGlvbmFsIGRpcnR5IGJveGVzIGR1cmluZyBsYXlvdXQuCisgICAgICAgICog
bGF5b3V0L0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlv
dXRDb250ZXh0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250
ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUpOgorICAgICAgICAqIGxheW91dC9M
YXlvdXRDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9v
dCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
Lmg6CisgICAgICAgICogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkludmFsaWRhdGlvblN0YXRlOjpuZWVkc0xheW91
dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0
ZS5oOgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRUYWJsZUNlbGxCb3gpOgorICAgICAgICAqIGxheW91
dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oOgorCiAyMDE5LTExLTEz
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggc29tZSBXZWJH
UFUgZGVtb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IDQ2ZmJlOTRmODRmODM5Mjk3MjRhMjgyMzYxZDY2ZmNkODQxNTUxYTEuLjgyMDBlMTIxNWFj
OThjY2RlODBlMjM4ZmM5MTg1MGU5NGU2M2JmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBP
cHRpb25hbDxVCiAgICAgZGlzcGxheUJveC5zZXRQYWRkaW5nKGdlb21ldHJ5KCkuY29tcHV0ZWRQ
YWRkaW5nKGxheW91dEJveCwgKnVzZWRIb3Jpem9udGFsVmFsdWVzKSk7CiB9CiAKLXZvaWQgRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQoKQordm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxp
ZGF0aW9uU3RhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LCBzdHJlYW0gPDwgIlN0YXJ0OiBsYXlvdXQgb3V0LW9mLWZsb3cgY29udGVudCAtPiBjb250
ZXh0OiAiIDw8ICZsYXlvdXRTdGF0ZSgpIDw8ICIgcm9vdDogIiA8PCAmcm9vdCgpKTsKIApAQCAt
MTYxLDkgKzE2MSw5IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0Nv
bnRlbnQoKQogICAgICAgICBpZiAoaXM8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KSkgewogICAg
ICAgICAgICAgYXV0byYgb3V0T2ZGbG93Um9vdENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5l
cj4oKm91dE9mRmxvd0JveCk7CiAgICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0g
TGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQob3V0T2ZGbG93Um9vdENvbnRh
aW5lciwgbGF5b3V0U3RhdGUoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5
b3V0SW5GbG93Q29udGVudCgpOworICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91
dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUpOwogICAgICAgICAgICAgY29tcHV0ZU91
dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkob3V0T2ZGbG93Um9vdENvbnRhaW5lcik7Ci0gICAgICAg
ICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudCgpOyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRl
bnQoaW52YWxpZGF0aW9uU3RhdGUpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvbXB1
dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KCpvdXRPZkZsb3dCb3gpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMGZmYWM3NzFiM2E0Yzk4
ZjA4Y2UzNjdiZmIyNGViYjg1ZTJkMWNlMC4uZjljYzM3NmMyMzRlNGY5MzJjNjU1YzgwMmI0ZDlk
NDRkYTRjZDgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgK
QEAgLTQzLDE5ICs0MywyMCBAQCBzdHJ1Y3QgTGVuZ3RoOwogCiBuYW1lc3BhY2UgTGF5b3V0IHsK
IAotY2xhc3MgQ29udGFpbmVyOwogY2xhc3MgQm94OwotY2xhc3MgRm9ybWF0dGluZ1N0YXRlOwot
Y2xhc3MgTGF5b3V0U3RhdGU7CiBzdHJ1Y3QgQ29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luOwogc3Ry
dWN0IENvbXB1dGVkVmVydGljYWxNYXJnaW47Ci1zdHJ1Y3QgRWRnZXM7CitjbGFzcyBDb250YWlu
ZXI7CiBzdHJ1Y3QgQ29udGVudEhlaWdodEFuZE1hcmdpbjsKK3N0cnVjdCBDb250ZW50V2lkdGhB
bmRNYXJnaW47CitzdHJ1Y3QgRWRnZXM7CitjbGFzcyBGb3JtYXR0aW5nU3RhdGU7CiBzdHJ1Y3Qg
SG9yaXpvbnRhbEdlb21ldHJ5OworY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CitjbGFzcyBMYXlv
dXRTdGF0ZTsKIHN0cnVjdCBVc2VkSG9yaXpvbnRhbFZhbHVlczsKIHN0cnVjdCBVc2VkVmVydGlj
YWxWYWx1ZXM7CiBzdHJ1Y3QgVmVydGljYWxHZW9tZXRyeTsKLXN0cnVjdCBDb250ZW50V2lkdGhB
bmRNYXJnaW47CiAKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKEZvcm1hdHRpbmdDb250ZXh0KTsKQEAgLTYzLDggKzY0LDggQEAgcHVibGljOgog
ICAgIEZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRS
b290LCBGb3JtYXR0aW5nU3RhdGUmKTsKICAgICB2aXJ0dWFsIH5Gb3JtYXR0aW5nQ29udGV4dCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoKSA9IDA7Ci0gICAgdm9p
ZCBsYXlvdXRPdXRPZkZsb3dDb250ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dEluRmxv
d0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmKSA9IDA7CisgICAgdm9pZCBsYXlvdXRPdXRPZkZs
b3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJik7CiAKICAgICBzdHJ1Y3QgSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyB7CiAgICAgICAgIHZvaWQgZXhwYW5kKExheW91dFVuaXQgaG9yaXpvbnRh
bFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCAyMTYx
YTNkNWFiZTg5YTdmZDllNGI1YzU1ZmMzNjNkOWFlZTcxMjI4Li4xYjkzMzU5MTlhZTU0OTcwMDI0
Y2ZjMzk4NGY3MjZkMmRkYjI1NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRl
eHQuY3BwCkBAIC01NiwyMiArNTYsMjIgQEAgTGF5b3V0Q29udGV4dDo6TGF5b3V0Q29udGV4dChM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiB7CiB9CiAKLXZvaWQgTGF5b3V0Q29udGV4dDo6bGF5
b3V0KGNvbnN0IEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSkKK3ZvaWQgTGF5
b3V0Q29udGV4dDo6bGF5b3V0KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSkK
IHsKICAgICBQaGFzZVNjb3BlIHNjb3BlKFBoYXNlOjpUeXBlOjpMYXlvdXQpOwogCiAgICAgYXV0
byYgZm9ybWF0dGluZ0NvbnRleHRSb290c0ZvckxheW91dCA9IGludmFsaWRhdGlvblN0YXRlLmZv
cm1hdHRpbmdDb250ZXh0Um9vdHMoKTsKICAgICBBU1NFUlQoIWZvcm1hdHRpbmdDb250ZXh0Um9v
dHNGb3JMYXlvdXQuY29tcHV0ZXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8mIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCA6IGZvcm1hdHRpbmdDb250ZXh0Um9vdHNGb3JMYXlvdXQpCi0gICAgICAgIGxh
eW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworICAg
ICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoZm9ybWF0dGluZ0NvbnRleHRSb290
LCBpbnZhbGlkYXRpb25TdGF0ZSk7CiB9CiAKLXZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRS
b290KQordm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUo
Y29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEludmFsaWRhdGlvblN0YXRl
JiBpbnZhbGlkYXRpb25TdGF0ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChmb3JtYXR0aW5nQ29u
dGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICBhdXRvIGZvcm1h
dHRpbmdDb250ZXh0ID0gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ0NvbnRleHRS
b290LCBsYXlvdXRTdGF0ZSgpKTsKLSAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93
Q29udGVudCgpOwotICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50
KCk7CisgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0
aW9uU3RhdGUpOworICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50
KGludmFsaWRhdGlvblN0YXRlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250
ZXh0PiBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWlu
ZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmgKaW5kZXggYjEyOGIwMGRiNTQ3YTNkMTFlNzc4
ZGE2MzgzOGNkMzE3MTk1MDdiMy4uZmFlZDJlYmViYzQzNGIwZDk4NTEyMGNmYTRmOTE1ODFkZTY1
MWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oCkBAIC01NywxMiArNTcs
MTIgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHBhaW50KGNvbnN0IExheW91dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAogICAgIExheW91
dENvbnRleHQoTGF5b3V0U3RhdGUmKTsKLSAgICB2b2lkIGxheW91dChjb25zdCBJbnZhbGlkYXRp
b25TdGF0ZSYpOworICAgIHZvaWQgbGF5b3V0KEludmFsaWRhdGlvblN0YXRlJik7CiAKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVhdGVGb3JtYXR0aW5n
Q29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5b3V0U3Rh
dGUmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJl
ZShjb25zdCBDb250YWluZXImKTsKKyAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3Vi
dHJlZShjb25zdCBDb250YWluZXImLCBJbnZhbGlkYXRpb25TdGF0ZSYpOwogICAgIExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSgpIHsgcmV0dXJuIG1fbGF5b3V0U3RhdGU7IH0KIAogICAgIC8vIEZv
ciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IGI2NTNhMTdmNmFlNjAyNGY5OGUxYzcxNjZmZmFhNTdkMDg1ZDc0YWMuLjUzMWE2ODA4MzIx
ZjZiZGQ1MzJmYjE1YzY2MzVmOWNmMWNjNjFkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdTdGF0
ZS5oIgorI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dENv
bnRhaW5lci5oIgpAQCAtNDksMjEgKzUwLDQ4IEBAIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4CiB7
CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCgp
CitlbnVtIGNsYXNzIExheW91dERpcmVjdGlvbiB7IENoaWxkLCBTaWJsaW5nIH07Cit2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvblN0YXRlKQogewogICAgIC8vIDkuNC4xIEJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dHMKICAgICAvLyBJbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCwgYm94ZXMgYXJl
IGxhaWQgb3V0IG9uZSBhZnRlciB0aGUgb3RoZXIsIHZlcnRpY2FsbHksIGJlZ2lubmluZyBhdCB0
aGUgdG9wIG9mIGEgY29udGFpbmluZyBibG9jay4KICAgICAvLyBUaGUgdmVydGljYWwgZGlzdGFu
Y2UgYmV0d2VlbiB0d28gc2libGluZyBib3hlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAnbWFyZ2lu
JyBwcm9wZXJ0aWVzLgogICAgIC8vIFZlcnRpY2FsIG1hcmdpbnMgYmV0d2VlbiBhZGphY2VudCBi
bG9jay1sZXZlbCBib3hlcyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBjb2xsYXBzZS4K
ICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAi
W1N0YXJ0XSAtPiBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290KCIg
PDwgJnJvb3QoKSA8PCAiKSIpOwotCiAgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSByb290KCk7
Ci0gICAgTGF5b3V0UXVldWUgbGF5b3V0UXVldWU7CiAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQg
PSBGbG9hdGluZ0NvbnRleHQgeyBmb3JtYXR0aW5nUm9vdCwgKnRoaXMsIGZvcm1hdHRpbmdTdGF0
ZSgpLmZsb2F0aW5nU3RhdGUoKSB9OworCisgICAgTGF5b3V0UXVldWUgbGF5b3V0UXVldWU7Cisg
ICAgYXV0byBwb3B1bGF0ZUxheW91dFF1ZXVlID0gWyZdIChjb25zdCBhdXRvJiBsYXlvdXRCb3gs
IGF1dG8gZGlyZWN0aW9uKSB7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTGF5b3V0RGlyZWN0
aW9uOjpDaGlsZCkgeworICAgICAgICAgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZm9yIChhdXRvKiBj
aGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdEluRmxvd09yRmxvYXRp
bmdDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dEluRmxvd09yRmxvYXRpbmdTaWJs
aW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWludmFsaWRhdGlvblN0YXRlLm5lZWRzTGF5
b3V0KCpjaGlsZCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIGxheW91dFF1ZXVlLmFwcGVuZChjaGlsZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoZGlyZWN0aW9uID09IExheW91dERpcmVjdGlvbjo6U2libGluZykgewor
ICAgICAgICAgICAgZm9yIChhdXRvKiBuZXh0U2libGluZyA9IGxheW91dEJveC5uZXh0SW5GbG93
T3JGbG9hdGluZ1NpYmxpbmcoKTsgbmV4dFNpYmxpbmc7IG5leHRTaWJsaW5nID0gbmV4dFNpYmxp
bmctPm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFpbnZhbGlkYXRpb25TdGF0ZS5uZWVkc0xheW91dCgqbmV4dFNpYmxpbmcpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBsYXlvdXRRdWV1ZS5hcHBlbmQo
bmV4dFNpYmxpbmcpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworCiAgICAgLy8g
VGhpcyBpcyBhIHBvc3Qtb3JkZXIgdHJlZSB0cmF2ZXJzYWwgbGF5b3V0LgogICAgIC8vIFRoZSBy
b290IGNvbnRhaW5lciBsYXlvdXQgaXMgZG9uZSBpbiB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGl0
IGxpdmVzIGluLCBub3QgdGhhdCBvbmUgaXQgY3JlYXRlcywgc28gbGV0J3Mgc3RhcnQgd2l0aCB0
aGUgZmlyc3QgY2hpbGQuCi0gICAgaWYgKGF1dG8qIGZpcnN0Q2hpbGQgPSBmb3JtYXR0aW5nUm9v
dC5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpKQotICAgICAgICBsYXlvdXRRdWV1ZS5hcHBl
bmQoZmlyc3RDaGlsZCk7CisgICAgcG9wdWxhdGVMYXlvdXRRdWV1ZShmb3JtYXR0aW5nUm9vdCwg
TGF5b3V0RGlyZWN0aW9uOjpDaGlsZCk7CiAgICAgLy8gMS4gR28gYWxsIHRoZSB3YXkgZG93biB0
byB0aGUgbGVhZiBub2RlCiAgICAgLy8gMi4gQ29tcHV0ZSBzdGF0aWMgcG9zaXRpb24gYW5kIHdp
ZHRoIGFzIHdlIHRyYXZlcnNlIGRvd24KICAgICAvLyAzLiBBcyB3ZSBjbGltYiBiYWNrIG9uIHRo
ZSB0cmVlLCBjb21wdXRlIGhlaWdodCBhbmQgZmluaWFsaXplIHBvc2l0aW9uCkBAIC03NCw0MCAr
MTAyLDMzIEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVu
dCgpCiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUubGFzdCgpOwog
CiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQo
KSkgewotICAgICAgICAgICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChmbG9hdGlu
Z0NvbnRleHQsIGxheW91dEJveCk7CisgICAgICAgICAgICAgICAgLy8gbGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRSb290KCkgdGFrZXMgY2FyZSBvZiB0aGUgbGF5b3V0Qm94IGl0c2VsZiBhbmQgaXRz
IGRlc2NlbmRhbnRzLgorICAgICAgICAgICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9v
dChmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCwgaW52YWxpZGF0aW9uU3RhdGUpOwogICAgICAg
ICAgICAgICAgIGxheW91dFF1ZXVlLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAgICAgICAvLyBT
aW5jZSB0aGlzIGJveCBpcyBhIGZvcm1hdHRpbmcgY29udGV4dCByb290LCBpdCB0YWtlcyBjYXJl
IG9mIGl0cyBlbnRpcmUgc3VidHJlZS4KLSAgICAgICAgICAgICAgICAvLyBDb250aW51ZSB3aXRo
IG5leHQgc2libGluZyBpZiBleGlzdHMuCi0gICAgICAgICAgICAgICAgaWYgKCFsYXlvdXRCb3gu
bmV4dEluRmxvd09yRmxvYXRpbmdTaWJsaW5nKCkpCisgICAgICAgICAgICAgICAgaWYgKCFwb3B1
bGF0ZUxheW91dFF1ZXVlKGxheW91dEJveCwgTGF5b3V0RGlyZWN0aW9uOjpTaWJsaW5nKSkKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBw
ZW5kKGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSk7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIExPR19XSVRIX1NU
UkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbQ29tcHV0ZV0gLT4gW1Bv
c2l0aW9uXVtCb3JkZXJdW1BhZGRpbmddW1dpZHRoXVtNYXJnaW5dIC0+IGZvciBsYXlvdXRCb3go
IiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFk
ZGluZyhsYXlvdXRCb3gpOwogICAgICAgICAgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGxheW91
dEJveCk7CiAgICAgICAgICAgICBjb21wdXRlU3RhdGljUG9zaXRpb24oZmxvYXRpbmdDb250ZXh0
LCBsYXlvdXRCb3gpOwotICAgICAgICAgICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkg
fHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hp
bGQoKSkKKworICAgICAgICAgICAgaWYgKCFwb3B1bGF0ZUxheW91dFF1ZXVlKGxheW91dEJveCwg
TGF5b3V0RGlyZWN0aW9uOjpDaGlsZCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBsYXlvdXRRdWV1ZS5hcHBlbmQoZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZp
cnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2xp
bWIgYmFjayBvbiB0aGUgYW5jZXN0b3JzIGFuZCBjb21wdXRlIGhlaWdodC9maW5hbCBwb3NpdGlv
bi4KICAgICAgICAgd2hpbGUgKCFsYXlvdXRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IC8vIEFsbCBpbmZsb3cgZGVzY2VuZGFudHMgKGlmIHRoZXJlIGFyZSBhbnkpIGFyZSBsYWlkIG91
dCBieSBub3cuIExldCdzIGNvbXB1dGUgdGhlIGJveCdzIGhlaWdodC4KICAgICAgICAgICAgIGF1
dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFzdCgpOwotCi0gICAgICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0NvbXB1
dGVdIC0+IFtIZWlnaHRdW01hcmdpbl0gLT4gZm9yIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3gg
PDwgIikiKTsKICAgICAgICAgICAgIC8vIEZvcm1hdHRpbmcgcm9vdCBib3hlcyBhcmUgc3BlY2lh
bC1jYXNlZCBhbmQgdGhleSBkb24ndCBjb21lIGhlcmUuCiAgICAgICAgICAgICBBU1NFUlQoIWxh
eW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgICAgICAgICAgY29t
cHV0ZUhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gpOwogICAgICAgICAgICAgLy8gTW92ZSBpbi1m
bG93IHBvc2l0aW9uZWQgY2hpbGRyZW4gdG8gdGhlaXIgZmluYWwgcG9zaXRpb24uCiAgICAgICAg
ICAgICBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihsYXlvdXRCb3gpOwotICAgICAgICAg
ICAgaWYgKGF1dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dPckZsb2F0aW5n
U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBwZW5kKG5leHRTaWJs
aW5nKTsKKyAgICAgICAgICAgIGlmIChwb3B1bGF0ZUxheW91dFF1ZXVlKGxheW91dEJveCwgTGF5
b3V0RGlyZWN0aW9uOjpTaWJsaW5nKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAvLyBQbGFjZSB0aGUgaW5mbG93IHBvc2l0aW9u
ZWQgY2hpbGRyZW4uCkBAIC0xNDksNyArMTcwLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGMK
ICAgICByZXR1cm4gYXZhaWxhYmxlV2lkdGg7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KEZsb2F0aW5nQ29udGV4dCYgZmxvYXRp
bmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KEZsb2F0aW5nQ29udGV4dCYgZmxvYXRp
bmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgSW52YWxpZGF0aW9uU3RhdGUmIGludmFs
aWRhdGlvblN0YXRlKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0
aW5nQ29udGV4dCgpKTsKICAgICAvLyBTdGFydCBsYXlpbmcgb3V0IHRoaXMgZm9ybWF0dGluZyBy
b290IGluIHRoZSBmb3JtYXR0aW5nIGNvbnRlbnh0IGl0IGxpdmVzIGluLgpAQCAtMTY3LDExICsx
ODgsMTEgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29u
dGV4dFJvb3QoRmxvYXRpbmdDb250ZXh0JiBmbG9hdGkKICAgICAgICAgLy8gU3dpY2ggb3ZlciB0
byB0aGUgbmV3IGZvcm1hdHRpbmcgY29udGV4dCAodGhlIG9uZSB0aGF0IHRoZSByb290IGNyZWF0
ZXMpLgogICAgICAgICBhdXRvJiByb290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihs
YXlvdXRCb3gpOwogICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4
dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQocm9vdENvbnRhaW5lciwgbGF5b3V0U3RhdGUoKSk7
Ci0gICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KCk7CisgICAg
ICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0
YXRlKTsKICAgICAgICAgLy8gQ29tZSBiYWNrIGFuZCBmaW5hbGl6ZSB0aGUgcm9vdCdzIGdlb21l
dHJ5LgogICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKHJvb3RDb250YWluZXIpOwogICAg
ICAgICAvLyBOb3cgdGhhdCB3ZSBjb21wdXRlZCB0aGUgcm9vdCdzIGhlaWdodCwgd2UgY2FuIGdv
IGJhY2sgYW5kIGxheW91dCB0aGUgb3V0LW9mLWZsb3cgY29udGVudC4KLSAgICAgICAgZm9ybWF0
dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRlbnQoKTsKKyAgICAgICAgZm9ybWF0dGlu
Z0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUpOwogICAg
IH0gZWxzZQogICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCk7CiAgICAg
Ly8gRmxvYXQgcmVsYXRlZCBmaW5hbCBwb3NpdGlvbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmgKaW5kZXggZmEwMzJmNDYxZjIwMThjMGE1MDU0ODZkNjU4NzkxMzkxZGZiMDM0Mi4uNGM3
OGFmNWNmNjZmZjZjMmNjOGUwYzdiMzJjMzM3Nzc1ZWJlMTc3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmgKQEAgLTQ4LDEwICs0OCwxMCBAQCBjbGFzcyBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBCbG9j
a0Zvcm1hdHRpbmdTdGF0ZSYpOwogCi0gICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJikg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJv
b3QoRmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgdm9pZCBsYXlvdXRGb3JtYXR0
aW5nQ29udGV4dFJvb3QoRmxvYXRpbmdDb250ZXh0JiwgY29uc3QgQm94JiwgSW52YWxpZGF0aW9u
U3RhdGUmKTsKICAgICB2b2lkIHBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IEJv
eCYpOwogCiAgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gdXNlZEF2YWlsYWJsZVdpZHRoID0geyB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA3MzkxYjI3Y2YzZTRlNWQ3MzgzOTUwNzc3ZDg0NDlm
MzViNGM0ZDY1Li41M2VhOWI1MjRlZGNjZWQ1MTkzZDA4NTFlMDMwYTYzYzdjZmI2ZWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRl
bS5oIgorI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4
dC5oIgpAQCAtNjIsNyArNjMsNyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEJveCogbmV4dEluUHJl
T3JkZXIoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgcwogICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZs
b3dDb250ZW50KCkKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0Nv
bnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlKQogewogICAgIGlmICgh
cm9vdCgpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAgICByZXR1cm47CkBAIC03
Niw3ICs3Nyw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0Nv
bnRlbnQoKQogICAgIC8vIDIuIENvbGxlY3QgdGhlIGlubGluZSBpdGVtcyAoZmxhdHRlbiB0aGUg
dGhlIGxheW91dCB0cmVlKSBhbmQgcGxhY2UgdGhlbSBvbiBsaW5lcyBpbiBiaWRpcmVjdGlvbmFs
IG9yZGVyLiAKICAgICB3aGlsZSAobGF5b3V0Qm94KSB7CiAgICAgICAgIGlmIChsYXlvdXRCb3gt
PmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIGxheW91dEZvcm1h
dHRpbmdDb250ZXh0Um9vdCgqbGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZl
cnRpY2FsVmFsdWVzKTsKKyAgICAgICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdCgq
bGF5b3V0Qm94LCBpbnZhbGlkYXRpb25TdGF0ZSwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRW
ZXJ0aWNhbFZhbHVlcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXB1dGVIb3Jpem9u
dGFsQW5kVmVydGljYWxHZW9tZXRyeSgqbGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywg
dXNlZFZlcnRpY2FsVmFsdWVzKTsKICAgICAgICAgbGF5b3V0Qm94ID0gbmV4dEluUHJlT3JkZXIo
KmxheW91dEJveCwgcm9vdCgpKTsKQEAgLTEzMiw3ICsxMzMsNyBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9u
dGFsVmFsdQogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBV
c2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFs
dWVzIHVzZWRWZXJ0aWNhbFZhbHVlcykKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omxh
eW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBVc2VkSG9yaXpvbnRhbFZh
bHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzIHVzZWRWZXJ0aWNh
bFZhbHVlcykKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmlzRmxvYXRpbmdQ
b3NpdGlvbmVkKCkgfHwgZm9ybWF0dGluZ0NvbnRleHRSb290LmlzSW5saW5lQmxvY2tCb3goKSk7
CiAKQEAgLTE0MiwxMSArMTQzLDExIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omxh
eW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGZvcm1hdHRpbmdDCiAgICAgaWYg
KGlzPENvbnRhaW5lcj4oZm9ybWF0dGluZ0NvbnRleHRSb290KSkgewogICAgICAgICBhdXRvJiBy
b290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
OwogICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRl
Rm9ybWF0dGluZ0NvbnRleHQocm9vdENvbnRhaW5lciwgbGF5b3V0U3RhdGUoKSk7Ci0gICAgICAg
IGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KCk7CisgICAgICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlKTsKICAg
ICAgICAgLy8gQ29tZSBiYWNrIGFuZCBmaW5hbGl6ZSB0aGUgcm9vdCdzIGhlaWdodCBhbmQgbWFy
Z2luLgogICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKHJvb3RDb250YWluZXIsIHVzZWRI
b3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMpOwogICAgICAgICAvLyBOb3cgdGhh
dCB3ZSBjb21wdXRlZCB0aGUgcm9vdCdzIGhlaWdodCwgd2UgY2FuIGdvIGJhY2sgYW5kIGxheW91
dCB0aGUgb3V0LW9mLWZsb3cgY29udGVudC4KLSAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxh
eW91dE91dE9mRmxvd0NvbnRlbnQoKTsKKyAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91
dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUpOwogICAgIH0gZWxzZQogICAgICAg
ICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdXNlZEhvcml6
b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaAppbmRleCBiNjk4ODQzMGVhMmQ2YzJhZDI3NjcyMjE3NzUwOGY4OTY2MDY1MGUx
Li43YTg3MWJhNDQ2YjMzMWRmZThmODQ3YmQ1OWRkYzhhYjZkZWViZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUZvcm1hdHRpbmdTdGF0ZTsKK2Ns
YXNzIEludmFsaWRhdGlvblN0YXRlOwogCiAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIGxh
eW91dCBsb2dpYyBmb3IgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dHMuCiAvLyBodHRwczovL3d3
dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJlbi5odG1sI2lubGluZS1mb3JtYXR0aW5nCkBAIC00Miw3
ICs0Myw3IEBAIGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0IDogcHVibGljIEZvcm1hdHRp
bmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKElubGluZUZvcm1hdHRpbmdD
b250ZXh0KTsKIHB1YmxpYzoKICAgICBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250
YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJik7Ci0g
ICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXRJ
bkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMoKSBvdmVycmlkZTsKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkgZ2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBHZW9t
ZXRyeSgqdGhpcyk7IH0KIAogICAgIHZvaWQgbGluZUxheW91dChVc2VkSG9yaXpvbnRhbFZhbHVl
cyk7Ci0gICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiwgVXNl
ZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyk7CisgICAgdm9pZCBsYXlvdXRG
b3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiwgSW52YWxpZGF0aW9uU3RhdGUmLCBVc2Vk
SG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKTsKICAgICB2b2lkIGNvbXB1dGVI
b3Jpem9udGFsQW5kVmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZh
bHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKTsKIAogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY1dp
ZHRoRm9yRm9ybWF0dGluZ1Jvb3QoY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRp
b25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRh
dGlvblN0YXRlLmNwcAppbmRleCA5OWVlMzNkNjQ2Y2YzMjlmM2E4OWFkOGRiZjdmOTA1YjcyMDhk
NDVlLi5hOWZiOWUwZmQwOTkwMjg0OGVlMWIyYjJmZTllMmI5NTM0MmI3MzIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0
YXRlLmNwcApAQCAtNDcsNiArNDcsMTEgQEAgdm9pZCBJbnZhbGlkYXRpb25TdGF0ZTo6bWFya05l
ZWRzVXBkYXRlKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogICAgIG1fZm9ybWF0dGluZ0NvbnRleHRS
b290cy5hZGQoJmxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7CiB9CiAKK2Jvb2wg
SW52YWxpZGF0aW9uU3RhdGU6Om5lZWRzTGF5b3V0KGNvbnN0IEJveCYpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5oCmluZGV4IDgzMjlmZThi
NWViOGZlNjkwY2NjNjA2MjZjZWY0MGFjMzcyZDNhNzQuLjVlMjI0NWVjNzQwNGZiMDg0NzlhMTlh
MjM1ODk0Y2VhNjkxZmI2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnZh
bGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0YXRlLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGlj
OgogICAgIEludmFsaWRhdGlvblN0YXRlKCk7CiAKICAgICB2b2lkIG1hcmtOZWVkc1VwZGF0ZShj
b25zdCBCb3gmKTsKKyAgICBib29sIG5lZWRzTGF5b3V0KGNvbnN0IEJveCYpIGNvbnN0OwogCiAg
ICAgdXNpbmcgRm9ybWF0dGluZ0NvbnRleHRSb290cyA9IFdlYWtIYXNoU2V0PGNvbnN0IENvbnRh
aW5lcj47CiAgICAgLy8gRklYTUU6IFdlIGN1cnJlbnRseSBkbyBmdWxsIGZvcm1hdHRpbmcgY29u
dGV4dCBsYXlvdXRzIChubyBwYXJ0aWFsIGxheW91dCB3aXRoaW4gYSBmb3JtYXR0aW5nIGNvbnRl
eHQpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9U
YWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZv
cm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZjY3ZmZjMDBjMTE0OWI5
NDVlNDFkMjZhZTQ4ZWM2MTFmMWZiY2I1MS4uZWEwMDNmODgzYWNlZTFjMTNiMzk2ZTEzOGQwYmNh
NjQxZWViMzQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1
ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRl
LmgiCkBAIC01Nyw3ICs1OCw3IEBAIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlRm9ybWF0
dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4CiB7CiB9CiAKLXZv
aWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCgpCit2b2lkIFRh
YmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvblN0YXRlKQogewogICAgIGF1dG8mIGdyaWQgPSBmb3JtYXR0aW5nU3Rh
dGUoKS50YWJsZUdyaWQoKTsKICAgICBhdXRvJiBjb2x1bW5zQ29udGV4dCA9IGdyaWQuY29sdW1u
c0NvbnRleHQoKTsKQEAgLTc4LDcgKzc5LDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbkZsb3dDb250ZW50KCkKICAgICBBU1NFUlQoIWNlbGxMaXN0LmlzRW1wdHkoKSk7
CiAgICAgZm9yIChhdXRvJiBjZWxsIDogY2VsbExpc3QpIHsKICAgICAgICAgYXV0byYgY2VsbExh
eW91dEJveCA9IGNlbGwtPnRhYmxlQ2VsbEJveDsKLSAgICAgICAgbGF5b3V0VGFibGVDZWxsQm94
KGNlbGxMYXlvdXRCb3gsIGNvbHVtbkxpc3QuYXQoY2VsbC0+cG9zaXRpb24ueCgpKSk7CisgICAg
ICAgIGxheW91dFRhYmxlQ2VsbEJveChjZWxsTGF5b3V0Qm94LCBjb2x1bW5MaXN0LmF0KGNlbGwt
PnBvc2l0aW9uLngoKSksIGludmFsaWRhdGlvblN0YXRlKTsKICAgICAgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBjb2x1bW4gYW5kIHJvdyBzcGFubmluZyBhbmQgdGhpcyByZXF1aXJlcyBh
IDIgcGFzcyBsYXlvdXQuCiAgICAgICAgIGF1dG8mIHJvdyA9IGdyaWQucm93cygpLmF0KGNlbGwt
PnBvc2l0aW9uLnkoKSk7CiAgICAgICAgIHJvdy5zZXRMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4KHJv
dy5sb2dpY2FsSGVpZ2h0KCksIGdlb21ldHJ5Rm9yQm94KGNlbGxMYXlvdXRCb3gpLm1hcmdpbkJv
eEhlaWdodCgpKSk7CkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0SW5GbG93Q29udGVudCgpCiAgICAgc2V0Q29tcHV0ZWRHZW9tZXRyeUZvclJvd3Mo
KTsKIH0KIAotdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRUYWJsZUNlbGxCb3go
Y29uc3QgQm94JiBjZWxsTGF5b3V0Qm94LCBjb25zdCBUYWJsZUdyaWQ6OkNvbHVtbiYgY29sdW1u
KQordm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRUYWJsZUNlbGxCb3goY29uc3Qg
Qm94JiBjZWxsTGF5b3V0Qm94LCBjb25zdCBUYWJsZUdyaWQ6OkNvbHVtbiYgY29sdW1uLCBJbnZh
bGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUpCiB7CiAgICAgYXV0byYgY2VsbERpc3Bs
YXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5Qm94KGNlbGxMYXlvdXRCb3gpOwogICAg
IGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGNlbGxMYXlvdXRCb3gpOwpAQCAtMTA5LDcgKzExMCw3
IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0VGFibGVDZWxsQm94KGNvbnN0
IEJveCYgY2VsbExheW91dEJveCwgY29uc3QKIAogICAgIEFTU0VSVChjZWxsTGF5b3V0Qm94LmVz
dGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICBpZiAoaXM8Q29udGFpbmVy
PihjZWxsTGF5b3V0Qm94KSkKLSAgICAgICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGlu
Z0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyPihjZWxsTGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUo
KSktPmxheW91dEluRmxvd0NvbnRlbnQoKTsKKyAgICAgICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRl
Rm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyPihjZWxsTGF5b3V0Qm94KSwgbGF5
b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUpOwogICAg
IGNlbGxEaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsgeyB9LCB7IH0gfSk7CiAgICAgY2Vs
bERpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChnZW9tZXRyeSgpLnRhYmxlQ2VsbEhlaWdo
dEFuZE1hcmdpbihjZWxsTGF5b3V0Qm94KS5jb250ZW50SGVpZ2h0KTsKICAgICAvLyBGSVhNRTog
Q2hlY2sgd2hhdCB0byBkbyB3aXRoIG91dC1vZi1mbG93IGNvbnRlbnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IGU5Y2E1NTM4M2MzM2EwNzdkMDJhNDViYWZkZjVmODE0ZDdjODA0
YTQuLmQzMTU4Mzg1MWNjODNlZjBmNDI4YzY2NDdiNDQ2NTQzYTUwNGQxN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVG
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAorY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CiBjbGFzcyBU
YWJsZUZvcm1hdHRpbmdTdGF0ZTsKIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgbGF5b3V0
IGxvZ2ljIGZvciB0YWJsZSBmb3JtYXR0aW5nIGNvbnRleHRzLgogLy8gaHR0cHM6Ly93d3cudzMu
b3JnL1RSL0NTUzIyL3RhYmxlcy5odG1sCkBAIC00MSw3ICs0Miw3IEBAIGNsYXNzIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoVGFibGVGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgVGFi
bGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgVGFibGVGb3JtYXR0aW5nU3RhdGUmKTsKLSAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBHZW9tZXRyeSA6IHB1YmxpYyBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkgewpAQCAtNTgsNyArNTksNyBAQCBwcml2YXRlOgog
ICAgIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IGdlb21ldHJ5KCkgY29uc3QgeyBy
ZXR1cm4gR2VvbWV0cnkoKnRoaXMpOyB9CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQg
bGF5b3V0VGFibGVDZWxsQm94KGNvbnN0IEJveCYgY2VsbExheW91dEJveCwgY29uc3QgVGFibGVH
cmlkOjpDb2x1bW4mKTsKKyAgICB2b2lkIGxheW91dFRhYmxlQ2VsbEJveChjb25zdCBCb3gmIGNl
bGxMYXlvdXRCb3gsIGNvbnN0IFRhYmxlR3JpZDo6Q29sdW1uJiwgSW52YWxpZGF0aW9uU3RhdGUm
KTsKICAgICB2b2lkIHBvc2l0aW9uVGFibGVDZWxscygpOwogICAgIHZvaWQgc2V0Q29tcHV0ZWRH
ZW9tZXRyeUZvclJvd3MoKTsKICAgICB2b2lkIHNldENvbXB1dGVkR2VvbWV0cnlGb3JTZWN0aW9u
cygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383560</attachid>
            <date>2019-11-14 10:58:42 -0800</date>
            <delta_ts>2019-11-14 11:42:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204191-20191114105825.patch</filename>
            <type>text/plain</type>
            <size>26245</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwZTQ5N2QzYTYxYjEz
ZGJlMGVlOGM3YmI1ZjA2ODc1ZjJhOThlNy4uMTFjMTVjMDdkNGQxZWEzNTllODBkNTcxYWM3ZTM4
N2Y5ZmY3M2Y0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTExLTE0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSW52YWxpZGF0aW9u
XSBVc2UgSW52YWxpZGF0aW9uU3RhdGUgdG8gcG9wdWxhdGUgTGF5b3V0UXVldWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE5MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTcxNzk2MTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgU3RhcnQgdXNpbmcgdGhlIEludmFsaWRhdGlvblN0YXRlIGluIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoKSB0byBmaWx0ZXIgb3V0
CisgICAgICAgIG5vbi1kaXJ0eSBib3hlcyAoY3VycmVudGx5IEludmFsaWRhdGlvblN0YXRlIHJl
dHVybnMgdHJ1ZSBmb3IgZXZlcnkgYm94KS4KKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHQuaDogSW52YWxpZGF0aW9uU3RhdGUgc2hvdWxkIG5vdCBiZSBjb25zdCBhcyB3ZSBrZWVw
IGFkZGluZyBhZGRpdGlvbmFsIGRpcnR5IGJveGVzIGR1cmluZyBsYXlvdXQuCisgICAgICAgICog
bGF5b3V0L0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlv
dXRDb250ZXh0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250
ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUpOgorICAgICAgICAqIGxheW91dC9M
YXlvdXRDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9v
dCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
Lmg6CisgICAgICAgICogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkludmFsaWRhdGlvblN0YXRlOjpuZWVkc0xheW91
dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0
ZS5oOgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dEluRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRUYWJsZUNlbGxCb3gpOgorICAgICAgICAqIGxheW91
dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oOgorCiAyMDE5LTExLTEz
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggc29tZSBXZWJH
UFUgZGVtb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IDQ2ZmJlOTRmODRmODM5Mjk3MjRhMjgyMzYxZDY2ZmNkODQxNTUxYTEuLjgyMDBlMTIxNWFj
OThjY2RlODBlMjM4ZmM5MTg1MGU5NGU2M2JmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBP
cHRpb25hbDxVCiAgICAgZGlzcGxheUJveC5zZXRQYWRkaW5nKGdlb21ldHJ5KCkuY29tcHV0ZWRQ
YWRkaW5nKGxheW91dEJveCwgKnVzZWRIb3Jpem9udGFsVmFsdWVzKSk7CiB9CiAKLXZvaWQgRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQoKQordm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxp
ZGF0aW9uU3RhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LCBzdHJlYW0gPDwgIlN0YXJ0OiBsYXlvdXQgb3V0LW9mLWZsb3cgY29udGVudCAtPiBjb250
ZXh0OiAiIDw8ICZsYXlvdXRTdGF0ZSgpIDw8ICIgcm9vdDogIiA8PCAmcm9vdCgpKTsKIApAQCAt
MTYxLDkgKzE2MSw5IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0Nv
bnRlbnQoKQogICAgICAgICBpZiAoaXM8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KSkgewogICAg
ICAgICAgICAgYXV0byYgb3V0T2ZGbG93Um9vdENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5l
cj4oKm91dE9mRmxvd0JveCk7CiAgICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0g
TGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQob3V0T2ZGbG93Um9vdENvbnRh
aW5lciwgbGF5b3V0U3RhdGUoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5
b3V0SW5GbG93Q29udGVudCgpOworICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91
dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUpOwogICAgICAgICAgICAgY29tcHV0ZU91
dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkob3V0T2ZGbG93Um9vdENvbnRhaW5lcik7Ci0gICAgICAg
ICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudCgpOyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRl
bnQoaW52YWxpZGF0aW9uU3RhdGUpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvbXB1
dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KCpvdXRPZkZsb3dCb3gpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMGZmYWM3NzFiM2E0Yzk4
ZjA4Y2UzNjdiZmIyNGViYjg1ZTJkMWNlMC4uZjljYzM3NmMyMzRlNGY5MzJjNjU1YzgwMmI0ZDlk
NDRkYTRjZDgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgK
QEAgLTQzLDE5ICs0MywyMCBAQCBzdHJ1Y3QgTGVuZ3RoOwogCiBuYW1lc3BhY2UgTGF5b3V0IHsK
IAotY2xhc3MgQ29udGFpbmVyOwogY2xhc3MgQm94OwotY2xhc3MgRm9ybWF0dGluZ1N0YXRlOwot
Y2xhc3MgTGF5b3V0U3RhdGU7CiBzdHJ1Y3QgQ29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luOwogc3Ry
dWN0IENvbXB1dGVkVmVydGljYWxNYXJnaW47Ci1zdHJ1Y3QgRWRnZXM7CitjbGFzcyBDb250YWlu
ZXI7CiBzdHJ1Y3QgQ29udGVudEhlaWdodEFuZE1hcmdpbjsKK3N0cnVjdCBDb250ZW50V2lkdGhB
bmRNYXJnaW47CitzdHJ1Y3QgRWRnZXM7CitjbGFzcyBGb3JtYXR0aW5nU3RhdGU7CiBzdHJ1Y3Qg
SG9yaXpvbnRhbEdlb21ldHJ5OworY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CitjbGFzcyBMYXlv
dXRTdGF0ZTsKIHN0cnVjdCBVc2VkSG9yaXpvbnRhbFZhbHVlczsKIHN0cnVjdCBVc2VkVmVydGlj
YWxWYWx1ZXM7CiBzdHJ1Y3QgVmVydGljYWxHZW9tZXRyeTsKLXN0cnVjdCBDb250ZW50V2lkdGhB
bmRNYXJnaW47CiAKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKEZvcm1hdHRpbmdDb250ZXh0KTsKQEAgLTYzLDggKzY0LDggQEAgcHVibGljOgog
ICAgIEZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRS
b290LCBGb3JtYXR0aW5nU3RhdGUmKTsKICAgICB2aXJ0dWFsIH5Gb3JtYXR0aW5nQ29udGV4dCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoKSA9IDA7Ci0gICAgdm9p
ZCBsYXlvdXRPdXRPZkZsb3dDb250ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dEluRmxv
d0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmKSA9IDA7CisgICAgdm9pZCBsYXlvdXRPdXRPZkZs
b3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJik7CiAKICAgICBzdHJ1Y3QgSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyB7CiAgICAgICAgIHZvaWQgZXhwYW5kKExheW91dFVuaXQgaG9yaXpvbnRh
bFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCAyMTYx
YTNkNWFiZTg5YTdmZDllNGI1YzU1ZmMzNjNkOWFlZTcxMjI4Li4xYjkzMzU5MTlhZTU0OTcwMDI0
Y2ZjMzk4NGY3MjZkMmRkYjI1NmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRl
eHQuY3BwCkBAIC01NiwyMiArNTYsMjIgQEAgTGF5b3V0Q29udGV4dDo6TGF5b3V0Q29udGV4dChM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiB7CiB9CiAKLXZvaWQgTGF5b3V0Q29udGV4dDo6bGF5
b3V0KGNvbnN0IEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSkKK3ZvaWQgTGF5
b3V0Q29udGV4dDo6bGF5b3V0KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSkK
IHsKICAgICBQaGFzZVNjb3BlIHNjb3BlKFBoYXNlOjpUeXBlOjpMYXlvdXQpOwogCiAgICAgYXV0
byYgZm9ybWF0dGluZ0NvbnRleHRSb290c0ZvckxheW91dCA9IGludmFsaWRhdGlvblN0YXRlLmZv
cm1hdHRpbmdDb250ZXh0Um9vdHMoKTsKICAgICBBU1NFUlQoIWZvcm1hdHRpbmdDb250ZXh0Um9v
dHNGb3JMYXlvdXQuY29tcHV0ZXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8mIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCA6IGZvcm1hdHRpbmdDb250ZXh0Um9vdHNGb3JMYXlvdXQpCi0gICAgICAgIGxh
eW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworICAg
ICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoZm9ybWF0dGluZ0NvbnRleHRSb290
LCBpbnZhbGlkYXRpb25TdGF0ZSk7CiB9CiAKLXZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRS
b290KQordm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUo
Y29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEludmFsaWRhdGlvblN0YXRl
JiBpbnZhbGlkYXRpb25TdGF0ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChmb3JtYXR0aW5nQ29u
dGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICBhdXRvIGZvcm1h
dHRpbmdDb250ZXh0ID0gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ0NvbnRleHRS
b290LCBsYXlvdXRTdGF0ZSgpKTsKLSAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93
Q29udGVudCgpOwotICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50
KCk7CisgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0
aW9uU3RhdGUpOworICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50
KGludmFsaWRhdGlvblN0YXRlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250
ZXh0PiBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWlu
ZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmgKaW5kZXggYjEyOGIwMGRiNTQ3YTNkMTFlNzc4
ZGE2MzgzOGNkMzE3MTk1MDdiMy4uZmFlZDJlYmViYzQzNGIwZDk4NTEyMGNmYTRmOTE1ODFkZTY1
MWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oCkBAIC01NywxMiArNTcs
MTIgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHBhaW50KGNvbnN0IExheW91dFN0YXRlJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAogICAgIExheW91
dENvbnRleHQoTGF5b3V0U3RhdGUmKTsKLSAgICB2b2lkIGxheW91dChjb25zdCBJbnZhbGlkYXRp
b25TdGF0ZSYpOworICAgIHZvaWQgbGF5b3V0KEludmFsaWRhdGlvblN0YXRlJik7CiAKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVhdGVGb3JtYXR0aW5n
Q29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5b3V0U3Rh
dGUmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJl
ZShjb25zdCBDb250YWluZXImKTsKKyAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3Vi
dHJlZShjb25zdCBDb250YWluZXImLCBJbnZhbGlkYXRpb25TdGF0ZSYpOwogICAgIExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSgpIHsgcmV0dXJuIG1fbGF5b3V0U3RhdGU7IH0KIAogICAgIC8vIEZv
ciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IGI2NTNhMTdmNmFlNjAyNGY5OGUxYzcxNjZmZmFhNTdkMDg1ZDc0YWMuLjM1Mjg2ODE4NjEw
NGFkNDQ3ZjIyMGFmODFjMmQ2YTk4ZmFkNjAxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdTdGF0
ZS5oIgorI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dENv
bnRhaW5lci5oIgpAQCAtNDksMjEgKzUwLDQ4IEBAIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4CiB7
CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCgp
CitlbnVtIGNsYXNzIExheW91dERpcmVjdGlvbiB7IENoaWxkLCBTaWJsaW5nIH07Cit2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvblN0YXRlKQogewogICAgIC8vIDkuNC4xIEJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dHMKICAgICAvLyBJbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCwgYm94ZXMgYXJl
IGxhaWQgb3V0IG9uZSBhZnRlciB0aGUgb3RoZXIsIHZlcnRpY2FsbHksIGJlZ2lubmluZyBhdCB0
aGUgdG9wIG9mIGEgY29udGFpbmluZyBibG9jay4KICAgICAvLyBUaGUgdmVydGljYWwgZGlzdGFu
Y2UgYmV0d2VlbiB0d28gc2libGluZyBib3hlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAnbWFyZ2lu
JyBwcm9wZXJ0aWVzLgogICAgIC8vIFZlcnRpY2FsIG1hcmdpbnMgYmV0d2VlbiBhZGphY2VudCBi
bG9jay1sZXZlbCBib3hlcyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBjb2xsYXBzZS4K
ICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAi
W1N0YXJ0XSAtPiBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290KCIg
PDwgJnJvb3QoKSA8PCAiKSIpOwotCiAgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSByb290KCk7
Ci0gICAgTGF5b3V0UXVldWUgbGF5b3V0UXVldWU7CiAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQg
PSBGbG9hdGluZ0NvbnRleHQgeyBmb3JtYXR0aW5nUm9vdCwgKnRoaXMsIGZvcm1hdHRpbmdTdGF0
ZSgpLmZsb2F0aW5nU3RhdGUoKSB9OworCisgICAgTGF5b3V0UXVldWUgbGF5b3V0UXVldWU7Cisg
ICAgYXV0byBhcHBlbmROZXh0VG9MYXlvdXRRdWV1ZSA9IFsmXSAoY29uc3QgYXV0byYgbGF5b3V0
Qm94LCBhdXRvIGRpcmVjdGlvbikgeworICAgICAgICBpZiAoZGlyZWN0aW9uID09IExheW91dERp
cmVjdGlvbjo6Q2hpbGQpIHsKKyAgICAgICAgICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRC
b3gpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoYXV0
byogY2hpbGQgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dPckZs
b2F0aW5nQ2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRJbkZsb3dPckZsb2F0aW5n
U2libGluZygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbnZhbGlkYXRpb25TdGF0ZS5uZWVk
c0xheW91dCgqY2hpbGQpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBsYXlvdXRRdWV1ZS5hcHBlbmQoY2hpbGQpOworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBMYXlvdXREaXJlY3Rpb246OlNpYmxpbmcp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRCb3gubmV4dElu
Rmxvd09yRmxvYXRpbmdTaWJsaW5nKCk7IG5leHRTaWJsaW5nOyBuZXh0U2libGluZyA9IG5leHRT
aWJsaW5nLT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgeworICAgICAgICAgICAgICAg
IGlmICghaW52YWxpZGF0aW9uU3RhdGUubmVlZHNMYXlvdXQoKm5leHRTaWJsaW5nKSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBw
ZW5kKG5leHRTaWJsaW5nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CisKKwogICAg
IC8vIFRoaXMgaXMgYSBwb3N0LW9yZGVyIHRyZWUgdHJhdmVyc2FsIGxheW91dC4KICAgICAvLyBU
aGUgcm9vdCBjb250YWluZXIgbGF5b3V0IGlzIGRvbmUgaW4gdGhlIGZvcm1hdHRpbmcgY29udGV4
dCBpdCBsaXZlcyBpbiwgbm90IHRoYXQgb25lIGl0IGNyZWF0ZXMsIHNvIGxldCdzIHN0YXJ0IHdp
dGggdGhlIGZpcnN0IGNoaWxkLgotICAgIGlmIChhdXRvKiBmaXJzdENoaWxkID0gZm9ybWF0dGlu
Z1Jvb3QuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKLSAgICAgICAgbGF5b3V0UXVldWUu
YXBwZW5kKGZpcnN0Q2hpbGQpOworICAgIGFwcGVuZE5leHRUb0xheW91dFF1ZXVlKGZvcm1hdHRp
bmdSb290LCBMYXlvdXREaXJlY3Rpb246OkNoaWxkKTsKICAgICAvLyAxLiBHbyBhbGwgdGhlIHdh
eSBkb3duIHRvIHRoZSBsZWFmIG5vZGUKICAgICAvLyAyLiBDb21wdXRlIHN0YXRpYyBwb3NpdGlv
biBhbmQgd2lkdGggYXMgd2UgdHJhdmVyc2UgZG93bgogICAgIC8vIDMuIEFzIHdlIGNsaW1iIGJh
Y2sgb24gdGhlIHRyZWUsIGNvbXB1dGUgaGVpZ2h0IGFuZCBmaW5pYWxpemUgcG9zaXRpb24KQEAg
LTc0LDQwICsxMDIsMzMgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZs
b3dDb250ZW50KCkKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS5s
YXN0KCk7CiAKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5n
Q29udGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290
KGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICAgICAgICAgICAgICAvLyBsYXlvdXRG
b3JtYXR0aW5nQ29udGV4dFJvb3QoKSB0YWtlcyBjYXJlIG9mIHRoZSBsYXlvdXRCb3ggaXRzZWxm
IGFuZCBpdHMgZGVzY2VuZGFudHMuCisgICAgICAgICAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHRSb290KGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94LCBpbnZhbGlkYXRpb25TdGF0ZSk7
CiAgICAgICAgICAgICAgICAgbGF5b3V0UXVldWUucmVtb3ZlTGFzdCgpOwotICAgICAgICAgICAg
ICAgIC8vIFNpbmNlIHRoaXMgYm94IGlzIGEgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QsIGl0IHRh
a2VzIGNhcmUgb2YgaXRzIGVudGlyZSBzdWJ0cmVlLgotICAgICAgICAgICAgICAgIC8vIENvbnRp
bnVlIHdpdGggbmV4dCBzaWJsaW5nIGlmIGV4aXN0cy4KLSAgICAgICAgICAgICAgICBpZiAoIWxh
eW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBp
ZiAoIWFwcGVuZE5leHRUb0xheW91dFF1ZXVlKGxheW91dEJveCwgTGF5b3V0RGlyZWN0aW9uOjpT
aWJsaW5nKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgbGF5
b3V0UXVldWUuYXBwZW5kKGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSk7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbQ29t
cHV0ZV0gLT4gW1Bvc2l0aW9uXVtCb3JkZXJdW1BhZGRpbmddW1dpZHRoXVtNYXJnaW5dIC0+IGZv
ciBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgICAgICAgICBjb21wdXRl
Qm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gpOwogICAgICAgICAgICAgY29tcHV0ZVdpZHRoQW5k
TWFyZ2luKGxheW91dEJveCk7CiAgICAgICAgICAgICBjb21wdXRlU3RhdGljUG9zaXRpb24oZmxv
YXRpbmdDb250ZXh0LCBsYXlvdXRCb3gpOwotICAgICAgICAgICAgaWYgKCFpczxDb250YWluZXI+
KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dP
ckZsb2F0aW5nQ2hpbGQoKSkKKworICAgICAgICAgICAgaWYgKCFhcHBlbmROZXh0VG9MYXlvdXRR
dWV1ZShsYXlvdXRCb3gsIExheW91dERpcmVjdGlvbjo6Q2hpbGQpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBwZW5kKGRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIENsaW1iIGJhY2sgb24gdGhlIGFuY2VzdG9ycyBhbmQgY29tcHV0ZSBoZWln
aHQvZmluYWwgcG9zaXRpb24uCiAgICAgICAgIHdoaWxlICghbGF5b3V0UXVldWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAvLyBBbGwgaW5mbG93IGRlc2NlbmRhbnRzIChpZiB0aGVyZSBhcmUg
YW55KSBhcmUgbGFpZCBvdXQgYnkgbm93LiBMZXQncyBjb21wdXRlIHRoZSBib3gncyBoZWlnaHQu
CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUudGFrZUxhc3QoKTsK
LQotICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltDb21wdXRlXSAtPiBbSGVpZ2h0XVtNYXJnaW5dIC0+IGZvciBsYXlvdXRCb3go
IiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgICAgICAgICAvLyBGb3JtYXR0aW5nIHJvb3Qg
Ym94ZXMgYXJlIHNwZWNpYWwtY2FzZWQgYW5kIHRoZXkgZG9uJ3QgY29tZSBoZXJlLgogICAgICAg
ICAgICAgQVNTRVJUKCFsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsK
ICAgICAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94KTsKICAgICAgICAg
ICAgIC8vIE1vdmUgaW4tZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVuIHRvIHRoZWlyIGZpbmFsIHBv
c2l0aW9uLgogICAgICAgICAgICAgcGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4obGF5b3V0
Qm94KTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9IGxheW91dEJveC5uZXh0
SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGxheW91dFF1ZXVl
LmFwcGVuZChuZXh0U2libGluZyk7CisgICAgICAgICAgICBpZiAoYXBwZW5kTmV4dFRvTGF5b3V0
UXVldWUobGF5b3V0Qm94LCBMYXlvdXREaXJlY3Rpb246OlNpYmxpbmcpKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIC8vIFBsYWNl
IHRoZSBpbmZsb3cgcG9zaXRpb25lZCBjaGlsZHJlbi4KQEAgLTE0OSw3ICsxNzAsNyBAQCBPcHRp
b25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lk
dGhGb3JGbG9hdEF2b2lkZXIoYwogICAgIHJldHVybiBhdmFpbGFibGVXaWR0aDsKIH0KIAotdm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxv
YXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQordm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxv
YXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBJbnZh
bGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUpCiB7CiAgICAgQVNTRVJUKGxheW91dEJv
eC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIC8vIFN0YXJ0IGxheWluZyBv
dXQgdGhpcyBmb3JtYXR0aW5nIHJvb3QgaW4gdGhlIGZvcm1hdHRpbmcgY29udGVueHQgaXQgbGl2
ZXMgaW4uCkBAIC0xNjcsMTEgKzE4OCwxMSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdGluZ0NvbnRleHQmIGZsb2F0aQogICAg
ICAgICAvLyBTd2ljaCBvdmVyIHRvIHRoZSBuZXcgZm9ybWF0dGluZyBjb250ZXh0ICh0aGUgb25l
IHRoYXQgdGhlIHJvb3QgY3JlYXRlcykuCiAgICAgICAgIGF1dG8mIHJvb3RDb250YWluZXIgPSBk
b3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CiAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0Nv
bnRleHQgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChyb290Q29udGFp
bmVyLCBsYXlvdXRTdGF0ZSgpKTsKLSAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dElu
Rmxvd0NvbnRlbnQoKTsKKyAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0Nv
bnRlbnQoaW52YWxpZGF0aW9uU3RhdGUpOwogICAgICAgICAvLyBDb21lIGJhY2sgYW5kIGZpbmFs
aXplIHRoZSByb290J3MgZ2VvbWV0cnkuCiAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4o
cm9vdENvbnRhaW5lcik7CiAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGNvbXB1dGVkIHRoZSByb290
J3MgaGVpZ2h0LCB3ZSBjYW4gZ28gYmFjayBhbmQgbGF5b3V0IHRoZSBvdXQtb2YtZmxvdyBjb250
ZW50LgotICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudCgp
OworICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChpbnZh
bGlkYXRpb25TdGF0ZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJn
aW4obGF5b3V0Qm94KTsKICAgICAvLyBGbG9hdCByZWxhdGVkIGZpbmFsIHBvc2l0aW9uaW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBmYTAzMmY0NjFmMjAxOGMwYTUwNTQ4NmQ2
NTg3OTEzOTFkZmIwMzQyLi40Yzc4YWY1Y2Y2NmZmNmMyY2M4ZTBjN2IzMmMzMzc3NzVlYmUxNzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDgsMTAgKzQ4LDEwIEBAIGNsYXNz
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewogcHVi
bGljOgogICAgIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIEJsb2NrRm9ybWF0dGluZ1N0YXRlJik7CiAKLSAgICB2b2lkIGxheW91
dEluRmxvd0NvbnRlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQo
SW52YWxpZGF0aW9uU3RhdGUmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGxheW91
dEZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAg
ICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdGluZ0NvbnRleHQmLCBjb25z
dCBCb3gmLCBJbnZhbGlkYXRpb25TdGF0ZSYpOwogICAgIHZvaWQgcGxhY2VJbkZsb3dQb3NpdGlv
bmVkQ2hpbGRyZW4oY29uc3QgQm94Jik7CiAKICAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdp
bihjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxhYmxlV2lkdGggPSB7
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDczOTFiMjdjZjNl
NGU1ZDczODM5NTA3NzdkODQ0OWYzNWI0YzRkNjUuLjUzZWE5YjUyNGVkY2NlZDUxOTNkMDg1MWUw
MzBhNjNjN2NmYjZlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2lu
Y2x1ZGUgIklubGluZVRleHRJdGVtLmgiCisjaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIK
ICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKICNp
bmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCkBAIC02Miw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUg
Y29uc3QgQm94KiBuZXh0SW5QcmVPcmRlcihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29u
dGFpbmVyJiBzCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9u
U3RhdGUpCiB7CiAgICAgaWYgKCFyb290KCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTc2LDcgKzc3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCgpCiAgICAgLy8gMi4gQ29sbGVjdCB0aGUgaW5saW5l
IGl0ZW1zIChmbGF0dGVuIHRoZSB0aGUgbGF5b3V0IHRyZWUpIGFuZCBwbGFjZSB0aGVtIG9uIGxp
bmVzIGluIGJpZGlyZWN0aW9uYWwgb3JkZXIuIAogICAgIHdoaWxlIChsYXlvdXRCb3gpIHsKICAg
ICAgICAgaWYgKGxheW91dEJveC0+ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQotICAg
ICAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KCpsYXlvdXRCb3gsIHVzZWRIb3Jp
em9udGFsVmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICAgICAgbGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRSb290KCpsYXlvdXRCb3gsIGludmFsaWRhdGlvblN0YXRlLCB1c2VkSG9y
aXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY29tcHV0ZUhvcml6b250YWxBbmRWZXJ0aWNhbEdlb21ldHJ5KCpsYXlvdXRCb3gsIHVz
ZWRIb3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMpOwogICAgICAgICBsYXlvdXRC
b3ggPSBuZXh0SW5QcmVPcmRlcigqbGF5b3V0Qm94LCByb290KCkpOwpAQCAtMTMyLDcgKzEzMyw3
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoVXNlZEhvcml6b250
YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1CiAgICAgfQogfQogCi12b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFs
dWVzLCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKQordm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYg
Zm9ybWF0dGluZ0NvbnRleHRSb290LCBJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3Rh
dGUsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGlj
YWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKQogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29u
dGV4dFJvb3QuaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
aXNJbmxpbmVCbG9ja0JveCgpKTsKIApAQCAtMTQyLDExICsxNDMsMTEgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYg
Zm9ybWF0dGluZ0MKICAgICBpZiAoaXM8Q29udGFpbmVyPihmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
KSB7CiAgICAgICAgIGF1dG8mIHJvb3RDb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGZv
cm1hdHRpbmdDb250ZXh0Um9vdCk7CiAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBM
YXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChyb290Q29udGFpbmVyLCBsYXlv
dXRTdGF0ZSgpKTsKLSAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRl
bnQoKTsKKyAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52
YWxpZGF0aW9uU3RhdGUpOwogICAgICAgICAvLyBDb21lIGJhY2sgYW5kIGZpbmFsaXplIHRoZSBy
b290J3MgaGVpZ2h0IGFuZCBtYXJnaW4uCiAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4o
cm9vdENvbnRhaW5lciwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7
CiAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGNvbXB1dGVkIHRoZSByb290J3MgaGVpZ2h0LCB3ZSBj
YW4gZ28gYmFjayBhbmQgbGF5b3V0IHRoZSBvdXQtb2YtZmxvdyBjb250ZW50LgotICAgICAgICBm
b3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudCgpOworICAgICAgICBmb3Jt
YXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oZm9ybWF0dGluZ0Nv
bnRleHRSb290LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGI2OTg4NDMwZWEyZDZjMmFkMjc2
NzIyMTc3NTA4Zjg5NjYwNjUwZTEuLjdhODcxYmE0NDZiMzMxZGZlOGY4NDdiZDU5ZGRjOGFiNmRl
ZWJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMzUsNiArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW5saW5l
Rm9ybWF0dGluZ1N0YXRlOworY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CiAKIC8vIFRoaXMgY2xh
c3MgaW1wbGVtZW50cyB0aGUgbGF5b3V0IGxvZ2ljIGZvciBpbmxpbmUgZm9ybWF0dGluZyBjb250
ZXh0cy4KIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVuLmh0bWwjaW5saW5l
LWZvcm1hdHRpbmcKQEAgLTQyLDcgKzQzLDcgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOwogcHVibGljOgogICAgIElubGluZUZvcm1hdHRp
bmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUmKTsKLSAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVk
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJyaWRlOwpAQCAtNzYsNyArNzcsNyBAQCBw
cml2YXRlOgogICAgIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSBnZW9tZXRyeSgp
IGNvbnN0IHsgcmV0dXJuIEdlb21ldHJ5KCp0aGlzKTsgfQogCiAgICAgdm9pZCBsaW5lTGF5b3V0
KFVzZWRIb3Jpem9udGFsVmFsdWVzKTsKLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0
Um9vdChjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVz
KTsKKyAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmLCBJbnZh
bGlkYXRpb25TdGF0ZSYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMp
OwogICAgIHZvaWQgY29tcHV0ZUhvcml6b250YWxBbmRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJv
eCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMpOwogCiAgICAgdm9p
ZCBjb21wdXRlSW50cmluc2ljV2lkdGhGb3JGb3JtYXR0aW5nUm9vdChjb25zdCBCb3gmLCBVc2Vk
SG9yaXpvbnRhbFZhbHVlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW52
YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnZhbGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuY3BwCmluZGV4IDk5ZWUzM2Q2NDZjZjMyOWYz
YTg5YWQ4ZGJmN2Y5MDViNzIwOGQ0NWUuLmE5ZmI5ZTBmZDA5OTAyODQ4ZWUxYjJiMmZlOWUyYjk1
MzQyYjczMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnZhbGlkYXRpb24v
SW52YWxpZGF0aW9uU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnZhbGlk
YXRpb24vSW52YWxpZGF0aW9uU3RhdGUuY3BwCkBAIC00Nyw2ICs0NywxMSBAQCB2b2lkIEludmFs
aWRhdGlvblN0YXRlOjptYXJrTmVlZHNVcGRhdGUoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAg
bV9mb3JtYXR0aW5nQ29udGV4dFJvb3RzLmFkZCgmbGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0
Um9vdCgpKTsKIH0KIAorYm9vbCBJbnZhbGlkYXRpb25TdGF0ZTo6bmVlZHNMYXlvdXQoY29uc3Qg
Qm94JikgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0
YXRlLmgKaW5kZXggODMyOWZlOGI1ZWI4ZmU2OTBjY2M2MDYyNmNlZjQwYWMzNzJkM2E3NC4uNWUy
MjQ1ZWM3NDA0ZmIwODQ3OWExOWEyMzU4OTRjZWE2OTFmYjZjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuaApAQCAt
NDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgSW52YWxpZGF0aW9uU3RhdGUoKTsKIAogICAgIHZv
aWQgbWFya05lZWRzVXBkYXRlKGNvbnN0IEJveCYpOworICAgIGJvb2wgbmVlZHNMYXlvdXQoY29u
c3QgQm94JikgY29uc3Q7CiAKICAgICB1c2luZyBGb3JtYXR0aW5nQ29udGV4dFJvb3RzID0gV2Vh
a0hhc2hTZXQ8Y29uc3QgQ29udGFpbmVyPjsKICAgICAvLyBGSVhNRTogV2UgY3VycmVudGx5IGRv
IGZ1bGwgZm9ybWF0dGluZyBjb250ZXh0IGxheW91dHMgKG5vIHBhcnRpYWwgbGF5b3V0IHdpdGhp
biBhIGZvcm1hdHRpbmcgY29udGV4dCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCBmNjdmZmMwMGMxMTQ5Yjk0NWU0MWQyNmFlNDhlYzYxMWYxZmJjYjUxLi5lYTAwM2Y4ODNh
Y2VlMWMxM2IzOTZlMTM4ZDBiY2E2NDFlZWIzNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQogCisjaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJM
YXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VGFibGVGb3JtYXR0aW5nU3RhdGUuaCIKQEAgLTU3LDcgKzU4LDcgQEAgVGFibGVGb3JtYXR0aW5n
Q29udGV4dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRp
bmdDb250ZXgKIHsKIH0KIAotdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZs
b3dDb250ZW50KCkKK3ZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29u
dGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUpCiB7CiAgICAgYXV0byYg
Z3JpZCA9IGZvcm1hdHRpbmdTdGF0ZSgpLnRhYmxlR3JpZCgpOwogICAgIGF1dG8mIGNvbHVtbnND
b250ZXh0ID0gZ3JpZC5jb2x1bW5zQ29udGV4dCgpOwpAQCAtNzgsNyArNzksNyBAQCB2b2lkIFRh
YmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoKQogICAgIEFTU0VSVCgh
Y2VsbExpc3QuaXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8mIGNlbGwgOiBjZWxsTGlzdCkgewog
ICAgICAgICBhdXRvJiBjZWxsTGF5b3V0Qm94ID0gY2VsbC0+dGFibGVDZWxsQm94OwotICAgICAg
ICBsYXlvdXRUYWJsZUNlbGxCb3goY2VsbExheW91dEJveCwgY29sdW1uTGlzdC5hdChjZWxsLT5w
b3NpdGlvbi54KCkpKTsKKyAgICAgICAgbGF5b3V0VGFibGVDZWxsQm94KGNlbGxMYXlvdXRCb3gs
IGNvbHVtbkxpc3QuYXQoY2VsbC0+cG9zaXRpb24ueCgpKSwgaW52YWxpZGF0aW9uU3RhdGUpOwog
ICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGNvbHVtbiBhbmQgcm93IHNwYW5uaW5n
IGFuZCB0aGlzIHJlcXVpcmVzIGEgMiBwYXNzIGxheW91dC4KICAgICAgICAgYXV0byYgcm93ID0g
Z3JpZC5yb3dzKCkuYXQoY2VsbC0+cG9zaXRpb24ueSgpKTsKICAgICAgICAgcm93LnNldExvZ2lj
YWxIZWlnaHQoc3RkOjptYXgocm93LmxvZ2ljYWxIZWlnaHQoKSwgZ2VvbWV0cnlGb3JCb3goY2Vs
bExheW91dEJveCkubWFyZ2luQm94SGVpZ2h0KCkpKTsKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBU
YWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KCkKICAgICBzZXRDb21w
dXRlZEdlb21ldHJ5Rm9yUm93cygpOwogfQogCi12b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dFRhYmxlQ2VsbEJveChjb25zdCBCb3gmIGNlbGxMYXlvdXRCb3gsIGNvbnN0IFRhYmxl
R3JpZDo6Q29sdW1uJiBjb2x1bW4pCit2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dFRhYmxlQ2VsbEJveChjb25zdCBCb3gmIGNlbGxMYXlvdXRCb3gsIGNvbnN0IFRhYmxlR3JpZDo6
Q29sdW1uJiBjb2x1bW4sIEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSkKIHsK
ICAgICBhdXRvJiBjZWxsRGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3go
Y2VsbExheW91dEJveCk7CiAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoY2VsbExheW91dEJv
eCk7CkBAIC0xMDksNyArMTEwLDcgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlv
dXRUYWJsZUNlbGxCb3goY29uc3QgQm94JiBjZWxsTGF5b3V0Qm94LCBjb25zdAogCiAgICAgQVNT
RVJUKGNlbGxMYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwog
ICAgIGlmIChpczxDb250YWluZXI+KGNlbGxMYXlvdXRCb3gpKQotICAgICAgICBMYXlvdXRDb250
ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWluZXI+KGNlbGxMYXlv
dXRCb3gpLCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudCgpOworICAgICAgICBM
YXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWluZXI+
KGNlbGxMYXlvdXRCb3gpLCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudChpbnZh
bGlkYXRpb25TdGF0ZSk7CiAgICAgY2VsbERpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4oeyB7
IH0sIHsgfSB9KTsKICAgICBjZWxsRGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGdlb21l
dHJ5KCkudGFibGVDZWxsSGVpZ2h0QW5kTWFyZ2luKGNlbGxMYXlvdXRCb3gpLmNvbnRlbnRIZWln
aHQpOwogICAgIC8vIEZJWE1FOiBDaGVjayB3aGF0IHRvIGRvIHdpdGggb3V0LW9mLWZsb3cgY29u
dGVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcv
VGFibGVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9y
bWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZTljYTU1MzgzYzMzYTA3N2Qw
MmE0NWJhZmRmNWY4MTRkN2M4MDRhNC4uZDMxNTgzODUxY2M4M2VmMGY0MjhjNjY0N2I0NDY1NDNh
NTA0ZDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGlu
Zy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3Rh
YmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCitjbGFzcyBJbnZhbGlk
YXRpb25TdGF0ZTsKIGNsYXNzIFRhYmxlRm9ybWF0dGluZ1N0YXRlOwogLy8gVGhpcyBjbGFzcyBp
bXBsZW1lbnRzIHRoZSBsYXlvdXQgbG9naWMgZm9yIHRhYmxlIGZvcm1hdHRpbmcgY29udGV4dHMu
CiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdGFibGVzLmh0bWwKQEAgLTQxLDcgKzQy
LDcgQEAgY2xhc3MgVGFibGVGb3JtYXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29u
dGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUYWJsZUZvcm1hdHRpbmdDb250ZXh0
KTsKIHB1YmxpYzoKICAgICBUYWJsZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYg
Zm9ybWF0dGluZ0NvbnRleHRSb290LCBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYpOwotICAgIHZvaWQg
bGF5b3V0SW5GbG93Q29udGVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0SW5GbG93Q29u
dGVudChJbnZhbGlkYXRpb25TdGF0ZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGNsYXNz
IEdlb21ldHJ5IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7CkBAIC01OCw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkg
Z2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBHZW9tZXRyeSgqdGhpcyk7IH0KIAogICAgIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBsYXlvdXRUYWJsZUNlbGxCb3goY29uc3QgQm94JiBjZWxsTGF5
b3V0Qm94LCBjb25zdCBUYWJsZUdyaWQ6OkNvbHVtbiYpOworICAgIHZvaWQgbGF5b3V0VGFibGVD
ZWxsQm94KGNvbnN0IEJveCYgY2VsbExheW91dEJveCwgY29uc3QgVGFibGVHcmlkOjpDb2x1bW4m
LCBJbnZhbGlkYXRpb25TdGF0ZSYpOwogICAgIHZvaWQgcG9zaXRpb25UYWJsZUNlbGxzKCk7CiAg
ICAgdm9pZCBzZXRDb21wdXRlZEdlb21ldHJ5Rm9yUm93cygpOwogICAgIHZvaWQgc2V0Q29tcHV0
ZWRHZW9tZXRyeUZvclNlY3Rpb25zKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>