<?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>229221</bug_id>
          
          <creation_ts>2021-08-17 19:27:51 -0700</creation_ts>
          <short_desc>[LFC][IFC] Do not pass in the InvalidationState to the layout functions</short_desc>
          <delta_ts>2021-09-13 12:36:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</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>1785025</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-08-17 19:27:51 -0700</bug_when>
    <thetext>Invalidation should happen within the formatting context and not coming from the root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785028</commentid>
    <comment_count>1</comment_count>
      <attachid>435737</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-17 19:34:10 -0700</bug_when>
    <thetext>Created attachment 435737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787064</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-24 19:28:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/82321574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792976</commentid>
    <comment_count>3</comment_count>
      <attachid>438047</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-09-13 09:36:50 -0700</bug_when>
    <thetext>Created attachment 438047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793042</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-09-13 12:35:46 -0700</bug_when>
    <thetext>Committed r282348 (241614@main): &lt;https://commits.webkit.org/241614@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435737</attachid>
            <date>2021-08-17 19:34:10 -0700</date>
            <delta_ts>2021-09-13 09:36:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229221-20210817193409.patch</filename>
            <type>text/plain</type>
            <size>39586</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZjNDFlNGE0ZDdhN2Zk
YjhhZDRlMjUwY2FkNjg5YTE2MzhkZmRkMy4uNDgyN2EwOGQ0MjkyMzM4MjNkMjVlODAyMTc1NjYw
MGUxZGVhNDEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA4LTE3ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIERvIG5vdCBw
YXNzIGluIHRoZSBJbnZhbGlkYXRpb25TdGF0ZSB0byB0aGUgbGF5b3V0IGZ1bmN0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MjIxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBw
cmVwYXJhdGlvbiBmb3IgaW50cm9kdWNpbmcgZm9ybWF0dGluZyBjb250ZXh0IGxldmVsIGludmFs
aWRhdGlvbi4KKworICAgICAgICBJbnZhbGlkYXRpb24gbG9naWMgc2hvdWxkIGJlIHZlcnkgc3Bl
Y2lmaWMgdG8gdGhlIGZvcm1hdHRpbmcgY29udGV4dC4gRWFjaCBmb3JtYXR0aW5nIGNvbnRleHQg
bWF5IGltcGxlbWVudAorICAgICAgICBhIHZlcnkgZGlmZmVyZW50IHR5cGUgb2YgaW52YWxpZGF0
aW9uIChlLmcuIElGQyAtPiBsaW5lIGxldmVsLCBURkMgLT4gcm93IGxldmVsIGV0YyksIHRpZ2h0
IHdpdGggdGhlIGxheW91dCBsb2dpYyBpdHNlbGYuCisKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6Omxh
eW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6OmxheW91dFdp
dGhQcmVwYXJlZFJvb3RHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91
dENvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZSk6CisgICAgICAgICogbGF5
b3V0L0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZs
b3dDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFRhYmxlQm94KToK
KyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9U
YWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZsZXhGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsZXhGb3JtYXR0aW5nQ29udGV4dDo6
c2l6ZUFuZFBsYWNlRmxleEl0ZW1zKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpsaW5lTGF5b3V0Rm9ySW50ZXJncmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUpOgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9U
YWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFi
bGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNl
bGxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUFuZERpc3RyaWJ1dGVFeHRyYVNwYWNlKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsYXlvdXQpOgorICAg
ICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cyk6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlld0xheW91dENvbnRleHQ6OmxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQpOgor
CiAyMDIxLTA4LTE2ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TEZDXVtJRkNdIERlY291cGxlIGxpbmUgYm94IGJ1aWxkaW5nIGFuZCB2ZXJ0aWNhbCBhbGlnbmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IDc5YjllY2Q2ODI3
NGMwMGM0NTFhMGJlMGIzOGVkNjJhMzkxNjU1ZDkuLmJkZDQ2YzQwNjM1N2UwMTliODAzZTBhZThl
YzcxYzg4ZWRiMjIxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAK
QEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJGbGV4Rm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5j
bHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0
aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJJbnZhbGlkYXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAi
SW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJM
YXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgpAQCAt
NTksNyArNTcsNyBAQCBMYXlvdXRDb250ZXh0OjpMYXlvdXRDb250ZXh0KExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSkKIHsKIH0KIAotdm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXQoY29uc3QgTGF5
b3V0U2l6ZSYgcm9vdENvbnRlbnRCb3hTaXplLCBJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0
aW9uU3RhdGUpCit2b2lkIExheW91dENvbnRleHQ6OmxheW91dChjb25zdCBMYXlvdXRTaXplJiBy
b290Q29udGVudEJveFNpemUpCiB7CiAgICAgLy8gU2V0IHRoZSBnZW9tZXRyeSBvbiB0aGUgcm9v
dC4KICAgICAvLyBOb3RlIHRoYXQgd2UgbmV2ZXIgbGF5b3V0IHRoZSByb290IGJveC4gSXQgaGFz
IHRvIGhhdmUgYW4gYWxyZWFkeSBjb21wdXRlZCBnZW9tZXRyeSAoaW4gY2FzZSBvZiBJQ0IsIGl0
J3MgdGhlIHZpZXcgZ2VvbWV0cnkpLgpAQCAtNzQsMjMgKzcyLDE2IEBAIHZvaWQgTGF5b3V0Q29u
dGV4dDo6bGF5b3V0KGNvbnN0IExheW91dFNpemUmIHJvb3RDb250ZW50Qm94U2l6ZSwgSW52YWxp
ZGF0aW9uU3RhCiAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChyb290Q29udGVu
dEJveFNpemUuaGVpZ2h0KCkpOwogICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChy
b290Q29udGVudEJveFNpemUud2lkdGgoKSk7CiAKLSAgICBsYXlvdXRXaXRoUHJlcGFyZWRSb290
R2VvbWV0cnkoaW52YWxpZGF0aW9uU3RhdGUpOworICAgIGxheW91dFdpdGhQcmVwYXJlZFJvb3RH
ZW9tZXRyeSgpOwogfQogCi12b2lkIExheW91dENvbnRleHQ6OmxheW91dFdpdGhQcmVwYXJlZFJv
b3RHZW9tZXRyeShJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUpCit2b2lkIExh
eW91dENvbnRleHQ6OmxheW91dFdpdGhQcmVwYXJlZFJvb3RHZW9tZXRyeSgpCiB7CiAgICAgUGhh
c2VTY29wZSBzY29wZShQaGFzZTo6VHlwZTo6TGF5b3V0KTsKLQotICAgIGF1dG8mIGZvcm1hdHRp
bmdDb250ZXh0Um9vdHNGb3JMYXlvdXQgPSBpbnZhbGlkYXRpb25TdGF0ZS5mb3JtYXR0aW5nQ29u
dGV4dFJvb3RzKCk7Ci0gICAgLy8gV2hlbiBpbnZhbGlkYXRpb24gaXMgZW1wdHksIHdlIGFzc3Vt
ZSBjb25zdHJhaW50IG11dGF0aW9uIGFuZCBzdGFydCBydW5uaW5nIGxheW91dCBvbiB0aGUgY29u
dGV4dCByb290LiBMYXlvdXQgbG9naWMgc2hvdWxkIGJlIGFibGUgdG8gZmlndXJlIG91dCB0aGUg
ZGFtYWdlLgotICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3RzRm9yTGF5b3V0LmNvbXB1dGVz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZSht
X2xheW91dFN0YXRlLnJvb3QoKSwgaW52YWxpZGF0aW9uU3RhdGUpOwotCi0gICAgZm9yIChhdXRv
JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QgOiBmb3JtYXR0aW5nQ29udGV4dFJvb3RzRm9yTGF5b3V0
KQotICAgICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoZm9ybWF0dGluZ0NvbnRl
eHRSb290LCBpbnZhbGlkYXRpb25TdGF0ZSk7CisgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRT
dWJ0cmVlKG1fbGF5b3V0U3RhdGUucm9vdCgpKTsKIH0KIAotdm9pZCBMYXlvdXRDb250ZXh0Ojps
YXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdGF0ZSkKK3Zv
aWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IENv
bnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQogewogICAgIFJFTEVBU0VfQVNTRVJU
KGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwog
ICAgIGlmICghZm9ybWF0dGluZ0NvbnRleHRSb290Lmhhc0NoaWxkKCkpCkBAIC0xMDEsNyArOTIs
NyBAQCB2b2lkIExheW91dENvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShj
b25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbgogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0
Um9vdC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewogICAgICAgICBhdXRvIGNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCA9IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7IHsgYm94
R2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkg
fSwgYm94R2VvbWV0cnkuY29udGVudEJveFRvcCgpIH07Ci0gICAgICAgIGZvcm1hdHRpbmdDb250
ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBjb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQpOworICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93
Q29udGVudChjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQpOwogICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoKSBkb2VzIG5vdCBwZXJmb3JtIGxh
eW91dCBvbiB0aGUgcm9vdCwgcmF0aGVyIGl0IGxheXMgb3V0IHRoZSByb290J3MgY29udGVudC4K
QEAgLTExMCw3ICsxMDEsNyBAQCB2b2lkIExheW91dENvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdD
b250ZXh0U3VidHJlZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbgogICAgIHsKICAgICAg
ICAgYXV0byBjb25zdHJhaW50cyA9IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCB7IHsg
Ym94R2VvbWV0cnkucGFkZGluZ0JveExlZnQoKSwgYm94R2VvbWV0cnkucGFkZGluZ0JveFdpZHRo
KCkgfSwKICAgICAgICAgICAgIHsgYm94R2VvbWV0cnkucGFkZGluZ0JveFRvcCgpLCBib3hHZW9t
ZXRyeS5wYWRkaW5nQm94SGVpZ2h0KCkgfSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkg
fTsKLSAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW52
YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFpbnRzKTsKKyAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQt
PmxheW91dE91dE9mRmxvd0NvbnRlbnQoY29uc3RyYWludHMpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmgKaW5kZXggOWFlYzJjNGRkNTY4MjA1YTE3OTdhMWUy
ZGExZjI0NTA2MWViMWM3OS4uYmJiNDg4MWQ0YzIxZTY4NDY0ZmM5Zjk0NzBlMDNmYWZmMjViM2Rh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oCkBAIC00MCw3ICs0MCw2IEBA
IGNsYXNzIFJlbmRlclZpZXc7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgQ29udGFpbmVy
Qm94OwotY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CiBjbGFzcyBMYXlvdXRTdGF0ZTsKIGNsYXNz
IEZvcm1hdHRpbmdDb250ZXh0OwogCkBAIC01NCw4ICs1Myw4IEBAIGNsYXNzIExheW91dENvbnRl
eHQgewogcHVibGljOgogICAgIExheW91dENvbnRleHQoTGF5b3V0U3RhdGUmKTsKIAotICAgIHZv
aWQgbGF5b3V0KGNvbnN0IExheW91dFNpemUmIHJvb3RDb250ZW50Qm94U2l6ZSwgSW52YWxpZGF0
aW9uU3RhdGUmKTsKLSAgICB2b2lkIGxheW91dFdpdGhQcmVwYXJlZFJvb3RHZW9tZXRyeShJbnZh
bGlkYXRpb25TdGF0ZSYpOworICAgIHZvaWQgbGF5b3V0KGNvbnN0IExheW91dFNpemUmIHJvb3RD
b250ZW50Qm94U2l6ZSk7CisgICAgdm9pZCBsYXlvdXRXaXRoUHJlcGFyZWRSb290R2VvbWV0cnko
KTsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IGNyZWF0
ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRS
b290LCBMYXlvdXRTdGF0ZSYpOwogCkBAIC02NSw3ICs2NCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgotICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0
IENvbnRhaW5lckJveCYsIEludmFsaWRhdGlvblN0YXRlJik7CisgICAgdm9pZCBsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFpbmVyQm94Jik7CiAgICAgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9sYXlvdXRTdGF0ZTsgfQogCiAgICAgTGF5b3V0
U3RhdGUmIG1fbGF5b3V0U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGZh
M2NmNDc3YzM4ODNkYmY1ZWMwZmY1OGI5NDdkYzM3YzI5Y2E2MzguLjlkYTNiNTNhMmZhYzU4Mjgw
NTA2NDk0MDZjMjA1MWI3NjFjMjJjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRm9ybWF0dGluZ0dlb21ldHJ5LmgiCiAjaW5jbHVk
ZSAiRm9ybWF0dGluZ1F1aXJrcy5oIgogI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgotI2lu
Y2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5j
bHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3gu
aCIKQEAgLTEzNSw3ICsxMzQsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQm9y
ZGVyQW5kUGFkZGluZyhjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaQogICAgIGJveEdl
b21ldHJ5LnNldFBhZGRpbmcoZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRQYWRkaW5nKGxh
eW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnQubG9naWNhbFdpZHRoKSk7CiB9CiAKLXZvaWQg
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRl
bnQmIGNvbnN0cmFpbnRzKQordm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93
Q29udGVudChjb25zdCBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRz
KQogewogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFt
IDw8ICJTdGFydDogbGF5b3V0IG91dC1vZi1mbG93IGNvbnRlbnQgLT4gY29udGV4dDogIiA8PCAm
bGF5b3V0U3RhdGUoKSA8PCAiIHJvb3Q6ICIgPDwgJnJvb3QoKSk7CiAKQEAgLTE0OCw5ICsxNDcs
NiBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFs
aWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdAogCiAgICAgZm9yIChhdXRvJiBvdXRPZkZsb3dC
b3ggOiBmb3JtYXR0aW5nU3RhdGUoKS5vdXRPZkZsb3dCb3hlcygpKSB7CiAgICAgICAgIEFTU0VS
VChvdXRPZkZsb3dCb3gtPmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0gICAgICAg
IGlmICghaW52YWxpZGF0aW9uU3RhdGUubmVlZHNMYXlvdXQoKm91dE9mRmxvd0JveCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQogICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFp
bnRzID0gY29uc3RyYWludHNGb3JMYXlvdXRCb3goKm91dE9mRmxvd0JveCk7CiAgICAgICAgIGF1
dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yQm9yZGVyQW5kUGFkZGluZyA9IEhvcml6b250YWxD
b25zdHJhaW50cyB7IGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250YWwubG9naWNh
bExlZnQsIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmJvcmRlckFuZFBhZGRpbmdDb25zdHJh
aW50cyB9OwogICAgICAgICBjb21wdXRlQm9yZGVyQW5kUGFkZGluZygqb3V0T2ZGbG93Qm94LCBo
b3Jpem9udGFsQ29uc3RyYWludHNGb3JCb3JkZXJBbmRQYWRkaW5nKTsKQEAgLTE2MSw5ICsxNTcs
OSBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFs
aWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdAogICAgICAgICAgICAgYXV0byYgY29udGFpbmVy
Qm94ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94Pigqb3V0T2ZGbG93Qm94KTsKICAgICAgICAgICAg
IGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5n
Q29udGV4dChjb250YWluZXJCb3gsIGxheW91dFN0YXRlKCkpOwogICAgICAgICAgICAgaWYgKGNv
bnRhaW5lckJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKLSAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwg
Zm9ybWF0dGluZ0dlb21ldHJ5KCkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnRhaW5l
ckJveCkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dD
b250ZW50KGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChj
b250YWluZXJCb3gpKTsKICAgICAgICAgICAgIGNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21l
dHJ5KGNvbnRhaW5lckJveCwgY29udGFpbmluZ0Jsb2NrQ29uc3RyYWludHMpOwotICAgICAgICAg
ICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9u
U3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVu
dChjb250YWluZXJCb3gpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRP
dXRPZkZsb3dDb250ZW50KGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9yT3V0T2ZG
bG93Q29udGVudChjb250YWluZXJCb3gpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBj
b21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeSgqb3V0T2ZGbG93Qm94LCBjb250YWluaW5n
QmxvY2tDb25zdHJhaW50cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGU5
NDk2OWE5YzJmNmM3ZjYwNTlmYjMxOGYzNGMxZTVmNmZmMWM1NzIuLjQ2NTJjYWIzNDAwYTljN2Q2
NDNlY2FmZjRkMmU5YWU1YzhlYTBjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTUw
LDcgKzUwLDYgQEAgY2xhc3MgRm9ybWF0dGluZ0dlb21ldHJ5OwogY2xhc3MgRm9ybWF0dGluZ1N0
YXRlOwogY2xhc3MgRm9ybWF0dGluZ1F1aXJrczsKIHN0cnVjdCBJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzOwotY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CiBjbGFzcyBMYXlvdXRTdGF0ZTsKIAog
Y2xhc3MgRm9ybWF0dGluZ0NvbnRleHQgewpAQCAtNTgsOCArNTcsOCBAQCBjbGFzcyBGb3JtYXR0
aW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9ybWF0dGluZ0NvbnRleHQoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRl
JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JikgPSAwOwotICAgIHZvaWQgbGF5
b3V0T3V0T2ZGbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRz
Rm9yT3V0T2ZGbG93Q29udGVudCYpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJbkZsb3dDb250
ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpID0gMDsKKyAgICB2b2lkIGxh
eW91dE91dE9mRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50
Jik7CiAgICAgdmlydHVhbCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cygpID0gMDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgdXNlZENv
bnRlbnRIZWlnaHQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDY4ODEyMjYwYjg5NzU3MGJiZjYxZDZkNTA4ZGZhMTk1
ZGRlMjg1YzkuLmMxNTg5NjM5ZDEzMmYwMzdmMTU0MDk4MmY4MmY0OTU2ZWZjMTg3MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkJsb2NrTWFyZ2luQ29sbGFwc2UuaCIKICNpbmNsdWRlICJGbG9h
dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiSW52
YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlv
dXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCkBAIC01
OCw3ICs1Nyw3IEBAIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29uCiB7CiB9CiAKLXZvaWQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYg
aW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29u
c3RyYWludHMpCit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRl
bnQoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAg
ICAvLyA5LjQuMSBCbG9jayBmb3JtYXR0aW5nIGNvbnRleHRzCiAgICAgLy8gSW4gYSBibG9jayBm
b3JtYXR0aW5nIGNvbnRleHQsIGJveGVzIGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIgdGhlIG90aGVy
LCB2ZXJ0aWNhbGx5LCBiZWdpbm5pbmcgYXQgdGhlIHRvcCBvZiBhIGNvbnRhaW5pbmcgYmxvY2su
CkBAIC03MCwzNCArNjksNiBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElu
Rmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvbgogICAgIGF1dG8mIGZs
b2F0aW5nU3RhdGUgPSBmb3JtYXR0aW5nU3RhdGUoKS5mbG9hdGluZ1N0YXRlKCk7CiAgICAgYXV0
byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyAqdGhpcywgZmxvYXRpbmdTdGF0
ZSB9OwogCi0gICAgTGF5b3V0UXVldWUgbGF5b3V0UXVldWU7Ci0gICAgZW51bSBjbGFzcyBMYXlv
dXREaXJlY3Rpb24geyBDaGlsZCwgU2libGluZyB9OwotICAgIGF1dG8gYXBwZW5kTmV4dFRvTGF5
b3V0UXVldWUgPSBbJl0gKGNvbnN0IGF1dG8mIGxheW91dEJveCwgYXV0byBkaXJlY3Rpb24pIHsK
LSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBMYXlvdXREaXJlY3Rpb246OkNoaWxkKSB7Ci0gICAg
ICAgICAgICBpZiAoIWlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZG93bmNhc3Q8
Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgewotICAg
ICAgICAgICAgICAgIGlmICghaW52YWxpZGF0aW9uU3RhdGUubmVlZHNMYXlvdXQoKmNoaWxkKSkK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbGF5b3V0UXVl
dWUuYXBwZW5kKGNoaWxkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChkaXJlY3Rpb24gPT0gTGF5b3V0RGlyZWN0aW9uOjpTaWJsaW5nKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dPckZsb2F0aW5nU2li
bGluZygpOyBuZXh0U2libGluZzsgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZy0+bmV4dEluRmxv
d09yRmxvYXRpbmdTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWludmFsaWRhdGlv
blN0YXRlLm5lZWRzTGF5b3V0KCpuZXh0U2libGluZykpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIGxheW91dFF1ZXVlLmFwcGVuZChuZXh0U2libGluZyk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9OwotCiAgICAgYXV0byBjb25zdHJhaW50c0Zv
ckxheW91dEJveCA9IFsmXSAoY29uc3QgYXV0byYgbGF5b3V0Qm94KSB7CiAgICAgICAgIGF1dG8m
IGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAg
cmV0dXJuICZjb250YWluaW5nQmxvY2sgPT0gJmZvcm1hdHRpbmdSb290ID8gY29uc3RyYWludHMg
OiBmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29udGFp
bmluZ0Jsb2NrKTsKQEAgLTEwNSw3ICs3Niw4IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uCiAK
ICAgICAvLyBUaGlzIGlzIGEgcG9zdC1vcmRlciB0cmVlIHRyYXZlcnNhbCBsYXlvdXQuCiAgICAg
Ly8gVGhlIHJvb3QgY29udGFpbmVyIGxheW91dCBpcyBkb25lIGluIHRoZSBmb3JtYXR0aW5nIGNv
bnRleHQgaXQgbGl2ZXMgaW4sIG5vdCB0aGF0IG9uZSBpdCBjcmVhdGVzLCBzbyBsZXQncyBzdGFy
dCB3aXRoIHRoZSBmaXJzdCBjaGlsZC4KLSAgICBhcHBlbmROZXh0VG9MYXlvdXRRdWV1ZShmb3Jt
YXR0aW5nUm9vdCwgTGF5b3V0RGlyZWN0aW9uOjpDaGlsZCk7CisgICAgTGF5b3V0UXVldWUgbGF5
b3V0UXVldWU7CisgICAgbGF5b3V0UXVldWUuYXBwZW5kKGZvcm1hdHRpbmdSb290LmZpcnN0SW5G
bG93T3JGbG9hdGluZ0NoaWxkKCkpOwogICAgIC8vIDEuIEdvIGFsbCB0aGUgd2F5IGRvd24gdG8g
dGhlIGxlYWYgbm9kZQogICAgIC8vIDIuIENvbXB1dGUgc3RhdGljIHBvc2l0aW9uIGFuZCB3aWR0
aCBhcyB3ZSB0cmF2ZXJzZSBkb3duCiAgICAgLy8gMy4gQXMgd2UgY2xpbWIgYmFjayBvbiB0aGUg
dHJlZSwgY29tcHV0ZSBoZWlnaHQgYW5kIGZpbmlhbGl6ZSBwb3NpdGlvbgpAQCAtMTMzLDEyICsx
MDUsMTMgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50
KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb24KICAgICAgICAgICAgICAgICAgICAgYXV0
byBmb3JtYXR0aW5nQ29udGV4dCA9IExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250
ZXh0KGNvbnRhaW5lckJveCwgbGF5b3V0U3RhdGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChjb250YWluZXJCb3guaXNUYWJsZVdyYXBwZXJCb3goKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvd25jYXN0PFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KCpmb3JtYXR0
aW5nQ29udGV4dCkuc2V0SG9yaXpvbnRhbENvbnN0cmFpbnRzSWdub3JpbmdGbG9hdHMoY29udGFp
bmluZ0Jsb2NrQ29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUs
IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb250YWlu
ZXJCb3gpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dElu
Rmxvd0NvbnRlbnQoZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29uc3RyYWludHNGb3JJbkZsb3dDb250
ZW50KGNvbnRhaW5lckJveCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghYXBwZW5kTmV4dFRvTGF5b3V0
UXVldWUobGF5b3V0Qm94LCBMYXlvdXREaXJlY3Rpb246OkNoaWxkKSkKKyAgICAgICAgICAgIGlm
ICghaXM8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxDb250YWluZXJCb3g+
KGxheW91dEJveCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBsYXlvdXRRdWV1ZS5hcHBlbmQoZG93bmNhc3Q8Q29udGFpbmVy
Qm94PihsYXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gQ2xpbWIgYmFjayBvbiB0aGUgYW5jZXN0b3JzIGFuZCBjb21wdXRlIGhl
aWdodC9maW5hbCBwb3NpdGlvbi4KQEAgLTE2NCwxNCArMTM3LDE2IEBAIHZvaWQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52
YWxpZGF0aW9uCiAgICAgICAgICAgICAgICAgLy8gTm93IHRoYXQgd2UgY29tcHV0ZWQgdGhlIGJv
eCdzIGhlaWdodCwgd2UgY2FuIGxheW91dCB0aGUgb3V0LW9mLWZsb3cgZGVzY2VuZGFudHMuCiAg
ICAgICAgICAgICAgICAgaWYgKGlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSAmJiBkb3duY2Fz
dDxDb250YWluZXJCb3g+KGxheW91dEJveCkuaGFzQ2hpbGQoKSkgewogICAgICAgICAgICAgICAg
ICAgICBhdXRvJiBjb250YWluZXJCb3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJv
eCk7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdD
b250ZXh0KGNvbnRhaW5lckJveCwgbGF5b3V0U3RhdGUoKSktPmxheW91dE91dE9mRmxvd0NvbnRl
bnQoaW52YWxpZGF0aW9uU3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9y
T3V0T2ZGbG93Q29udGVudChjb250YWluZXJCb3gpKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5
b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29udGFpbmVyQm94LCBsYXlvdXRT
dGF0ZSgpKS0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25z
dHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQoY29udGFpbmVyQm94KSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFlc3RhYmxpc2hlc0Zvcm1hdHRp
bmdDb250ZXh0ICYmIGlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSkKICAgICAgICAgICAgICAg
ICBwbGFjZUluRmxvd1Bvc2l0aW9uZWRDaGlsZHJlbihkb3duY2FzdDxDb250YWluZXJCb3g+KGxh
eW91dEJveCksIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250YWwoKSk7CiAKLSAg
ICAgICAgICAgIGlmIChhcHBlbmROZXh0VG9MYXlvdXRRdWV1ZShsYXlvdXRCb3gsIExheW91dERp
cmVjdGlvbjo6U2libGluZykpCisgICAgICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBs
YXlvdXRCb3gubmV4dEluRmxvd09yRmxvYXRpbmdTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAg
ICBsYXlvdXRRdWV1ZS5hcHBlbmQobmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIC8vIFBsYWNlIHRoZSBpbmZs
b3cgcG9zaXRpb25lZCBjaGlsZHJlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmgKaW5kZXggMTRlMjM0YzUzNjE4NWE3OWJjOGNjYzI5MTYyYTg4ZmRjOGI0ZDYy
Yy4uNDU2YjQ3MmE4NmMxZjdmMTk4MmQ0MzM3MjdlOWE0ZmY5MGI5MzJiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xh
c3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiBw
dWJsaWM6CiAgICAgQmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgQmxvY2tGb3JtYXR0aW5nU3RhdGUmKTsKIAotICAgIHZvaWQg
bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRz
Rm9ySW5GbG93Q29udGVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVu
dChjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKICAgICBMYXlv
dXRVbml0IHVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBC
bG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5n
U3RhdGUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5k
ZXggYmM4OWFkMmY5NWI3M2UzYzc1OTcwOThkODc4YTIwMzA5YTI3YzFiMS4uMTEzMWRlZmY2MGVi
NGE2MmQwNjFmY2Y3Nzc1MzhmNmMzNWRmZjk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJCbG9ja0Zvcm1h
dHRpbmdHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5j
bHVkZSAiQmxvY2tNYXJnaW5Db2xsYXBzZS5oIgotI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRDaGls
ZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgpAQCAtNTIsNyArNTEsNyBA
QCBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpUYWJsZVdyYXBwZXJCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbgogewogfQogCi12b2lkIFRhYmxlV3JhcHBlckJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUm
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBU
YWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCiB7CiAgICAgLy8g
VGhlIHRhYmxlIGdlbmVyYXRlcyBhIHByaW5jaXBhbCBibG9jayBjb250YWluZXIgYm94IGNhbGxl
ZCB0aGUgdGFibGUgd3JhcHBlciBib3ggdGhhdCBjb250YWlucyB0aGUgdGFibGUgYm94IGl0c2Vs
ZiBhbmQgYW55IGNhcHRpb24gYm94ZXMKICAgICAvLyAoaW4gZG9jdW1lbnQgb3JkZXIpLiBUaGUg
dGFibGUgYm94IGlzIGEgYmxvY2stbGV2ZWwgYm94IHRoYXQgY29udGFpbnMgdGhlIHRhYmxlJ3Mg
aW50ZXJuYWwgdGFibGUgYm94ZXMuCkBAIC04MCw5ICs3OSw4IEBAIHZvaWQgVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0VGFibGVCb3goY29uc3QgQ29udGFpbmVyQm94
JiB0YWJsCiAKICAgICBpZiAodGFibGVCb3guaGFzQ2hpbGQoKSkgewogICAgICAgICBhdXRvJiBm
b3JtYXR0aW5nR2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICAgICAg
YXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9IEludmFsaWRhdGlvblN0YXRlIHsgfTsKICAgICAgICAg
YXV0byBjb25zdHJhaW50cyA9IENvbnN0cmFpbnRzRm9yVGFibGVDb250ZW50IHsgZm9ybWF0dGlu
Z0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCh0YWJsZUJveCksIGZvcm1hdHRp
bmdHZW9tZXRyeS5jb21wdXRlZEhlaWdodCh0YWJsZUJveCkgfTsKLSAgICAgICAgTGF5b3V0Q29u
dGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91dFN0YXRlKCkpLT5s
YXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBjb25zdHJhaW50cyk7CisgICAg
ICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KHRhYmxlQm94LCBsYXlv
dXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudChjb25zdHJhaW50cyk7CiAgICAgfQogCiAg
ICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbkZvclRhYmxlQm94KHRhYmxlQm94LCBjb25zdHJhaW50
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3Jh
cHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZDA2NTE1MTQ3
YmJhMzZkOTgzNTU3MmM4ODYyZTFhMzI4MDUyZTZkNy4uNzRhMDJjYzdkZmYwYjRkODIzZDNiYjFh
NWE4NGM1NmNhNDZjYmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0IGZpbmFsIDogcHVibGljIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQgewogcHVibGljOgogICAg
IFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIEJsb2NrRm9ybWF0dGluZ1N0YXRlJik7CiAKLSAgICB2b2lk
IGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQmKSBmaW5hbDsKKyAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQo
Y29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JikgZmluYWw7CiAKICAgICB2b2lkIHNl
dEhvcml6b250YWxDb25zdHJhaW50c0lnbm9yaW5nRmxvYXRzKGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSB7IG1faG9yaXpvbnRhbENvbnN0cmFpbnRz
SWdub3JpbmdGbG9hdHMgPSBob3Jpem9udGFsQ29uc3RyYWludHM7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBlYzAwZTJkNDgzZjhkMmM2MDM4
NjIzZTY4NzIzZjFkZTQyZjYwYWViLi4zYzVkMjYyZDcxMWZiOWM3MTdiOTQ5YjBhOGI2YjJjMmVi
YWNkNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkZsZXhGb3JtYXR0aW5nR2VvbWV0cnkuaCIKICNp
bmNsdWRlICJGbGV4Rm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lUmVjdC5oIgot
I2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0
cnkuaCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0
Q29udGV4dC5oIgpAQCAtNDksNyArNDgsNyBAQCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OkZsZXhG
b3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZQogewog
fQogCi12b2lkIEZsZXhGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZh
bGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3Ry
YWludHMpCit2b2lkIEZsZXhGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChj
b25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewogICAgIGNv
bXB1dGVJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yRmxleEl0ZW1zKCk7CiAgICAgc2l6ZUFu
ZFBsYWNlRmxleEl0ZW1zKGNvbnN0cmFpbnRzKTsKQEAgLTgxLDggKzgwLDcgQEAgdm9pZCBGbGV4
Rm9ybWF0dGluZ0NvbnRleHQ6OnNpemVBbmRQbGFjZUZsZXhJdGVtcyhjb25zdCBDb25zdHJhaW50
c0ZvckluRmxvd0NvbnQKICAgICAgICAgYXV0byBmbGV4SXRlbUxvZ2ljYWxXaWR0aCA9IHN0ZDo6
bWluKHN0ZDo6bWF4KGludHJpbnNpY1dpZHRocy0+bWluaW11bSwgY29uc3RyYWludHMuaG9yaXpv
bnRhbCgpLmxvZ2ljYWxXaWR0aCksIGludHJpbnNpY1dpZHRocy0+bWF4aW11bSk7CiAgICAgICAg
IGF1dG8gZmxleEl0ZW1Db25zdHJhaW50cyA9IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7
IHsgeyB9LCBmbGV4SXRlbUxvZ2ljYWxXaWR0aCB9LCB7IH0gfTsKIAotICAgICAgICBhdXRvIGlu
dmFsaWRhdGlvblN0YXRlID0gSW52YWxpZGF0aW9uU3RhdGUgeyB9OwotICAgICAgICBMYXlvdXRD
b250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChmbGV4SXRlbSwgbGF5b3V0U3RhdGUoKSkt
PmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGZsZXhJdGVtQ29uc3RyYWlu
dHMpOworICAgICAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChmbGV4
SXRlbSwgbGF5b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoZmxleEl0ZW1Db25zdHJh
aW50cyk7CiAKICAgICAgICAgYXV0byBjb21wdXRlRmxleEl0ZW1HZW9tZXRyeSA9IFsmXSB7CiAg
ICAgICAgICAgICBhdXRvJiBmbGV4SXRlbUdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdl
b21ldHJ5KGZsZXhJdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQu
aAppbmRleCBiNjM0ZTllNDFhNmRjN2E0YTg4ZmZhYTE4NzIzNjI3MzAwZDU2Njk0Li5iZjFlMjlj
YTA5OWY3MGQ0NjVkYzRhYzgwNjUwOTlmYWNmZDhiNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC0zNSwxNCArMzUsMTMgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCi1jbGFzcyBJbnZhbGlkYXRpb25TdGF0ZTsKIC8v
IFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgbGF5b3V0IGxvZ2ljIGZvciBmbGV4IGZvcm1hdHRp
bmcgY29udGV4dHMuCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWZsZXhib3gtMS8KIGNs
YXNzIEZsZXhGb3JtYXR0aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChGbGV4Rm9ybWF0dGluZ0NvbnRleHQpOwog
cHVibGljOgogICAgIEZsZXhGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgRmxleEZvcm1hdHRpbmdTdGF0ZSYpOwotICAgIHZvaWQgbGF5
b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChj
b25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKICAgICBMYXlvdXRV
bml0IHVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IGQxMjllMTIyYTMwN2YwNmZhNTNkZmJlZTU5MmZjMDQxNDVmZGI4NTQuLmFlN2ZiMzY3
MDc3YmEzNGIwM2Q0N2ZiMjFkNGMyZjNjMGQ1ZjE2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNs
dWRlICJJbmxpbmVMaW5lQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZVJ1bi5oIgogI2luY2x1
ZGUgIklubGluZVRleHRJdGVtLmgiCi0jaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNp
bmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNp
bmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCkBAIC04MSwxMiArODAsMTIgQEAgc3RhdGljIGlubGlu
ZSBjb25zdCBCb3gqIG5leHRJbmxpbmVMZXZlbEJveFRvTGF5b3V0KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlk
YXRpb25TdGF0ZSwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50
cykKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoY29u
c3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1N0YXJ0XSAt
PiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290
KCkgPDwgIikiKTsKICAgICBBU1NFUlQocm9vdCgpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgp
KTsKIAotICAgIGludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoaW52YWxpZGF0aW9uU3RhdGUpOwor
ICAgIGludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoKTsKICAgICBhdXRvKiBsYXlvdXRCb3ggPSBy
b290KCkuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKICAgICAvLyAxLiBWaXNpdCBlYWNo
IGlubGluZSBib3ggYW5kIHBhcnRpYWxseSBjb21wdXRlIHRoZWlyIGdlb21ldHJ5IChtYXJnaW5z
LCBwYWRkaW5nIGFuZCBib3JkZXJzKS4KICAgICAvLyAyLiBDb2xsZWN0IHRoZSBpbmxpbmUgaXRl
bXMgKGZsYXR0ZW4gdGhlIHRoZSBsYXlvdXQgdHJlZSkgYW5kIHBsYWNlIHRoZW0gb24gbGluZXMg
aW4gYmlkaXJlY3Rpb25hbCBvcmRlci4gCkBAIC0xMDQsOSArMTAzLDkgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYg
aW52YWxpZGF0aW8KICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuaGFzQ2hpbGQo
KSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0
Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ1Jvb3QsIGxheW91dFN0
YXRlKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuaGFzSW5GbG93
T3JGbG9hdGluZ0NoaWxkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29u
dGV4dC0+bGF5b3V0SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgZm9ybWF0dGluZ0dl
b21ldHJ5KCkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGZvcm1hdHRpbmdSb290KSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93Q29u
dGVudChmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoZm9y
bWF0dGluZ1Jvb3QpKTsKICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdp
bihmb3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxp
ZGF0aW9uU3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93
Q29udGVudChmb3JtYXR0aW5nUm9vdCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5n
Q29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25z
dHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQoZm9ybWF0dGluZ1Jvb3QpKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihm
b3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0xNDEsOSArMTQwLDkgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW8KICAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0g
LT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9v
dCgpIDw8ICIpIik7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlv
dXRGb3JJbnRlcmdyYXRpb24oSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBj
b25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dEZvckludGVyZ3JhdGlvbihjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewotICAgIGludmFsaWRhdGVG
b3JtYXR0aW5nU3RhdGUoaW52YWxpZGF0aW9uU3RhdGUpOworICAgIGludmFsaWRhdGVGb3JtYXR0
aW5nU3RhdGUoKTsKICAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgYXV0byYgaW5s
aW5lSXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAgIGxpbmVMYXlv
dXQoaW5saW5lSXRlbXMsIHsgMCwgaW5saW5lSXRlbXMuc2l6ZSgpIH0sIGNvbnN0cmFpbnRzKTsK
QEAgLTcwNCw3ICs3MDMsNyBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbAogICAgIHJldHVybiBs
aW5lQm94TG9naWNhbFJlY3Q7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Omlu
dmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKQordm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZSgpCiB7CiAg
ICAgLy8gRmluZCBvdXQgd2hhdCB3ZSBuZWVkIHRvIGludmFsaWRhdGUuIFRoaXMgaXMgd2hlcmUg
d2UgYWRkIHNvbWUgc21hcnRzIHRvIGRvIHBhcnRpYWwgbGluZSBsYXlvdXQuCiAgICAgLy8gRm9y
IG5vdyBsZXQncyBqdXN0IGNsZWFyIHRoZSBydW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggOTU1YjQ1OWRmZGIzMmRjNzVlMTIwZGJhY2Nj
MzFhOTQwMTI2MGZjNi4uYTJjNTYxMzVjNmJhMzhkNDEyOTM2ZTE4MjM5MDViNTg2NTQ5M2EwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC0z
OCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBj
bGFzcyBJbmxpbmVGb3JtYXR0aW5nU3RhdGU7Ci1jbGFzcyBJbnZhbGlkYXRpb25TdGF0ZTsKIGNs
YXNzIExpbmVCb3g7CiAKIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgbGF5b3V0IGxvZ2lj
IGZvciBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cy4KQEAgLTQ3LDEzICs0NiwxMyBAQCBjbGFz
cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7
CiBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94
JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYpOwotICAgIHZv
aWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0SW5GbG93Q29u
dGVudChjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKICAgICBM
YXlvdXRVbml0IHVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25z
dCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1h
dHRpbmdTdGF0ZSgpKTsgfQogICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0
YXRlKCkgeyByZXR1cm4gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGb3JtYXR0aW5n
Q29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlKCkpOyB9CiAKLSAgICB2b2lkIGxpbmVMYXlvdXRGb3JJ
bnRlcmdyYXRpb24oSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxv
d0NvbnRlbnQmKTsKKyAgICB2b2lkIGxpbmVMYXlvdXRGb3JJbnRlcmdyYXRpb24oY29uc3QgQ29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5OyB9CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ1F1aXJr
cyYgZm9ybWF0dGluZ1F1aXJrcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5saW5lRm9ybWF0
dGluZ1F1aXJrczsgfQpAQCAtNzMsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb2xs
ZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgSW5saW5lUmVjdCBjb21wdXRlR2VvbWV0cnlGb3JM
aW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmKTsKLSAgICB2b2lkIGludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoY29u
c3QgSW52YWxpZGF0aW9uU3RhdGUmKTsKKyAgICB2b2lkIGludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUoKTsKIAogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSBtX2lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeTsKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzIG1faW5saW5l
Rm9ybWF0dGluZ1F1aXJrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IDYxODA3ZDQwMjNkYjc3ZjNiNzEyN2JmODQ2NDFlNWE0MjA0NTU2ZmQu
LmM4NTI4N2ZhMDM1YzI2MjY4Y2QwNjhlNzJmYmUyODkwYTFmMjk2MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdTdGF0
ZS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIkludmFs
aWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0
Qm94R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCkBAIC01NCw3
ICs1Myw3IEBAIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29uCiB7CiB9CiAKLXZvaWQgVGFibGVGb3Jt
YXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCit2b2lkIFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBhdXRvIGF2YWlsYWJsZUhvcml6
b250YWxTcGFjZSA9IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGg7CiAgICAg
YXV0byBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlID0gZG93bmNhc3Q8Q29uc3RyYWludHNGb3JUYWJs
ZUNvbnRlbnQ+KGNvbnN0cmFpbnRzKS5hdmFpbGFibGVWZXJ0aWNhbFNwYWNlRm9yQ29udGVudCgp
OwpAQCAtMTA1LDExICsxMDQsMTAgQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRV
c2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b24KICAgICAgICAg
Y2VsbEJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChmb3JtYXR0aW5nR2VvbWV0cnkuaG9y
aXpvbnRhbFNwYWNlRm9yQ2VsbENvbnRlbnQoKmNlbGwpKTsKIAogICAgICAgICBpZiAoY2VsbEJv
eC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewotICAgICAgICAgICAgYXV0byBpbnZhbGlk
YXRpb25TdGF0ZSA9IEludmFsaWRhdGlvblN0YXRlIHsgfTsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBwYXJ0IG9mIHRoZSBpbnZhbGlkYXRpb24gc3RhdGUg
dG8gaW5kaWNhdGUgd2hlbiB3ZSByZS1sYXlvdXQgdGhlIGNlbGwgbXVsdGlwbGUgdGltZXMgYXMg
cGFydCBvZiB0aGUgbXVsdGktcGFzcyB0YWJsZSBhbGdvcml0aG0uCiAgICAgICAgICAgICBhdXRv
JiBmbG9hdGluZ1N0YXRlRm9yQ2VsbENvbnRlbnQgPSBsYXlvdXRTdGF0ZSgpLmVuc3VyZUJsb2Nr
Rm9ybWF0dGluZ1N0YXRlKGNlbGxCb3gpLmZsb2F0aW5nU3RhdGUoKTsKICAgICAgICAgICAgIGZs
b2F0aW5nU3RhdGVGb3JDZWxsQ29udGVudC5jbGVhcigpOwotICAgICAgICAgICAgTGF5b3V0Q29u
dGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2VsbEJveCwgbGF5b3V0U3RhdGUoKSktPmxh
eW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRyeS5j
b25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY2VsbEJveCkpOworICAgICAgICAgICAgTGF5b3V0
Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2VsbEJveCwgbGF5b3V0U3RhdGUoKSkt
PmxheW91dEluRmxvd0NvbnRlbnQoZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudChjZWxsQm94KSk7CiAgICAgICAgIH0KICAgICAgICAgY2VsbEJveEdlb21ldHJ5
LnNldENvbnRlbnRCb3hIZWlnaHQoZm9ybWF0dGluZ0dlb21ldHJ5LnZlcnRpY2FsU3BhY2VGb3JD
ZWxsQ29udGVudCgqY2VsbCwgYXZhaWxhYmxlVmVydGljYWxTcGFjZSkpOwogCkBAIC01NDEsMTAg
KzUzOSw4IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUFuZERpc3RyaWJ1
dGVFeHRyYVNwYWNlKExheW91dFVuaXQgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgY2VsbEJv
eEdlb21ldHJ5LnNldFBhZGRpbmcoZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkUGFkZGluZyhj
ZWxsQm94LCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpKTsKICAgICAgICAgICAgICAgICBjZWxs
Qm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGZvcm1hdHRpbmdHZW9tZXRyeS5ob3Jpem9u
dGFsU3BhY2VGb3JDZWxsQ29udGVudChjZWxsKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoY2Vs
bEJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewotICAgICAgICAgICAgICAgICAgICBh
dXRvIGludmFsaWRhdGlvblN0YXRlID0gSW52YWxpZGF0aW9uU3RhdGUgeyB9OwotICAgICAgICAg
ICAgICAgICAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjZWxsQm94
LCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwg
Zm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjZWxsQm94KSk7
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjZWxsQm94Lmhhc0luRmxv
d09yRmxvYXRpbmdDaGlsZCgpKQorICAgICAgICAgICAgICAgICAgICBMYXlvdXRDb250ZXh0Ojpj
cmVhdGVGb3JtYXR0aW5nQ29udGV4dChjZWxsQm94LCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5G
bG93Q29udGVudChmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50
KGNlbGxCb3gpKTsKICAgICAgICAgICAgICAgICBjZWxsQm94R2VvbWV0cnkuc2V0Q29udGVudEJv
eEhlaWdodChmb3JtYXR0aW5nR2VvbWV0cnkudmVydGljYWxTcGFjZUZvckNlbGxDb250ZW50KGNl
bGwsIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpKTsKICAgICAgICAgICAgIH07CiAgICAgICAgICAg
ICBsYXlvdXRDZWxsQ29udGVudChzbG90LmNlbGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDg2YmI1MDA1MTExM2E3ZWQ1NDFhNTU2NTA2YjE2
OTI4NTk5ZTU1MmMuLjMwNjhhOWJlN2ZiMzU3YzgwNjJjNDdlMGUzODczMGFkYmJiNWIyYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC0zOCwxNSAr
MzgsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCi1jbGFz
cyBJbnZhbGlkYXRpb25TdGF0ZTsKLQogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBsYXlv
dXQgbG9naWMgZm9yIHRhYmxlIGZvcm1hdHRpbmcgY29udGV4dHMuCiAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvQ1NTMjIvdGFibGVzLmh0bWwKIGNsYXNzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQg
ZmluYWwgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoVGFibGVGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgVGFibGVGb3JtYXR0
aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgVGFi
bGVGb3JtYXR0aW5nU3RhdGUmKTsKLSAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxp
ZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JJbkZs
b3dDb250ZW50Jikgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCB1c2VkQ29udGVudEhlaWdodCgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29uc3QgVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkmIGZv
cm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGFibGVGb3JtYXR0aW5n
R2VvbWV0cnk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggNDgxMjBi
N2I3OWI5ZjgxNzUzMzVlN2YwMThhZWJhYWI2MWJkMGNjOC4uODRmYWJiMjRmNDg3NDVhOTkzZjFh
YWE2NjJjN2NjNWI0YzdiNjQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAK
QEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3Rh
dGUuaCIKLSNpbmNsdWRlICJJbnZhbGlkYXRpb25TdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dEJv
eEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5oIgogI2lu
Y2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuaCIKQEAgLTIxNCwx
MCArMjEzLDggQEAgdm9pZCBMaW5lTGF5b3V0OjpsYXlvdXQoKQogICAgIG1faW5saW5lQ29udGVu
dCA9IG51bGxwdHI7CiAgICAgYXV0byBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCA9IExheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQgeyByb290TGF5b3V0Qm94KCksIG1faW5saW5lRm9ybWF0
dGluZ1N0YXRlIH07CiAKLSAgICBhdXRvIGludmFsaWRhdGlvblN0YXRlID0gTGF5b3V0OjpJbnZh
bGlkYXRpb25TdGF0ZSB7IH07CiAgICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBMYXlv
dXQ6Okhvcml6b250YWxDb25zdHJhaW50cyB7IGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nU3RhcnQo
KSwgZmxvdygpLmNvbnRlbnRTaXplKCkud2lkdGgoKSB9OwotCi0gICAgaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQubGluZUxheW91dEZvckludGVyZ3JhdGlvbihpbnZhbGlkYXRpb25TdGF0ZSwgeyBo
b3Jpem9udGFsQ29uc3RyYWludHMsIGZsb3coKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgfSk7
CisgICAgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGluZUxheW91dEZvckludGVyZ3JhdGlvbih7
IGhvcml6b250YWxDb25zdHJhaW50cywgZmxvdygpLmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSB9
KTsKIAogICAgIGNvbnN0cnVjdENvbnRlbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCA1OWU2ZDgx
OGY4ZTkzODAzZTVlMjk4ZjQ5ZDRkMDJhZTk1MDUyNTgzLi4xZWUyNTE0MGQxMjI5ZmNhODZlMTA0
M2Y3MzIyYzI1M2YwODcyNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0zNSw4ICszNSw2IEBACiAjaW5j
bHVkZSAiSFRNTFRhYmxlQ29sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJJbnZhbGlk
YXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1ZGUg
IkxheW91dENoaWxkSXRlcmF0b3IuaCIKQEAgLTU5Miw5ICs1OTAsNyBAQCB2b2lkIHByaW50TGF5
b3V0VHJlZUZvckxpdmVEb2N1bWVudHMoKQogICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gTGF5
b3V0U3RhdGUgeyAqZG9jdW1lbnQsIGxheW91dFRyZWUtPnJvb3QoKSB9OwogCiAgICAgICAgIGF1
dG8mIGxheW91dFJvb3QgPSBsYXlvdXRTdGF0ZS5yb290KCk7Ci0gICAgICAgIGF1dG8gaW52YWxp
ZGF0aW9uU3RhdGUgPSBJbnZhbGlkYXRpb25TdGF0ZSB7IH07Ci0KLSAgICAgICAgTGF5b3V0Q29u
dGV4dChsYXlvdXRTdGF0ZSkubGF5b3V0KHJlbmRlclZpZXcuc2l6ZSgpLCBpbnZhbGlkYXRpb25T
dGF0ZSk7CisgICAgICAgIExheW91dENvbnRleHQobGF5b3V0U3RhdGUpLmxheW91dChyZW5kZXJW
aWV3LnNpemUoKSk7CiAgICAgICAgIHNob3dMYXlvdXRUcmVlKGxheW91dFJvb3QsICZsYXlvdXRT
dGF0ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0
Q29udGV4dC5jcHAKaW5kZXggYjc1OTcxNDgxOTk2NDVjMDc4OTE4NDcyODg4ZDI1ZDc3YTE1YTIx
OS4uMjFmOWViYWMzZjgxMDgzOGEzZjI5MjI5NzM1MjY4NGI2NmM2YTdjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCkBAIC00MCw4ICs0MCw2
IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0jaW5jbHVkZSAiSW52YWxpZGF0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5
b3V0Qm94R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAi
TGF5b3V0U3RhdGUuaCIKQEAgLTY3LDEwICs2NSw4IEBAIHZvaWQgRnJhbWVWaWV3TGF5b3V0Q29u
dGV4dDo6bGF5b3V0VXNpbmdGb3JtYXR0aW5nQ29udGV4dCgpCiAgICAgYXV0byYgcmVuZGVyVmll
dyA9ICp0aGlzLT5yZW5kZXJWaWV3KCk7CiAgICAgbV9sYXlvdXRUcmVlID0gTGF5b3V0OjpUcmVl
QnVpbGRlcjo6YnVpbGRMYXlvdXRUcmVlKHJlbmRlclZpZXcpOwogICAgIG1fbGF5b3V0U3RhdGUg
PSBtYWtlVW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCpkb2N1bWVudCgpLCBtX2xheW91dFRy
ZWUtPnJvb3QoKSk7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IHRoZSByZWFsIGludmFsaWRh
dGlvbiB5ZXQuCi0gICAgYXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9IExheW91dDo6SW52YWxpZGF0
aW9uU3RhdGUgeyB9OwogICAgIGF1dG8gbGF5b3V0Q29udGV4dCA9IExheW91dDo6TGF5b3V0Q29u
dGV4dCB7ICptX2xheW91dFN0YXRlIH07Ci0gICAgbGF5b3V0Q29udGV4dC5sYXlvdXQodmlldygp
LmxheW91dFNpemUoKSwgaW52YWxpZGF0aW9uU3RhdGUpOworICAgIGxheW91dENvbnRleHQubGF5
b3V0KHZpZXcoKS5sYXlvdXRTaXplKCkpOwogCiAgICAgLy8gQ2xlYW4gdXAgdGhlIHJlbmRlciB0
cmVlIHN0YXRlIHdoZW4gd2UgZG9uJ3QgcnVuIFJlbmRlclZpZXc6OmxheW91dC4KICAgICBpZiAo
cmVuZGVyVmlldy5uZWVkc0xheW91dCgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438047</attachid>
            <date>2021-09-13 09:36:50 -0700</date>
            <delta_ts>2021-09-13 12:36:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229221-20210913093650.patch</filename>
            <type>text/plain</type>
            <size>56380</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkzZWZmOWJlNDcwYTFj
NGJjNDE1MDcyOGJjMTZhMmNlZTA4NDY3NS4uMWQ3YWU4MDJmYTZkYjU3NmNmMDBmNzQ3NjQwMzQ0
MDVjZTkxMTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA5LTEzICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIERvIG5vdCBw
YXNzIGluIHRoZSBJbnZhbGlkYXRpb25TdGF0ZSB0byB0aGUgbGF5b3V0IGZ1bmN0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MjIxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84MjMyMTU3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBpbnRyb2R1
Y2luZyBmb3JtYXR0aW5nIGNvbnRleHQgc3BlY2lmaWMgaW52YWxpZGF0aW9uLgorICAgICAgICBF
YWNoIHR5cGUgb2YgZm9ybWF0dGluZyBjb250ZXh0IG1heSByZXF1aXJlIGEgdmVyeSBkaWZmZXJl
bnQgaW52YWxpZGF0aW9uIGxvZ2ljLiBXaGlsZSBCRkMgY291bGQgbWFyayB3aG9sZSBzdWJ0cmVl
cyBkaXJ0eSwgSUZDJ3MgaW52YWxpZGF0aW9uIGxvZ2ljIHNob3VsZCBiZSBsb29raW5nIGF0IGxp
bmVzIGluc3RlYWQuCisgICAgICAgIFRoZSBpbnZhbGlkYXRpb24gY29kZSAodHJpZ2dlcmVkIGJ5
IHN0eWxlL2NvbnRlbnQgY2hhbmdlKSBwcm9kdWNlcyBhICJkYW1hZ2Ugc3RhdGUiIHdoaWNoIGlz
IGlucHV0IHRvIHRoZSBGb3JtYXR0aW5nQ29udGV4dCBjb25zdHJ1Y3Rpb24KKyAgICAgICAgdGhl
IHNhbWUgd2F5IHdlIHBhc3MgaW4gdGhlIEZvcm1hdHRpbmdTdGF0ZSAKKyAgICAgICAgKGkuZS4g
Rm9ybWF0dGluQ29udGV4dCB0YWtlcyB0aGUgcm9vdCBvZiB0aGUgZm9ybWF0dGluZyBzdWJ0cmVl
ICh0aGUgZXh0ZW50IG9mIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQpLCB0aGUgZGFtYWdlZCBzdGF0
ZSAoaG93IG11Y2ggd2UgbmVlZCB0byBsYXlvdXQgaW4gdGhpcyBmcmFtZSkgYW5kIHRoZSBmb3Jt
YXR0aW5nIHN0YXRlICh0aGUgZGF0YSB3ZSBjYW4gdXNlIGZyb20gcHJldmlvdXMgbGF5b3V0KSkK
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlv
dXQvTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENv
bnRleHQ6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6
OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxheW91dENvbnRleHQ6OmxheW91dFdpdGhQcmVwYXJlZFJvb3RHZW9tZXRyeSk6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQpOgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaDoK
KyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dFRhYmxlQm94KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6Cisg
ICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsZXhGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsZXhG
b3JtYXR0aW5nQ29udGV4dDo6c2l6ZUFuZFBsYWNlRmxleEl0ZW1zKToKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0SW5GbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0Rm9ySW50ZXJncmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVG
b3JtYXR0aW5nU3RhdGUpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNl
dFVzZWRHZW9tZXRyeUZvckNlbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUFuZERpc3RyaWJ1dGVFeHRyYVNwYWNlKToKKyAgICAg
ICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5
b3V0OjpsYXlvdXQpOgorICAgICAgICAqIGxheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9u
Q29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZh
bGlkYXRpb25Db250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogbGF5b3V0L2ludmFsaWRhdGlv
bi9JbnZhbGlkYXRpb25TdGF0ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbGF5b3V0L2ludmFs
aWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGxheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cyk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91
dENvbnRleHQ6OmxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQpOgorCiAyMDIxLTA5LTEzICBB
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBSZW1vdmUgcmVk
dW5kYW50IExheW91dFN0YXRlOjplbnN1cmVGb3JtYXR0aW5nU3RhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggN2VkNjdmYzIzOWFjYjJjZTA3ZDhhNWQzOGJiNWNkNDg2MjlmMGE1Yy4uZTc5MmRl
NjhjMDZmYTVkZTNiNzc3YmRkZjc2ZDNiYTIyYTUyYTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTExMiw3ICsxMTIsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3Rl
eHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9pbnRlZ3JhdGlvbiIKLSAgICAiJHtXRUJD
T1JFX0RJUn0vbGF5b3V0L2ludmFsaWRhdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0
L2xheW91dHRyZWUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlciIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YjNkMzM3M2ZhYzM2MjM3YjY3OTE5NTZiMTk3Mjk2ZmUwYjIwYTRlZi4uZDEwMDQ4MWFlOWRjOGYy
NGQ1OGQzYmQ5YWJmNDY0NzAwYmU3Njk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE0ODcsOCArMTQ4
Nyw2IEBAIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5j
cHAKIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmNwcAogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCi1sYXlvdXQvaW52
YWxpZGF0aW9uL0ludmFsaWRhdGlvbkNvbnRleHQuY3BwCi1sYXlvdXQvaW52YWxpZGF0aW9uL0lu
dmFsaWRhdGlvblN0YXRlLmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAogbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcAogbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Qm94R2VvbWV0cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjBkYTA1MGUyZWM1MzdlMGYyYTQ1ZTJjZjYwYjQ5
N2ZkNDZjYWEyNC4uZWYyYjIzZTcyZjMwYzljOWI1NjM4MmU1OWRjNDJjNGU1YzUzYjMwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjE2Miw4ICsyMTYyLDYgQEAKIAkJNkY3Q0EzQzYyMDhDMjk1NzAwMkYyOUFCIC8qIExheW91
dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RjdDQTNDNDIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RjdDQTNDQTIwOEMyQjJFMDAyRjI5
QUIgLyogSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGN0NBM0M4MjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTZGOTE0MjExMjUxNTIxMzgwMDRFNEZFQSAvKiBJbmxpbmVMaW5lR2VvbWV0
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTE0
MjBGMjUxNTIxMzcwMDRFNEZFQSAvKiBJbmxpbmVMaW5lR2VvbWV0cnkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2Rjk1REU0RDIzN0I4ODlDMDBF
NTE3RTEgLyogSW52YWxpZGF0aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5NURFNEIyMzdCODg5QjAwRTUxN0UxIC8qIEludmFsaWRh
dGlvbkNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk2Rjk1REU0RTIzN0I4ODlDMDBFNTE3RTEgLyogSW52YWxpZGF0aW9uU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTVERTRDMjM3
Qjg4OUMwMEU1MTdFMSAvKiBJbnZhbGlkYXRpb25TdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGOTk1QTE2MUE3MDc1NjIwMEE3MzVGNCAv
KiBXZWJHTFN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZGOTk1QTE0MUE3MDc1NjIwMEE3MzVGNCAvKiBXZWJHTFN5bmMuaCAqLzsgfTsKIAkJNkY5
OTVBMjAxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMUXVlcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTk1QTE4MUE3MDc4QjEwMEE3MzVGNCAvKiBX
ZWJHTFF1ZXJ5LmggKi87IH07CiAJCTZGOTk1QTIyMUE3MDc4QjEwMEE3MzVGNCAvKiBXZWJHTFNh
bXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZG
OTk1QTFBMUE3MDc4QjEwMEE3MzVGNCAvKiBXZWJHTFNhbXBsZXIuaCAqLzsgfTsKQEAgLTEwMDU3
LDggKzEwMDU1LDYgQEAKIAkJNkY4RjQ2MDEyMUIwM0JCNDAwNDFBQzNBIC8qIEZvcm1hdHRpbmdR
dWlya3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0dGluZ1F1aXJrcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGOEY0NjAzMjFCMDNCQzYwMDQxQUMzQSAvKiBCbG9j
a0Zvcm1hdHRpbmdRdWlya3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tGb3JtYXR0aW5n
UXVpcmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY5MTQyMEYyNTE1MjEz
NzAwNEU0RkVBIC8qIElubGluZUxpbmVHZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmxpbmVMaW5lR2VvbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNkY5NURFNEIyMzdCODg5QjAwRTUxN0UxIC8qIEludmFsaWRhdGlvbkNvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW52YWxpZGF0aW9uQ29udGV4dC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2Rjk1REU0QzIzN0I4ODlDMDBFNTE3RTEgLyog
SW52YWxpZGF0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW52
YWxpZGF0aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY5OTVBMDkx
QTcwNzBFNjAwQTczNUY0IC8qIFdlYkdMUXVlcnkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdMUXVlcnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2Rjk5NUEwQTFB
NzA3MEU2MDBBNzM1RjQgLyogV2ViR0xTYW1wbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHTFNhbXBsZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2Rjk5NUEw
QjFBNzA3MEU2MDBBNzM1RjQgLyogV2ViR0xTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHTFN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAxMTEsOCAr
MTAxMDcsNiBAQAogCQk2RkU2MzZFNzI2NDc5NjI5MDBGMDk1MUUgLyogSW5saW5lRm9ybWF0dGlu
Z1F1aXJrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVGb3JtYXR0
aW5nUXVpcmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGRTdBQTI2MjFDMzdC
NjMwMDI5NkRDRCAvKiBNYXJnaW5UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJnaW5UeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkU3Q0ZBMDIxNzdFRUYxMDA1QjE1NzMg
LyogSW5saW5lSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVJ
dGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZGRThFNkY3MjM3QkE1RTgwMDc1
OEQyNiAvKiBJbnZhbGlkYXRpb25Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludmFs
aWRhdGlvbkNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RkU4RTZG
ODIzN0JBNkIyMDA3NThEMjYgLyogSW52YWxpZGF0aW9uU3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW52YWxpZGF0aW9uU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RkU5RjA5MjIyMjExMDM1MDA0QzUwODIgLyogQ29udGVudENoYW5nZU9ic2VydmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRDaGFuZ2VPYnNlcnZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGRUZFODFEMjJGOUQyMkEwMDEx
NDkyNyAvKiBMYXlvdXRQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRQaGFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkY5MTFGNjI2NDg3RkM4MDAyMDIxREYgLyogRmxl
eEZvcm1hdHRpbmdHZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
bGV4Rm9ybWF0dGluZ0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
ODA3MSw3ICsxODA2NSw2IEBACiAJCQkJNkZDRkMwNTUyMTJEQUNDMjAwNzY5NUQyIC8qIGZsb2F0
cyAqLywKIAkJCQk2Rjg0NEY3RjI2M0Q5MTYxMDBGOTEzNzAgLyogZm9ybWF0dGluZ0NvbnRleHRz
ICovLAogCQkJCUU0RkI0QjFFMjM5NTM1NkYwMDNDMzM2QSAvKiBpbnRlZ3JhdGlvbiAqLywKLQkJ
CQk2Rjk1REU0QTIzN0I4ODMwMDBFNTE3RTEgLyogaW52YWxpZGF0aW9uICovLAogCQkJCTExNUNG
QTkwMjA4Qjk0NDEwMDFFNjk5MSAvKiBsYXlvdXR0cmVlICovLAogCQkJCTExNUNGQTc1MjA4QUZF
MzAwMDFFNjk5MSAvKiBGb3JtYXR0aW5nU3RhdGUuY3BwICovLAogCQkJCTExNUNGQTc0MjA4QUZF
MzAwMDFFNjk5MSAvKiBGb3JtYXR0aW5nU3RhdGUuaCAqLywKQEAgLTIyNDA5LDE3ICsyMjQwMiw2
IEBACiAJCQlwYXRoID0gZm9ybWF0dGluZ0NvbnRleHRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKLQkJNkY5NURFNEEyMzdCODgzMDAwRTUxN0UxIC8qIGludmFsaWRhdGlvbiAq
LyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNkZFOEU2Rjcy
MzdCQTVFODAwNzU4RDI2IC8qIEludmFsaWRhdGlvbkNvbnRleHQuY3BwICovLAotCQkJCTZGOTVE
RTRCMjM3Qjg4OUIwMEU1MTdFMSAvKiBJbnZhbGlkYXRpb25Db250ZXh0LmggKi8sCi0JCQkJNkZF
OEU2RjgyMzdCQTZCMjAwNzU4RDI2IC8qIEludmFsaWRhdGlvblN0YXRlLmNwcCAqLywKLQkJCQk2
Rjk1REU0QzIzN0I4ODlDMDBFNTE3RTEgLyogSW52YWxpZGF0aW9uU3RhdGUuaCAqLywKLQkJCSk7
Ci0JCQlwYXRoID0gaW52YWxpZGF0aW9uOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJ
fTsKIAkJNkZCN0QyRDUyNTBGRDdCNTAwMDIwN0FBIC8qIGZsZXggKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzI2OTYsOCArMzI2NzgsNiBAQAogCQkJCUUx
MzRGNUFCMTJFRTM0M0YwMDRFQzU4RCAvKiBJbnRSZWN0SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjI3NTM1NzUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyNzUzNTc2MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNkY5NURFNEQyMzdCODg5QzAwRTUxN0UxIC8qIEludmFsaWRhdGlvbkNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAotCQkJCTZGOTVERTRFMjM3Qjg4OUMwMEU1MTdFMSAvKiBJbnZhbGlk
YXRpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwQjRBQUIxOERBMUNDRDAwNDM0REUx
IC8qIElPU3VyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMyMUU1N0QxODNFRDFGRjAwMUMy
ODlEIC8qIElPU3VyZmFjZVBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENUZGNDk5MjE2MkUy
QkUwMDRCRDg2RiAvKiBJU09Cb3guaCBpbiBIZWFkZXJzICovLApAQCAtMzU2MjksNyArMzU2MDks
NiBAQAogCQkJCTgzNEE2QTNBMjUyNjg0NEEwMDc0N0Y1RCAvKiBXb3JrbGV0UGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODMzQkQ4MTcyNTI0RDRGMjAwNkU3MkIzIC8qIFdvcmtsZXRQ
ZW5kaW5nVGFza3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTI0MDk5RTY0OTIwMDU2RTU4
MSAvKiBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQxRTZENzIzMjZFQUEwNDYwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUYzQjI0MTJDMUEzOTgwMDAxNEJG
MSAvKiBXcml0aW5nRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQ3NkFBODE1REM0
QkIxMDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4ODAsNyAr
MzY4NTksNiBAQAogCQkJCUUxRUU4QjkxMjQxMzE5NTAwMEU3OTRENiAvKiBXZWJYUlZpZXdwb3J0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU4QjgzMjQxMzE5MUYwMEU3OTRENiAvKiBXZWJY
UldlYkdMTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2
M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291cmNlcyAqLywKLQkJCQk0MUU2RDcyNDI2RUFBMDQ2
MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3
Q0MwQTJDRjA3NDAwRDU3NjY0IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgzM0M4MEMwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxNUEzNkQ5MTEwNDU3MjcwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCmluZGV4IDc5YjllY2Q2
ODI3NGMwMGM0NTFhMGJlMGIzOGVkNjJhMzkxNjU1ZDkuLjMzNGFiOWE5NzVkYjc4NGI4MDg3MTU5
ZDMyNWE4YWNmN2Y3NjI5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5j
cHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJGbGV4Rm9ybWF0dGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJJbnZhbGlkYXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgpA
QCAtNTksNyArNTcsNyBAQCBMYXlvdXRDb250ZXh0OjpMYXlvdXRDb250ZXh0KExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSkKIHsKIH0KIAotdm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXQoY29uc3Qg
TGF5b3V0U2l6ZSYgcm9vdENvbnRlbnRCb3hTaXplLCBJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxp
ZGF0aW9uU3RhdGUpCit2b2lkIExheW91dENvbnRleHQ6OmxheW91dChjb25zdCBMYXlvdXRTaXpl
JiByb290Q29udGVudEJveFNpemUpCiB7CiAgICAgLy8gU2V0IHRoZSBnZW9tZXRyeSBvbiB0aGUg
cm9vdC4KICAgICAvLyBOb3RlIHRoYXQgd2UgbmV2ZXIgbGF5b3V0IHRoZSByb290IGJveC4gSXQg
aGFzIHRvIGhhdmUgYW4gYWxyZWFkeSBjb21wdXRlZCBnZW9tZXRyeSAoaW4gY2FzZSBvZiBJQ0Is
IGl0J3MgdGhlIHZpZXcgZ2VvbWV0cnkpLgpAQCAtNzQsMjMgKzcyLDEyIEBAIHZvaWQgTGF5b3V0
Q29udGV4dDo6bGF5b3V0KGNvbnN0IExheW91dFNpemUmIHJvb3RDb250ZW50Qm94U2l6ZSwgSW52
YWxpZGF0aW9uU3RhCiAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChyb290Q29u
dGVudEJveFNpemUuaGVpZ2h0KCkpOwogICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0
aChyb290Q29udGVudEJveFNpemUud2lkdGgoKSk7CiAKLSAgICBsYXlvdXRXaXRoUHJlcGFyZWRS
b290R2VvbWV0cnkoaW52YWxpZGF0aW9uU3RhdGUpOworICAgIGF1dG8gc2NvcGUgPSBQaGFzZVNj
b3BlIHsgUGhhc2U6OlR5cGU6OkxheW91dCB9OworICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0
U3VidHJlZShtX2xheW91dFN0YXRlLnJvb3QoKSk7CiB9CiAKLXZvaWQgTGF5b3V0Q29udGV4dDo6
bGF5b3V0V2l0aFByZXBhcmVkUm9vdEdlb21ldHJ5KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlk
YXRpb25TdGF0ZSkKLXsKLSAgICBQaGFzZVNjb3BlIHNjb3BlKFBoYXNlOjpUeXBlOjpMYXlvdXQp
OwotCi0gICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHRSb290c0ZvckxheW91dCA9IGludmFsaWRh
dGlvblN0YXRlLmZvcm1hdHRpbmdDb250ZXh0Um9vdHMoKTsKLSAgICAvLyBXaGVuIGludmFsaWRh
dGlvbiBpcyBlbXB0eSwgd2UgYXNzdW1lIGNvbnN0cmFpbnQgbXV0YXRpb24gYW5kIHN0YXJ0IHJ1
bm5pbmcgbGF5b3V0IG9uIHRoZSBjb250ZXh0IHJvb3QuIExheW91dCBsb2dpYyBzaG91bGQgYmUg
YWJsZSB0byBmaWd1cmUgb3V0IHRoZSBkYW1hZ2UuCi0gICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0
Um9vdHNGb3JMYXlvdXQuY29tcHV0ZXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRTdWJ0cmVlKG1fbGF5b3V0U3RhdGUucm9vdCgpLCBpbnZhbGlkYXRpb25T
dGF0ZSk7Ci0KLSAgICBmb3IgKGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0Um9vdCA6IGZvcm1hdHRp
bmdDb250ZXh0Um9vdHNGb3JMYXlvdXQpCi0gICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0
U3VidHJlZShmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGludmFsaWRhdGlvblN0YXRlKTsKLX0KIAot
dm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3Qg
Q29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEludmFsaWRhdGlvblN0YXRlJiBp
bnZhbGlkYXRpb25TdGF0ZSkKK3ZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zv
cm1hdHRpbmdDb250ZXh0KCkpOwogICAgIGlmICghZm9ybWF0dGluZ0NvbnRleHRSb290Lmhhc0No
aWxkKCkpCkBAIC0xMDEsNyArODgsNyBAQCB2b2lkIExheW91dENvbnRleHQ6OmxheW91dEZvcm1h
dHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbgogCiAgICAg
aWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewog
ICAgICAgICBhdXRvIGNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCA9IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCB7IHsgYm94R2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgYm94R2VvbWV0
cnkuY29udGVudEJveFdpZHRoKCkgfSwgYm94R2VvbWV0cnkuY29udGVudEJveFRvcCgpIH07Ci0g
ICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlv
blN0YXRlLCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQpOworICAgICAgICBmb3JtYXR0aW5n
Q29udGV4dC0+bGF5b3V0SW5GbG93Q29udGVudChjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQp
OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUo
KSBkb2VzIG5vdCBwZXJmb3JtIGxheW91dCBvbiB0aGUgcm9vdCwgcmF0aGVyIGl0IGxheXMgb3V0
IHRoZSByb290J3MgY29udGVudC4KQEAgLTExMCw3ICs5Nyw3IEBAIHZvaWQgTGF5b3V0Q29udGV4
dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lckJveCYgZm9y
bWF0dGluCiAgICAgewogICAgICAgICBhdXRvIGNvbnN0cmFpbnRzID0gQ29uc3RyYWludHNGb3JP
dXRPZkZsb3dDb250ZW50IHsgeyBib3hHZW9tZXRyeS5wYWRkaW5nQm94TGVmdCgpLCBib3hHZW9t
ZXRyeS5wYWRkaW5nQm94V2lkdGgoKSB9LAogICAgICAgICAgICAgeyBib3hHZW9tZXRyeS5wYWRk
aW5nQm94VG9wKCksIGJveEdlb21ldHJ5LnBhZGRpbmdCb3hIZWlnaHQoKSB9LCBib3hHZW9tZXRy
eS5jb250ZW50Qm94V2lkdGgoKSB9OwotICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0
T3V0T2ZGbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgY29uc3RyYWludHMpOworICAgICAg
ICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChjb25zdHJhaW50cyk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaAppbmRleCA5YWVj
MmM0ZGQ1NjgyMDVhMTc5N2ExZTJkYTFmMjQ1MDYxZWIxYzc5Li41ZmMwZGE5ODE0ZWY5NDFlYWM0
YjVhNWQwZGVkMWNiMDIyMDgxYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0
LmgKQEAgLTQwLDcgKzQwLDYgQEAgY2xhc3MgUmVuZGVyVmlldzsKIG5hbWVzcGFjZSBMYXlvdXQg
ewogCiBjbGFzcyBDb250YWluZXJCb3g7Ci1jbGFzcyBJbnZhbGlkYXRpb25TdGF0ZTsKIGNsYXNz
IExheW91dFN0YXRlOwogY2xhc3MgRm9ybWF0dGluZ0NvbnRleHQ7CiAKQEAgLTU0LDggKzUzLDcg
QEAgY2xhc3MgTGF5b3V0Q29udGV4dCB7CiBwdWJsaWM6CiAgICAgTGF5b3V0Q29udGV4dChMYXlv
dXRTdGF0ZSYpOwogCi0gICAgdm9pZCBsYXlvdXQoY29uc3QgTGF5b3V0U2l6ZSYgcm9vdENvbnRl
bnRCb3hTaXplLCBJbnZhbGlkYXRpb25TdGF0ZSYpOwotICAgIHZvaWQgbGF5b3V0V2l0aFByZXBh
cmVkUm9vdEdlb21ldHJ5KEludmFsaWRhdGlvblN0YXRlJik7CisgICAgdm9pZCBsYXlvdXQoY29u
c3QgTGF5b3V0U2l6ZSYgcm9vdENvbnRlbnRCb3hTaXplKTsKIAogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IGNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBMYXlvdXRTdGF0ZSYpOwogCkBA
IC02NSw3ICs2Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZvaWQgbGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lckJveCYsIEludmFsaWRh
dGlvblN0YXRlJik7CisgICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29u
c3QgQ29udGFpbmVyQm94Jik7CiAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1
cm4gbV9sYXlvdXRTdGF0ZTsgfQogCiAgICAgTGF5b3V0U3RhdGUmIG1fbGF5b3V0U3RhdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGZhM2NmNDc3YzM4ODNkYmY1ZWMwZmY1OGI5
NDdkYzM3YzI5Y2E2MzguLjlkYTNiNTNhMmZhYzU4MjgwNTA2NDk0MDZjMjA1MWI3NjFjMjJjYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVk
ZSAiRm9ybWF0dGluZ0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAiRm9ybWF0dGluZ1F1aXJrcy5oIgog
I2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnku
aCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKQEAgLTEzNSw3ICsxMzQsNyBAQCB2
b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhjb25zdCBCb3gm
IGxheW91dEJveCwgY29uc3QgSG9yaQogICAgIGJveEdlb21ldHJ5LnNldFBhZGRpbmcoZm9ybWF0
dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRQYWRkaW5nKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0
cmFpbnQubG9naWNhbFdpZHRoKSk7CiB9CiAKLXZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dE91dE9mRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBj
b25zdCBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudChjb25zdCBDb25zdHJhaW50
c0Zvck91dE9mRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewogICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJTdGFydDogbGF5b3V0IG91dC1v
Zi1mbG93IGNvbnRlbnQgLT4gY29udGV4dDogIiA8PCAmbGF5b3V0U3RhdGUoKSA8PCAiIHJvb3Q6
ICIgPDwgJnJvb3QoKSk7CiAKQEAgLTE0OCw5ICsxNDcsNiBAQCB2b2lkIEZvcm1hdHRpbmdDb250
ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRp
b25TdAogCiAgICAgZm9yIChhdXRvJiBvdXRPZkZsb3dCb3ggOiBmb3JtYXR0aW5nU3RhdGUoKS5v
dXRPZkZsb3dCb3hlcygpKSB7CiAgICAgICAgIEFTU0VSVChvdXRPZkZsb3dCb3gtPmVzdGFibGlz
aGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0gICAgICAgIGlmICghaW52YWxpZGF0aW9uU3RhdGUu
bmVlZHNMYXlvdXQoKm91dE9mRmxvd0JveCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQogICAg
ICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzID0gY29uc3RyYWludHNGb3JMYXlv
dXRCb3goKm91dE9mRmxvd0JveCk7CiAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRz
Rm9yQm9yZGVyQW5kUGFkZGluZyA9IEhvcml6b250YWxDb25zdHJhaW50cyB7IGNvbnRhaW5pbmdC
bG9ja0NvbnN0cmFpbnRzLmhvcml6b250YWwubG9naWNhbExlZnQsIGNvbnRhaW5pbmdCbG9ja0Nv
bnN0cmFpbnRzLmJvcmRlckFuZFBhZGRpbmdDb25zdHJhaW50cyB9OwogICAgICAgICBjb21wdXRl
Qm9yZGVyQW5kUGFkZGluZygqb3V0T2ZGbG93Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHNGb3JC
b3JkZXJBbmRQYWRkaW5nKTsKQEAgLTE2MSw5ICsxNTcsOSBAQCB2b2lkIEZvcm1hdHRpbmdDb250
ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRp
b25TdAogICAgICAgICAgICAgYXV0byYgY29udGFpbmVyQm94ID0gZG93bmNhc3Q8Q29udGFpbmVy
Qm94Pigqb3V0T2ZGbG93Qm94KTsKICAgICAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQg
PSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb250YWluZXJCb3gsIGxh
eW91dFN0YXRlKCkpOwogICAgICAgICAgICAgaWYgKGNvbnRhaW5lckJveC5oYXNJbkZsb3dPckZs
b2F0aW5nQ2hpbGQoKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0
SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnRhaW5lckJveCkpOworICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KGZvcm1hdHRpbmdHZW9tZXRy
eSgpLmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb250YWluZXJCb3gpKTsKICAgICAgICAg
ICAgIGNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnRhaW5lckJveCwgY29udGFp
bmluZ0Jsb2NrQ29uc3RyYWludHMpOwotICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxh
eW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRy
eSgpLmNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudChjb250YWluZXJCb3gpKTsKKyAgICAg
ICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGZvcm1hdHRp
bmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudChjb250YWluZXJCb3gp
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxH
ZW9tZXRyeSgqb3V0T2ZGbG93Qm94LCBjb250YWluaW5nQmxvY2tDb25zdHJhaW50cyk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGU5NDk2OWE5YzJmNmM3ZjYwNTlmYjMxOGYz
NGMxZTVmNmZmMWM1NzIuLjQ2NTJjYWIzNDAwYTljN2Q2NDNlY2FmZjRkMmU5YWU1YzhlYTBjZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTUwLDcgKzUwLDYgQEAgY2xhc3MgRm9ybWF0
dGluZ0dlb21ldHJ5OwogY2xhc3MgRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgRm9ybWF0dGluZ1F1
aXJrczsKIHN0cnVjdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwotY2xhc3MgSW52YWxpZGF0
aW9uU3RhdGU7CiBjbGFzcyBMYXlvdXRTdGF0ZTsKIAogY2xhc3MgRm9ybWF0dGluZ0NvbnRleHQg
ewpAQCAtNTgsOCArNTcsOCBAQCBjbGFzcyBGb3JtYXR0aW5nQ29udGV4dCB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Rm9ybWF0dGluZ0NvbnRleHQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29uc3QgQ29uc3RyYWludHNGb3JJ
bkZsb3dDb250ZW50JikgPSAwOwotICAgIHZvaWQgbGF5b3V0T3V0T2ZGbG93Q29udGVudChJbnZh
bGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCYpID0gMDsKKyAgICB2b2lkIGxheW91dE91dE9mRmxvd0NvbnRlbnQoY29u
c3QgQ29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50Jik7CiAgICAgdmlydHVhbCBJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpID0g
MDsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgdXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdCA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IDY4ODEyMjYwYjg5NzU3MGJiZjYxZDZkNTA4ZGZhMTk1ZGRlMjg1YzkuLjBjZTNiMTQxNDI0OTY5
N2Y2ZDI4NDFhNTdkOGUyYTczYWU5ZTk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkJsb2Nr
TWFyZ2luQ29sbGFwc2UuaCIKICNpbmNsdWRlICJGbG9hdGluZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJGbG9hdGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNs
dWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCkBAIC01OCw3ICs1Nyw3IEBAIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBm
b3JtYXR0aW5nQ29uCiB7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0
IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCit2b2lkIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JJ
bkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICAvLyA5LjQuMSBCbG9jayBmb3JtYXR0
aW5nIGNvbnRleHRzCiAgICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQsIGJveGVz
IGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIgdGhlIG90aGVyLCB2ZXJ0aWNhbGx5LCBiZWdpbm5pbmcg
YXQgdGhlIHRvcCBvZiBhIGNvbnRhaW5pbmcgYmxvY2suCkBAIC03Nyw4ICs3Niw2IEBAIHZvaWQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25T
dGF0ZSYgaW52YWxpZGF0aW9uCiAgICAgICAgICAgICBpZiAoIWlzPENvbnRhaW5lckJveD4obGF5
b3V0Qm94KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8qIGNoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmZpcnN0SW5G
bG93T3JGbG9hdGluZ0NoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5GbG93T3JG
bG9hdGluZ1NpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlmICghaW52YWxpZGF0aW9uU3Rh
dGUubmVlZHNMYXlvdXQoKmNoaWxkKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBwZW5kKGNoaWxkKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTg3LDggKzg0LDYgQEAgdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRl
JiBpbnZhbGlkYXRpb24KIAogICAgICAgICBpZiAoZGlyZWN0aW9uID09IExheW91dERpcmVjdGlv
bjo6U2libGluZykgewogICAgICAgICAgICAgZm9yIChhdXRvKiBuZXh0U2libGluZyA9IGxheW91
dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKTsgbmV4dFNpYmxpbmc7IG5leHRTaWJs
aW5nID0gbmV4dFNpYmxpbmctPm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFpbnZhbGlkYXRpb25TdGF0ZS5uZWVkc0xheW91dCgqbmV4dFNpYmxp
bmcpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBsYXlv
dXRRdWV1ZS5hcHBlbmQobmV4dFNpYmxpbmcpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQpAQCAtMTMzLDcgKzEyOCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0
aW9uCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXRD
b250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb250YWluZXJCb3gsIGxheW91dFN0YXRl
KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyQm94LmlzVGFibGVXcmFwcGVy
Qm94KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxUYWJsZVdyYXBwZXJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0PigqZm9ybWF0dGluZ0NvbnRleHQpLnNldEhvcml6b250YWxDb25z
dHJhaW50c0lnbm9yaW5nRmxvYXRzKGNvbnRhaW5pbmdCbG9ja0NvbnN0cmFpbnRzLmhvcml6b250
YWwoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZs
b3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQoY29udGFpbmVyQm94KSk7CisgICAgICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRJbkZsb3dDb250ZW50KGZvcm1hdHRpbmdHZW9tZXRy
eSgpLmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb250YWluZXJCb3gpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNjQs
NyArMTU5LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250
ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb24KICAgICAgICAgICAgICAgICAvLyBO
b3cgdGhhdCB3ZSBjb21wdXRlZCB0aGUgYm94J3MgaGVpZ2h0LCB3ZSBjYW4gbGF5b3V0IHRoZSBv
dXQtb2YtZmxvdyBkZXNjZW5kYW50cy4KICAgICAgICAgICAgICAgICBpZiAoaXM8Q29udGFpbmVy
Qm94PihsYXlvdXRCb3gpICYmIGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KS5oYXND
aGlsZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5lckJveCA9IGRvd25j
YXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KTsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0
Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29udGFpbmVyQm94LCBsYXlvdXRTdGF0
ZSgpKS0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgZm9ybWF0dGlu
Z0dlb21ldHJ5KCkuY29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50KGNvbnRhaW5lckJveCkp
OworICAgICAgICAgICAgICAgICAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29u
dGV4dChjb250YWluZXJCb3gsIGxheW91dFN0YXRlKCkpLT5sYXlvdXRPdXRPZkZsb3dDb250ZW50
KGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudChjb250
YWluZXJCb3gpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoIWVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQgJiYgaXM8Q29udGFpbmVyQm94Pihs
YXlvdXRCb3gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApp
bmRleCAxNGUyMzRjNTM2MTg1YTc5YmM4Y2NjMjkxNjJhODhmZGM4YjRkNjJjLi40NTZiNDcyYTg2
YzFmN2YxOTgyZDQzMzcyN2U5YTRmZjkwYjkzMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290LCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYpOwogCi0gICAgdm9pZCBsYXlvdXRJbkZsb3dD
b250ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250
ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudCYpIG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgdXNlZENv
bnRlbnRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNvbnN0IEJsb2NrRm9ybWF0dGlu
Z1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxCbG9ja0Zv
cm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBl
ci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBiYzg5YWQyZjk1
YjczZTNjNzU5NzA5OGQ4NzhhMjAzMDlhMjdjMWIxLi4xMTMxZGVmZjYwZWI0YTYyZDA2MWZjZjc3
NzUzOGY2YzM1ZGZmOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
LmgiCiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJCbG9ja01h
cmdpbkNvbGxhcHNlLmgiCi0jaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCkBAIC01Miw3ICs1MSw3IEBAIFRhYmxlV3JhcHBl
ckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoY29uc3QgQ29uCiB7CiB9CiAKLXZvaWQgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCit2b2lkIFRhYmxlV3JhcHBlckJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICAvLyBUaGUgdGFibGUgZ2Vu
ZXJhdGVzIGEgcHJpbmNpcGFsIGJsb2NrIGNvbnRhaW5lciBib3ggY2FsbGVkIHRoZSB0YWJsZSB3
cmFwcGVyIGJveCB0aGF0IGNvbnRhaW5zIHRoZSB0YWJsZSBib3ggaXRzZWxmIGFuZCBhbnkgY2Fw
dGlvbiBib3hlcwogICAgIC8vIChpbiBkb2N1bWVudCBvcmRlcikuIFRoZSB0YWJsZSBib3ggaXMg
YSBibG9jay1sZXZlbCBib3ggdGhhdCBjb250YWlucyB0aGUgdGFibGUncyBpbnRlcm5hbCB0YWJs
ZSBib3hlcy4KQEAgLTgwLDkgKzc5LDggQEAgdm9pZCBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRUYWJsZUJveChjb25zdCBDb250YWluZXJCb3gmIHRhYmwKIAogICAg
IGlmICh0YWJsZUJveC5oYXNDaGlsZCgpKSB7CiAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9t
ZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOwotICAgICAgICBhdXRvIGludmFsaWRh
dGlvblN0YXRlID0gSW52YWxpZGF0aW9uU3RhdGUgeyB9OwogICAgICAgICBhdXRvIGNvbnN0cmFp
bnRzID0gQ29uc3RyYWludHNGb3JUYWJsZUNvbnRlbnQgeyBmb3JtYXR0aW5nR2VvbWV0cnkuY29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50KHRhYmxlQm94KSwgZm9ybWF0dGluZ0dlb21ldHJ5LmNv
bXB1dGVkSGVpZ2h0KHRhYmxlQm94KSB9OwotICAgICAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVG
b3JtYXR0aW5nQ29udGV4dCh0YWJsZUJveCwgbGF5b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0Nv
bnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFpbnRzKTsKKyAgICAgICAgTGF5b3V0Q29u
dGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQodGFibGVCb3gsIGxheW91dFN0YXRlKCkpLT5s
YXlvdXRJbkZsb3dDb250ZW50KGNvbnN0cmFpbnRzKTsKICAgICB9CiAKICAgICBjb21wdXRlSGVp
Z2h0QW5kTWFyZ2luRm9yVGFibGVCb3godGFibGVCb3gsIGNvbnN0cmFpbnRzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3
cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3Jh
cHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBkMDY1MTUxNDdiYmEzNmQ5ODM1NTcy
Yzg4NjJlMWEzMjgwNTJlNmQ3Li43NGEwMmNjN2RmZjBiNGQ4MjNkM2JiMWE1YTg0YzU2Y2E0NmNi
YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJs
ZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC00Miw3ICs0
Miw3IEBAIGNsYXNzIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBw
dWJsaWMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCwgQmxvY2tGb3JtYXR0aW5nU3RhdGUmKTsKIAotICAgIHZvaWQgbGF5b3V0SW5GbG93
Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29u
dGVudCYpIGZpbmFsOworICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChjb25zdCBDb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQmKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SG9yaXpvbnRhbENv
bnN0cmFpbnRzSWdub3JpbmdGbG9hdHMoY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMpIHsgbV9ob3Jpem9udGFsQ29uc3RyYWludHNJZ25vcmluZ0Zsb2F0
cyA9IGhvcml6b250YWxDb25zdHJhaW50czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9y
bWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGVjMDBlMmQ0ODNmOGQyYzYwMzg2MjNlNjg3MjNmMWRl
NDJmNjBhZWIuLjNjNWQyNjJkNzExZmI5YzcxN2I5NDliMGE4YjZiMmMyZWJhY2Q1NGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkZsZXhG
b3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVSZWN0LmgiCi0jaW5jbHVkZSAiSW52
YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1
ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCkBA
IC00OSw3ICs0OCw3IEBAIEZsZXhGb3JtYXR0aW5nQ29udGV4dDo6RmxleEZvcm1hdHRpbmdDb250
ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRlCiB7CiB9CiAKLXZvaWQgRmxl
eEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRl
JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKK3ZvaWQg
RmxleEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCiB7CiAgICAgY29tcHV0ZUludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHNGb3JGbGV4SXRlbXMoKTsKICAgICBzaXplQW5kUGxhY2VGbGV4SXRl
bXMoY29uc3RyYWludHMpOwpAQCAtODEsOCArODAsNyBAQCB2b2lkIEZsZXhGb3JtYXR0aW5nQ29u
dGV4dDo6c2l6ZUFuZFBsYWNlRmxleEl0ZW1zKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29u
dAogICAgICAgICBhdXRvIGZsZXhJdGVtTG9naWNhbFdpZHRoID0gc3RkOjptaW4oc3RkOjptYXgo
aW50cmluc2ljV2lkdGhzLT5taW5pbXVtLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNh
bFdpZHRoKSwgaW50cmluc2ljV2lkdGhzLT5tYXhpbXVtKTsKICAgICAgICAgYXV0byBmbGV4SXRl
bUNvbnN0cmFpbnRzID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsgeyB7IH0sIGZsZXhJ
dGVtTG9naWNhbFdpZHRoIH0sIHsgfSB9OwogCi0gICAgICAgIGF1dG8gaW52YWxpZGF0aW9uU3Rh
dGUgPSBJbnZhbGlkYXRpb25TdGF0ZSB7IH07Ci0gICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0
ZUZvcm1hdHRpbmdDb250ZXh0KGZsZXhJdGVtLCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93
Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgZmxleEl0ZW1Db25zdHJhaW50cyk7CisgICAgICAg
IExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGZsZXhJdGVtLCBsYXlvdXRT
dGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudChmbGV4SXRlbUNvbnN0cmFpbnRzKTsKIAogICAg
ICAgICBhdXRvIGNvbXB1dGVGbGV4SXRlbUdlb21ldHJ5ID0gWyZdIHsKICAgICAgICAgICAgIGF1
dG8mIGZsZXhJdGVtR2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkoZmxleEl0
ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGI2MzRl
OWU0MWE2ZGM3YTRhODhmZmFhMTg3MjM2MjczMDBkNTY2OTQuLmJmMWUyOWNhMDk5ZjcwZDQ2NWRj
NGFjODA2NTA5OWZhY2ZkOGI2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdD
b250ZXh0LmgKQEAgLTM1LDE0ICszNSwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CiAKLWNsYXNzIEludmFsaWRhdGlvblN0YXRlOwogLy8gVGhpcyBjbGFzcyBp
bXBsZW1lbnRzIHRoZSBsYXlvdXQgbG9naWMgZm9yIGZsZXggZm9ybWF0dGluZyBjb250ZXh0cy4K
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtZmxleGJveC0xLwogY2xhc3MgRmxleEZvcm1h
dHRpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEZsZXhGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAg
RmxleEZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290LCBGbGV4Rm9ybWF0dGluZ1N0YXRlJik7Ci0gICAgdm9pZCBsYXlvdXRJbkZsb3dDb250
ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCYpIG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgdXNlZENvbnRl
bnRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMjNjZGI1
OGNmODQ4NjA4MTM2MWIxNjE5ODIyYWRhNTg4ZDNiZDM0ZC4uMGE4ZmM2NTc5N2FiMWNjZDY5Y2Yx
NmVjNmIxNDEwMGE1MmNmZTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIklubGluZUxp
bmVCb3hCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZVJ1bi5oIgogI2luY2x1ZGUgIklu
bGluZVRleHRJdGVtLmgiCi0jaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRDb250ZXh0LmgiCkBAIC04MywxMiArODIsMTIgQEAgc3RhdGljIGlubGluZSBjb25z
dCBCb3gqIG5leHRJbmxpbmVMZXZlbEJveFRvTGF5b3V0KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25T
dGF0ZSwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKK3Zv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoY29uc3QgQ29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBMT0dfV0lUSF9T
VFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1N0YXJ0XSAtPiBpbmxp
bmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwg
IikiKTsKICAgICBBU1NFUlQocm9vdCgpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKTsKIAot
ICAgIGludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoaW52YWxpZGF0aW9uU3RhdGUpOworICAgIGlu
dmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoKTsKICAgICBhdXRvKiBsYXlvdXRCb3ggPSByb290KCku
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKICAgICAvLyAxLiBWaXNpdCBlYWNoIGlubGlu
ZSBib3ggYW5kIHBhcnRpYWxseSBjb21wdXRlIHRoZWlyIGdlb21ldHJ5IChtYXJnaW5zLCBwYWRk
aW5nIGFuZCBib3JkZXJzKS4KICAgICAvLyAyLiBDb2xsZWN0IHRoZSBpbmxpbmUgaXRlbXMgKGZs
YXR0ZW4gdGhlIHRoZSBsYXlvdXQgdHJlZSkgYW5kIHBsYWNlIHRoZW0gb24gbGluZXMgaW4gYmlk
aXJlY3Rpb25hbCBvcmRlci4gCkBAIC0xMDYsOSArMTA1LDkgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxp
ZGF0aW8KICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuaGFzQ2hpbGQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4
dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ1Jvb3QsIGxheW91dFN0YXRlKCkp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuaGFzSW5GbG93T3JGbG9h
dGluZ0NoaWxkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+
bGF5b3V0SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgZm9ybWF0dGluZ0dlb21ldHJ5
KCkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGZvcm1hdHRpbmdSb290KSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0SW5GbG93Q29udGVudChm
b3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoZm9ybWF0dGlu
Z1Jvb3QpKTsKICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihmb3Jt
YXR0aW5nUm9vdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9u
U3RhdGUsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVu
dChmb3JtYXR0aW5nUm9vdCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4
dC0+bGF5b3V0T3V0T2ZGbG93Q29udGVudChmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb25zdHJhaW50
c0Zvck91dE9mRmxvd0NvbnRlbnQoZm9ybWF0dGluZ1Jvb3QpKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihmb3JtYXR0
aW5nUm9vdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC0xNDYsOSArMTQ1LDkgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW8KICAgICBMT0dfV0lU
SF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5s
aW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8
ICIpIik7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXRGb3JJ
bnRlcmdyYXRpb24oSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBD
b25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6bGluZUxheW91dEZvckludGVyZ3JhdGlvbihjb25zdCBDb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewotICAgIGludmFsaWRhdGVGb3JtYXR0
aW5nU3RhdGUoaW52YWxpZGF0aW9uU3RhdGUpOworICAgIGludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUoKTsKICAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgYXV0byYgaW5saW5lSXRl
bXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAgIGxpbmVMYXlvdXQoaW5s
aW5lSXRlbXMsIHsgMCwgaW5saW5lSXRlbXMuc2l6ZSgpIH0sIGNvbnN0cmFpbnRzKTsKQEAgLTU4
Myw3ICs1ODIsNyBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
R2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbAogICAgIHJldHVybiBsaW5lQm94
TG9naWNhbFJlY3Q7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRh
dGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKQordm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZSgpCiB7CiAgICAgLy8g
RmluZCBvdXQgd2hhdCB3ZSBuZWVkIHRvIGludmFsaWRhdGUuIFRoaXMgaXMgd2hlcmUgd2UgYWRk
IHNvbWUgc21hcnRzIHRvIGRvIHBhcnRpYWwgbGluZSBsYXlvdXQuCiAgICAgLy8gRm9yIG5vdyBs
ZXQncyBqdXN0IGNsZWFyIHRoZSBydW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYjI3MGMxODEyZGM2NGE1MjM5ZDRmZmEzZDA1OWQ1ODQ5
MGRiYjMwMC4uZDk5ZmYxZmM4NGE3NzVlMjNjN2YzN2Y5OTA1ZWMwZmY3ZDUxNjM3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC0zOCw3ICsz
OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJ
bmxpbmVGb3JtYXR0aW5nU3RhdGU7Ci1jbGFzcyBJbnZhbGlkYXRpb25TdGF0ZTsKIGNsYXNzIExp
bmVCb3g7CiAKIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgbGF5b3V0IGxvZ2ljIGZvciBp
bmxpbmUgZm9ybWF0dGluZyBjb250ZXh0cy4KQEAgLTQ3LDEzICs0NiwxMyBAQCBjbGFzcyBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiAg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJs
aWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYpOwotICAgIHZvaWQgbGF5
b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChj
b25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKICAgICBMYXlvdXRV
bml0IHVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25j
YXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdT
dGF0ZSgpKTsgfQogICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkg
eyByZXR1cm4gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGb3JtYXR0aW5nQ29udGV4
dDo6Zm9ybWF0dGluZ1N0YXRlKCkpOyB9CiAKLSAgICB2b2lkIGxpbmVMYXlvdXRGb3JJbnRlcmdy
YXRpb24oSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmKTsKKyAgICB2b2lkIGxpbmVMYXlvdXRGb3JJbnRlcmdyYXRpb24oY29uc3QgQ29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50Jik7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5OyB9CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ1F1aXJrcyYgZm9y
bWF0dGluZ1F1aXJrcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ1F1
aXJrczsgfQpAQCAtNzMsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb2xsZWN0Q29u
dGVudElmTmVlZGVkKCk7CiAgICAgSW5saW5lUmVjdCBjb21wdXRlR2VvbWV0cnlGb3JMaW5lQ29u
dGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKTsKLSAgICB2b2lkIGludmFsaWRh
dGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKTsKKyAgICB2b2lkIGlu
dmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoKTsKIAogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeSBtX2lubGluZUZvcm1hdHRpbmdHZW9tZXRyeTsKICAgICBjb25zdCBJbmxpbmVGb3Jt
YXR0aW5nUXVpcmtzIG1faW5saW5lRm9ybWF0dGluZ1F1aXJrczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGRjYTBhNDRjNjc3YmNkNmFlNmVi
NGM4YTVkNjY3ZmNjMDFjY2MxOGQuLjg1ZDhkMTU0YzhmZmI3ZTY3MDYzNWE3NzRiMzYxZjU5ZDg2
MWExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNw
cApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiRmxvYXRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0
ZS5oIgotI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRDaGls
ZEl0ZXJhdG9yLmgiCkBAIC01NCw3ICs1Myw3IEBAIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRh
YmxlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29uCiB7
CiB9CiAKLXZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJ
bnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29u
c3RyYWludHMpCit2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRl
bnQoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAg
ICBhdXRvIGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSA9IGNvbnN0cmFpbnRzLmhvcml6b250YWwo
KS5sb2dpY2FsV2lkdGg7CiAgICAgYXV0byBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlID0gZG93bmNh
c3Q8Q29uc3RyYWludHNGb3JUYWJsZUNvbnRlbnQ+KGNvbnN0cmFpbnRzKS5hdmFpbGFibGVWZXJ0
aWNhbFNwYWNlRm9yQ29udGVudCgpOwpAQCAtMTA1LDExICsxMDQsMTAgQEAgdm9pZCBUYWJsZUZv
cm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWls
YWJsZUhvcml6b24KICAgICAgICAgY2VsbEJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChm
b3JtYXR0aW5nR2VvbWV0cnkuaG9yaXpvbnRhbFNwYWNlRm9yQ2VsbENvbnRlbnQoKmNlbGwpKTsK
IAogICAgICAgICBpZiAoY2VsbEJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewotICAg
ICAgICAgICAgYXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9IEludmFsaWRhdGlvblN0YXRlIHsgfTsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBwYXJ0IG9mIHRo
ZSBpbnZhbGlkYXRpb24gc3RhdGUgdG8gaW5kaWNhdGUgd2hlbiB3ZSByZS1sYXlvdXQgdGhlIGNl
bGwgbXVsdGlwbGUgdGltZXMgYXMgcGFydCBvZiB0aGUgbXVsdGktcGFzcyB0YWJsZSBhbGdvcml0
aG0uCiAgICAgICAgICAgICBhdXRvJiBmbG9hdGluZ1N0YXRlRm9yQ2VsbENvbnRlbnQgPSBsYXlv
dXRTdGF0ZSgpLmVuc3VyZUJsb2NrRm9ybWF0dGluZ1N0YXRlKGNlbGxCb3gpLmZsb2F0aW5nU3Rh
dGUoKTsKICAgICAgICAgICAgIGZsb2F0aW5nU3RhdGVGb3JDZWxsQ29udGVudC5jbGVhcigpOwot
ICAgICAgICAgICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2VsbEJv
eCwgbGF5b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUs
IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY2VsbEJveCkp
OworICAgICAgICAgICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2Vs
bEJveCwgbGF5b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoZm9ybWF0dGluZ0dlb21l
dHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjZWxsQm94KSk7CiAgICAgICAgIH0KICAg
ICAgICAgY2VsbEJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZm9ybWF0dGluZ0dlb21l
dHJ5LnZlcnRpY2FsU3BhY2VGb3JDZWxsQ29udGVudCgqY2VsbCwgYXZhaWxhYmxlVmVydGljYWxT
cGFjZSkpOwogCkBAIC01NDEsMTAgKzUzOSw4IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUFuZERpc3RyaWJ1dGVFeHRyYVNwYWNlKExheW91dFVuaXQgYXZhaWxhYmxlCiAg
ICAgICAgICAgICAgICAgY2VsbEJveEdlb21ldHJ5LnNldFBhZGRpbmcoZm9ybWF0dGluZ0dlb21l
dHJ5LmNvbXB1dGVkUGFkZGluZyhjZWxsQm94LCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpKTsK
ICAgICAgICAgICAgICAgICBjZWxsQm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGZvcm1h
dHRpbmdHZW9tZXRyeS5ob3Jpem9udGFsU3BhY2VGb3JDZWxsQ29udGVudChjZWxsKSk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoY2VsbEJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewot
ICAgICAgICAgICAgICAgICAgICBhdXRvIGludmFsaWRhdGlvblN0YXRlID0gSW52YWxpZGF0aW9u
U3RhdGUgeyB9OwotICAgICAgICAgICAgICAgICAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3Jt
YXR0aW5nQ29udGV4dChjZWxsQm94LCBsYXlvdXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVu
dChpbnZhbGlkYXRpb25TdGF0ZSwgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudChjZWxsQm94KSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmIChjZWxsQm94Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQorICAgICAgICAgICAgICAg
ICAgICBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjZWxsQm94LCBsYXlv
dXRTdGF0ZSgpKS0+bGF5b3V0SW5GbG93Q29udGVudChmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3Ry
YWludHNGb3JJbkZsb3dDb250ZW50KGNlbGxCb3gpKTsKICAgICAgICAgICAgICAgICBjZWxsQm94
R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChmb3JtYXR0aW5nR2VvbWV0cnkudmVydGljYWxT
cGFjZUZvckNlbGxDb250ZW50KGNlbGwsIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpKTsKICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICBsYXlvdXRDZWxsQ29udGVudChzbG90LmNlbGwoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDg2YmI1MDA1
MTExM2E3ZWQ1NDFhNTU2NTA2YjE2OTI4NTk5ZTU1MmMuLjMwNjhhOWJlN2ZiMzU3YzgwNjJjNDdl
MGUzODczMGFkYmJiNWIyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC0zOCwxNSArMzgsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBMYXlvdXQgewogCi1jbGFzcyBJbnZhbGlkYXRpb25TdGF0ZTsKLQogLy8gVGhpcyBjbGFz
cyBpbXBsZW1lbnRzIHRoZSBsYXlvdXQgbG9naWMgZm9yIHRhYmxlIGZvcm1hdHRpbmcgY29udGV4
dHMuCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdGFibGVzLmh0bWwKIGNsYXNzIFRh
YmxlRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGFibGVGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJs
aWM6CiAgICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3RhdGUmKTsKLSAgICB2b2lkIGxheW91
dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50c0Zvcklu
Rmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoY29u
c3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jikgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5p
dCB1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29uc3QgVGFibGVG
b3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdGFibGVGb3JtYXR0aW5nR2VvbWV0cnk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5jcHAKaW5kZXggNWViZTc1OTc5NzBhOTEzODU0MDJhZTM4MjQ1ZjBhMzczMTk1MjZiOS4u
MTkzMDNlOGJiMmIyYjYyMDU5ZDNmNjIyMjhkZDU0NGY5OGRmNDQ5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJJbnZhbGlkYXRpb25TdGF0ZS5o
IgogI2luY2x1ZGUgIkxheW91dEJveEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dEJ1aWxkZXIuaCIKQEAgLTIxNiwxMCArMjE1LDkgQEAgdm9pZCBMaW5lTGF5b3V0OjpsYXlvdXQo
KQogICAgIGF1dG8mIHJvb3RHZW9tZXRyeSA9IG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3go
cm9vdExheW91dEJveCk7CiAgICAgYXV0byBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCA9IExheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQgeyByb290TGF5b3V0Qm94LCBtX2lubGluZUZvcm1h
dHRpbmdTdGF0ZSB9OwogCi0gICAgYXV0byBpbnZhbGlkYXRpb25TdGF0ZSA9IExheW91dDo6SW52
YWxpZGF0aW9uU3RhdGUgeyB9OwogICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gTGF5
b3V0OjpIb3Jpem9udGFsQ29uc3RyYWludHMgeyByb290R2VvbWV0cnkuY29udGVudEJveExlZnQo
KSwgcm9vdEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH07CiAKLSAgICBpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5saW5lTGF5b3V0Rm9ySW50ZXJncmF0aW9uKGludmFsaWRhdGlvblN0YXRlLCB7
IGhvcml6b250YWxDb25zdHJhaW50cywgcm9vdEdlb21ldHJ5LmNvbnRlbnRCb3hUb3AoKSB9KTsK
KyAgICBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5saW5lTGF5b3V0Rm9ySW50ZXJncmF0aW9uKHsg
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCByb290R2VvbWV0cnkuY29udGVudEJveFRvcCgpIH0pOwog
CiAgICAgY29uc3RydWN0Q29udGVudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uQ29udGV4dC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYjg3MDY1MWY0Yzc1NmI2ZDJmNjEyNzUwNGYzMjg1MjMx
MDkzMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25Db250ZXh0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSW52YWxpZGF0aW9uQ29udGV4dC5oIgotCi0jaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0KLSNpbmNsdWRlICJJbnZhbGlkYXRpb25TdGF0ZS5o
IgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLW5hbWVzcGFjZSBMYXlvdXQgewotCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW52
YWxpZGF0aW9uQ29udGV4dCk7Ci0KLUludmFsaWRhdGlvbkNvbnRleHQ6OkludmFsaWRhdGlvbkNv
bnRleHQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlKQotICAgIDogbV9pbnZh
bGlkYXRpb25TdGF0ZShpbnZhbGlkYXRpb25TdGF0ZSkKLXsKLX0KLQotdm9pZCBJbnZhbGlkYXRp
b25Db250ZXh0OjpzdHlsZUNoYW5nZWQoY29uc3QgQm94JiBsYXlvdXRCb3gsIFN0eWxlRGlmZmVy
ZW5jZSkKLXsKLSAgICBtX2ludmFsaWRhdGlvblN0YXRlLm1hcmtOZWVkc1VwZGF0ZShsYXlvdXRC
b3gpOwotfQotCi12b2lkIEludmFsaWRhdGlvbkNvbnRleHQ6OmNvbnRlbnRDaGFuZ2VkKGNvbnN0
IEJveCYpCi17Ci19Ci0KLXZvaWQgSW52YWxpZGF0aW9uQ29udGV4dDo6c3VidHJlZUNoYW5nZWQo
Y29uc3QgQm94JikKLXsKLX0KLQotfQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uQ29udGV4dC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmQ5MDIwYjc3OWJjZTNmNzhlOWI2ZmZhZDQ4MTIzNjcx
OTg2NTIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uQ29udGV4dC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0KLSNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWVudW0gY2xhc3MgU3R5bGVEaWZm
ZXJlbmNlOwotCi1uYW1lc3BhY2UgTGF5b3V0IHsKLWNsYXNzIEJveDsKLWNsYXNzIEludmFsaWRh
dGlvblN0YXRlOwotCi1jbGFzcyBJbnZhbGlkYXRpb25Db250ZXh0IHsKLSAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEludmFsaWRhdGlvbkNvbnRleHQpOwotcHVibGljOgotICAgIEludmFsaWRh
dGlvbkNvbnRleHQoSW52YWxpZGF0aW9uU3RhdGUmKTsKLQotICAgIHZvaWQgc3R5bGVDaGFuZ2Vk
KGNvbnN0IEJveCYsIFN0eWxlRGlmZmVyZW5jZSk7Ci0gICAgLy8gRklYTUU6IFdlIG1pZ2h0IGp1
c3QgbWVyZ2UgdGhpcyB3aXRoIHN1YnRyZWVDaGFuZ2VkLgotICAgIHZvaWQgY29udGVudENoYW5n
ZWQoY29uc3QgQm94Jik7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHBsYWNlaG9sZGVy
IGZvciB0cmVlIGNoYW5nZXMgbGlrZSBnYWluaW5nIGFuZCBsb3NpbmcgZGVzY2VuZGFudHMuIAot
ICAgIHZvaWQgc3VidHJlZUNoYW5nZWQoY29uc3QgQm94Jik7Ci0KLXByaXZhdGU6Ci0gICAgSW52
YWxpZGF0aW9uU3RhdGUmIG1faW52YWxpZGF0aW9uU3RhdGU7Ci19OwotCi19Ci19Ci0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0
aW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlk
YXRpb25TdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMDFjZmMwNTFi
MDE2ODU1N2Y1OTQ3N2Q3Y2RiNGE3MDYwYjI1NTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9J
bnZhbGlkYXRpb25TdGF0ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRl
LmgiCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUg
IkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsKLQot
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEludmFsaWRhdGlvblN0YXRlKTsKLQotSW52YWxp
ZGF0aW9uU3RhdGU6OkludmFsaWRhdGlvblN0YXRlKCkKLXsKLX0KLQotdm9pZCBJbnZhbGlkYXRp
b25TdGF0ZTo6bWFya05lZWRzVXBkYXRlKGNvbnN0IEJveCYgbGF5b3V0Qm94KQotewotICAgIC8v
IFdlIG5ldmVyIGxheSBvdXQgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jay4gSXQgYWx3YXlz
IGhhcyBwcmUtZGV0ZXJtaW5lZCBnZW9tZXRyeS4KLSAgICBBU1NFUlQoIWlzPEluaXRpYWxDb250
YWluaW5nQmxvY2s+KGxheW91dEJveCkpOwotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3QgYSBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbi4KLSAgICBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdHMu
YWRkKCZsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCkpOwotfQotCi1ib29sIEludmFs
aWRhdGlvblN0YXRlOjpuZWVkc0xheW91dChjb25zdCBCb3gmKSBjb25zdAotewotICAgIHJldHVy
biB0cnVlOwotfQotCi19Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTcwZTAxNDQ4YTAwNzhiMzFjMjg3MjhiNDViOGQ2YTU0M2I1MzcwZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0YXRlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2lu
Y2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgotI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
LSNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFt
ZXNwYWNlIExheW91dCB7Ci0KLWNsYXNzIEludmFsaWRhdGlvblN0YXRlIHsKLSAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEludmFsaWRhdGlvblN0YXRlKTsKLXB1YmxpYzoKLSAgICBJbnZhbGlk
YXRpb25TdGF0ZSgpOwotCi0gICAgdm9pZCBtYXJrTmVlZHNVcGRhdGUoY29uc3QgQm94Jik7Ci0g
ICAgYm9vbCBuZWVkc0xheW91dChjb25zdCBCb3gmKSBjb25zdDsKLQotICAgIHVzaW5nIEZvcm1h
dHRpbmdDb250ZXh0Um9vdHMgPSBXZWFrSGFzaFNldDxjb25zdCBDb250YWluZXJCb3g+OwotICAg
IC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgZG8gZnVsbCBmb3JtYXR0aW5nIGNvbnRleHQgbGF5b3V0
cyAobm8gcGFydGlhbCBsYXlvdXQgd2l0aGluIGEgZm9ybWF0dGluZyBjb250ZXh0KS4KLSAgICBj
b25zdCBGb3JtYXR0aW5nQ29udGV4dFJvb3RzJiBmb3JtYXR0aW5nQ29udGV4dFJvb3RzKCkgY29u
c3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dFJvb3RzOyB9Ci0KLXByaXZhdGU6Ci0gICAg
Rm9ybWF0dGluZ0NvbnRleHRSb290cyBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdHM7Ci19OwotCi19
Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBjNWVjMzRmYzJmNTllMWVjY2Y2NDgwNWVkMDk5
ZWYxOTJkNjU2NTk4Li5hZGJjODk1Yzg2MTMwYWNkODkzYTliNzNiMzdjM2E0NGZlMDE3ZDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuY3BwCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlQ29sRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJJbnZhbGlkYXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNs
dWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3Iu
aCIKQEAgLTU5MSw5ICs1ODksNyBAQCB2b2lkIHByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVu
dHMoKQogICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gTGF5b3V0U3RhdGUgeyAqZG9jdW1lbnQs
IGxheW91dFRyZWUtPnJvb3QoKSB9OwogCiAgICAgICAgIGF1dG8mIGxheW91dFJvb3QgPSBsYXlv
dXRTdGF0ZS5yb290KCk7Ci0gICAgICAgIGF1dG8gaW52YWxpZGF0aW9uU3RhdGUgPSBJbnZhbGlk
YXRpb25TdGF0ZSB7IH07Ci0KLSAgICAgICAgTGF5b3V0Q29udGV4dChsYXlvdXRTdGF0ZSkubGF5
b3V0KHJlbmRlclZpZXcuc2l6ZSgpLCBpbnZhbGlkYXRpb25TdGF0ZSk7CisgICAgICAgIExheW91
dENvbnRleHQobGF5b3V0U3RhdGUpLmxheW91dChyZW5kZXJWaWV3LnNpemUoKSk7CiAgICAgICAg
IHNob3dMYXlvdXRUcmVlKGxheW91dFJvb3QsICZsYXlvdXRTdGF0ZSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKaW5kZXggYjc1
OTcxNDgxOTk2NDVjMDc4OTE4NDcyODg4ZDI1ZDc3YTE1YTIxOS4uMjFmOWViYWMzZjgxMDgzOGEz
ZjI5MjI5NzM1MjY4NGI2NmM2YTdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlld0xheW91dENvbnRleHQuY3BwCkBAIC00MCw4ICs0MCw2IEBACiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCi0jaW5jbHVkZSAiSW52YWxpZGF0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKICNp
bmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKQEAgLTY3
LDEwICs2NSw4IEBAIHZvaWQgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6bGF5b3V0VXNpbmdGb3Jt
YXR0aW5nQ29udGV4dCgpCiAgICAgYXV0byYgcmVuZGVyVmlldyA9ICp0aGlzLT5yZW5kZXJWaWV3
KCk7CiAgICAgbV9sYXlvdXRUcmVlID0gTGF5b3V0OjpUcmVlQnVpbGRlcjo6YnVpbGRMYXlvdXRU
cmVlKHJlbmRlclZpZXcpOwogICAgIG1fbGF5b3V0U3RhdGUgPSBtYWtlVW5pcXVlPExheW91dDo6
TGF5b3V0U3RhdGU+KCpkb2N1bWVudCgpLCBtX2xheW91dFRyZWUtPnJvb3QoKSk7Ci0gICAgLy8g
RklYTUU6IFRoaXMgaXMgbm90IHRoZSByZWFsIGludmFsaWRhdGlvbiB5ZXQuCi0gICAgYXV0byBp
bnZhbGlkYXRpb25TdGF0ZSA9IExheW91dDo6SW52YWxpZGF0aW9uU3RhdGUgeyB9OwogICAgIGF1
dG8gbGF5b3V0Q29udGV4dCA9IExheW91dDo6TGF5b3V0Q29udGV4dCB7ICptX2xheW91dFN0YXRl
IH07Ci0gICAgbGF5b3V0Q29udGV4dC5sYXlvdXQodmlldygpLmxheW91dFNpemUoKSwgaW52YWxp
ZGF0aW9uU3RhdGUpOworICAgIGxheW91dENvbnRleHQubGF5b3V0KHZpZXcoKS5sYXlvdXRTaXpl
KCkpOwogCiAgICAgLy8gQ2xlYW4gdXAgdGhlIHJlbmRlciB0cmVlIHN0YXRlIHdoZW4gd2UgZG9u
J3QgcnVuIFJlbmRlclZpZXc6OmxheW91dC4KICAgICBpZiAocmVuZGVyVmlldy5uZWVkc0xheW91
dCgpKSB7Cg==
</data>
<flag name="review"
          id="461347"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>