<?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>198886</bug_id>
          
          <creation_ts>2019-06-15 01:12:01 -0700</creation_ts>
          <short_desc>[LFC][BFC] Fix available width for float avoiders.</short_desc>
          <delta_ts>2019-06-15 12:30:14 -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>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1544991</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-06-15 01:12:01 -0700</bug_when>
    <thetext>it&apos;s not always the width of the content box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544992</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-15 01:12:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/51773643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544994</commentid>
    <comment_count>2</comment_count>
      <attachid>372188</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-06-15 01:53:50 -0700</bug_when>
    <thetext>Created attachment 372188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544995</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-06-15 01:56:20 -0700</bug_when>
    <thetext>Attachment 372188 did not pass style-queue:


ERROR: Source/WebCore/layout/blockformatting/BlockFormattingContextGeometry.cpp:233:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545004</commentid>
    <comment_count>4</comment_count>
      <attachid>372190</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-06-15 05:54:09 -0700</bug_when>
    <thetext>Created attachment 372190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545009</commentid>
    <comment_count>5</comment_count>
      <attachid>372190</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-06-15 06:37:31 -0700</bug_when>
    <thetext>Comment on attachment 372190
Patch

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

&gt; Source/WebCore/layout/FormattingContext.cpp:179
&gt; +// FIXME turn these into templates.

FIXME:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545040</commentid>
    <comment_count>6</comment_count>
      <attachid>372196</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-06-15 11:47:25 -0700</bug_when>
    <thetext>Created attachment 372196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545041</commentid>
    <comment_count>7</comment_count>
      <attachid>372196</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-15 12:30:12 -0700</bug_when>
    <thetext>Comment on attachment 372196
Patch

Clearing flags on attachment: 372196

Committed r246468: &lt;https://trac.webkit.org/changeset/246468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545042</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-15 12:30:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372188</attachid>
            <date>2019-06-15 01:53:50 -0700</date>
            <delta_ts>2019-06-15 05:54:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198886-20190615015348.patch</filename>
            <type>text/plain</type>
            <size>25588</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ4YzBlYmFjNmJjNjQz
YzU5YzVkY2E3YWI2OTg5YjM5YzM5YjZjOC4uMmVhMmMzYTJiYjcxNzczMWVhZjMzN2FlYTM5Yzc0
ZDViNzk3NzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTA2LTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBGaXggYXZh
aWxhYmxlIHdpZHRoIGZvciBub24tZmxvYXRpbmcgcG9zaXRpb25lZCBmbG9hdCBhdm9pZGVycy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODg4Ngor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTE3NzM2NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm9ybWFsbHkgdGhlIGF2YWlsYWJsZSB3aWR0aCBm
b3IgYW4gaW4tZmxvdyBibG9jayBsZXZlbCBib3ggaXMgdGhlIHdpZHRoIG9mIHRoZSBjb250YWlu
aW5nIGJsb2NrJ3MgY29udGVudCBib3guCisgICAgICAgIEhvd2V2ZXIgYSBub24tZmxvYXRpbmcg
cG9zaXRpb25lZCBmbG9hdCBhdm9pZGVyIGJveCBtaWdodCBiZSBjb25zdHJhaW5lZCBieSBleGlz
dGluZyBmbG9hdHMuCisgICAgICAgIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCB3ZSBwcmUtY29tcHV0
ZShlc3RpbWF0ZSkgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGFuZCBjaGVjayB0aGUgY3VycmVudCBm
bG9hdGluZyBjb250ZXh0IGZvcgorICAgICAgICBsZWZ0IGFuZCByaWdodCBmbG9hdHMuIFRoZXNl
IGZsb2F0cyBjb250cmFpbiB0aGUgYXZhaWxhYmxlIHdpZHRoIGFuZCB0aGlzIGNvbXB1dGVkIHZh
bHVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncworICAg
ICAgICBjb250ZW50IGJveCdzIHdpZHRoIHdoZSBjYWxjdWxhdGluZyB0aGUgdXNlZCB3aWR0aCBm
b3Igd2lkdGg6IGF1dG8uIAorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNl
c3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjptYXBM
ZWZ0VG9BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjptYXBSaWdodFRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6bWFwUG9pbnRUb0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcENvb3JkaW5hdGVUb0FuY2VzdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lk
dGhGb3JGbG9hdEF2b2lkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
U3RhdGljVmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlU3RhdGljUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlv
bkZvckZvcm1hdHRpbmdSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdp
ZHRoQW5kTWFyZ2luKToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OnN0YXRpY0hvcml6b250YWxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbik6CisgICAg
ICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6Y29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJsb2NrQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tDb250YWluZXI6OmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRPbmx5IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCbG9j
a0NvbnRhaW5lci5oOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNGbG9hdEF2b2lkZXIgY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCb3g6OmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHRPbmx5IGNv
bnN0KToKKwogMjAxOS0wNi0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW01hcmdpbkNvbGxhcHNpbmddIENvbGxhcHNlZCB0aHJvdWdoIG1hcmdpbiB2
YWx1ZXMgcHJlc2VydmUgcXVpcmsgc3RhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCBhMWVjNGExNWJjNmUyNjU5NGQwMDUzYzgzYmMxNjVlZmE3
NGExNWQ2Li4xNzMxZGRiYWNjNTU1N2RmMzMyNjFlYzYxYjk1YjNiNTJjMmM1OWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE2NSw2ICsxNjUs
MzAgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMo
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRp
bmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIkVuZDogbGF5b3V0IG91dC1vZi1mbG93IGRlc2Nl
bmRhbnRzIC0+IGNvbnRleHQ6ICIgPDwgJmxheW91dFN0YXRlIDw8ICIgcm9vdDogIiA8PCAmcm9v
dCgpKTsKIH0KIAorc3RhdGljIExheW91dFVuaXQgbWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNl
c3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIExheW91dFVuaXQgaG9yaXpvbnRh
bFBvc2l0aW9uLCBjb25zdCBDb250YWluZXImIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgQ29udGFp
bmVyJiBhbmNlc3RvcikKK3sKKyAgICAvLyAiaG9yaXpvbnRhbFBvc2l0aW9uIiBpcyBpbiB0aGUg
Y29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlICJjb250YWluaW5nQmxvY2siLiAtPiBtYXAgZnJvbSBj
b250YWluaW5nQmxvY2sgdG8gYW5jZXN0b3IuCisgICAgaWYgKCZjb250YWluaW5nQmxvY2sgPT0g
JmFuY2VzdG9yKQorICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFBvc2l0aW9uOworICAgIEFTU0VS
VChjb250YWluaW5nQmxvY2suaXNEZXNjZW5kYW50T2YoYW5jZXN0b3IpKTsKKyAgICBmb3IgKGF1
dG8qIGNvbnRhaW5lciA9ICZjb250YWluaW5nQmxvY2s7IGNvbnRhaW5lciAmJiBjb250YWluZXIg
IT0gJmFuY2VzdG9yOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQor
ICAgICAgICBob3Jpem9udGFsUG9zaXRpb24gKz0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqY29udGFpbmVyKS5sZWZ0KCk7CisgICAgcmV0dXJuIGhvcml6b250YWxQb3NpdGlv
bjsKK30KKworLy8gRklYTUUgdHVybiB0aGVzZSBpbnRvIHRlbXBsYXRlcy4KK0xheW91dFVuaXQg
Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcExlZnRUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0
b3IpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgcmV0
dXJuIG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IobGF5b3V0U3RhdGUsIGxheW91dFN0
YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5sZWZ0KCksICpsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCksIGFuY2VzdG9yKTsKK30KKworTGF5b3V0VW5pdCBGb3JtYXR0aW5n
Q29udGV4dDo6bWFwUmlnaHRUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpCit7Cisg
ICAgQVNTRVJUKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgcmV0dXJuIG1hcEhv
cml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IobGF5b3V0U3RhdGUsIGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5yaWdodCgpLCAqbGF5b3V0Qm94LmNvbnRhaW5p
bmdCbG9jaygpLCBhbmNlc3Rvcik7Cit9CisKIERpc3BsYXk6OkJveCBGb3JtYXR0aW5nQ29udGV4
dDo6bWFwQm94VG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKQogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNEZXNjZW5kYW50T2YoYW5jZXN0b3IpKTsKQEAgLTE5Niw3ICsyMjAsNyBA
QCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBUb3BUb0FuY2VzdG9yKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYwogICAgIHJldHVybiB0b3A7CiB9CiAKLVBvaW50IEZv
cm1hdHRpbmdDb250ZXh0OjptYXBDb29yZGluYXRlVG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIFBvaW50IHBvc2l0aW9uLCBjb25zdCBDb250YWluZXImIGNvbnRhaW5p
bmdCbG9jaywgY29uc3QgQ29udGFpbmVyJiBhbmNlc3RvcikKK1BvaW50IEZvcm1hdHRpbmdDb250
ZXh0OjptYXBQb2ludFRvQW5jZXN0b3IoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBQ
b2ludCBwb3NpdGlvbiwgY29uc3QgQ29udGFpbmVyJiBjb250YWluaW5nQmxvY2ssIGNvbnN0IENv
bnRhaW5lciYgYW5jZXN0b3IpCiB7CiAgICAgYXV0byBtYXBwZWRQb3NpdGlvbiA9IHBvc2l0aW9u
OwogICAgIGF1dG8qIGNvbnRhaW5lciA9ICZjb250YWluaW5nQmxvY2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDFjMTM2NzI0MWFiZTIyYjFhY2RiZWYz
ZTFkMjA5OGNkMDdjMTY5YzAuLjg1NzgxMTk5Njk3ZGQ0OTFlMmQ3ZTRjYzE4NTU4NzdjYTNiZTY4
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02MCw3
ICs2MCw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEaXNwbGF5OjpCb3ggbWFwQm94VG9BbmNl
c3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNvbnN0IENvbnRhaW5lciYgYW5j
ZXN0b3IpOwogICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcFRvcFRvQW5jZXN0b3IoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKTsKLSAgICBz
dGF0aWMgUG9pbnQgbWFwQ29vcmRpbmF0ZVRvQW5jZXN0b3IoY29uc3QgTGF5b3V0U3RhdGUmLCBQ
b2ludCwgY29uc3QgQ29udGFpbmVyJiBjb250YWluaW5nQmxvY2ssIGNvbnN0IENvbnRhaW5lciYg
YW5jZXN0b3IpOworICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcExlZnRUb0FuY2VzdG9yKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3Rvcik7Cisg
ICAgc3RhdGljIExheW91dFVuaXQgbWFwUmlnaHRUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3Rvcik7CisgICAgc3RhdGljIFBv
aW50IG1hcFBvaW50VG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYsIFBvaW50LCBjb25zdCBD
b250YWluZXImIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgQ29udGFpbmVyJiBhbmNlc3Rvcik7CiAK
IHByb3RlY3RlZDoKICAgICB1c2luZyBMYXlvdXRRdWV1ZSA9IFZlY3Rvcjxjb25zdCBCb3gqPjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDc0ZTBiYWRhNWI0MDU2YzZmZjky
NDY4YWZiYzc4Njg5OGMwNjljYzIuLjEzZDYzNmMyN2Y4YmZiMmQ3ZjhlN2RkODVlZjY1ZjI3ZTA0
ZmZiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTE4LDEzICsxMTgs
NTEgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoKSBjb25zdAogICAgIExP
R19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbRW5kXSAt
PiBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3Qo
KSA8PCAiKSIpOwogfQogCitPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdDb250
ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAoreworICAg
IC8vIE5vcm1hbGx5IHRoZSBhdmFpbGFibGUgd2lkdGggZm9yIGFuIGluLWZsb3cgYmxvY2sgbGV2
ZWwgYm94IGlzIHRoZSB3aWR0aCBvZiB0aGUgY29udGFpbmluZyBibG9jaydzIGNvbnRlbnQgYm94
LgorICAgIC8vIEhvd2V2ZXIgKGFuZCBwbGVhc2UgdGVsbCBtZSB3aGVyZSBpdCBpcyBpbiB0aGUg
c3BlYykgbm9uLWZsb2F0aW5nIHBvc2l0aW9uZWQgZmxvYXQgYXZvaWRlciBibG9jayBsZXZlbCBi
b3hlcyBhcmUgY29uc3RyYWluZWQgYnkgZXhpc3RpbmcgZmxvYXRzLgorICAgIGlmICghbGF5b3V0
Qm94LmlzRmxvYXRBdm9pZGVyKCkgfHwgbGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkp
CisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byYgZmxvYXRpbmdTdGF0ZSA9IGZsb2F0aW5n
Q29udGV4dC5mbG9hdGluZ1N0YXRlKCk7CisgICAgaWYgKGZsb2F0aW5nU3RhdGUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4geyB9OworICAgIC8vIFZlcnRpY2FsIHN0YXRpYyBwb3NpdGlvbiBp
cyBub3QgY29tcHV0ZWQgeWV0LCBzbyBsZXQncyBqdXN0IGVzdGltYXRlIGl0IGZvciBub3cuCisg
ICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSk7Cisg
ICAgYXV0byB2ZXJ0aWNhbFBvc2l0aW9uID0gRm9ybWF0dGluZ0NvbnRleHQ6Om1hcFRvcFRvQW5j
ZXN0b3IobGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94LCBmb3JtYXR0aW5nUm9vdCk7CisgICAgYXV0
byBjb25zdHJhaW50cyA9IGZsb2F0aW5nU3RhdGUuY29uc3RyYWludHMoeyB2ZXJ0aWNhbFBvc2l0
aW9uIH0sIGZvcm1hdHRpbmdSb290KTsKKyAgICBpZiAoIWNvbnN0cmFpbnRzLmxlZnQgJiYgIWNv
bnN0cmFpbnRzLnJpZ2h0KQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8mIGNvbnRhaW5p
bmdCbG9jayA9IGRvd25jYXN0PENvbnRhaW5lcj4oKmxheW91dEJveC5jb250YWluaW5nQmxvY2so
KSk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9IGxheW91dFN0YXRlKCku
ZGlzcGxheUJveEZvckxheW91dEJveChjb250YWluaW5nQmxvY2spOworICAgIGF1dG8gYXZhaWxh
YmxlV2lkdGggPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwor
CisgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMZWZ0OworICAgIExheW91dFVuaXQgY29u
dGFpbmluZ0Jsb2NrUmlnaHQgPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LnJpZ2h0KCk7Cisg
ICAgaWYgKCZjb250YWluaW5nQmxvY2sgIT0gJmZvcm1hdHRpbmdSb290KSB7CisgICAgICAgIC8v
IE1vdmUgY29udGFpbmluZyBibG9jayBsZWZ0L3JpZ2h0IHRvIHRoZSByb290J3MgY29vcmRpbmF0
ZSBzeXN0ZW0uCisgICAgICAgIGNvbnRhaW5pbmdCbG9ja0xlZnQgPSBGb3JtYXR0aW5nQ29udGV4
dDo6bWFwTGVmdFRvQW5jZXN0b3IobGF5b3V0U3RhdGUoKSwgY29udGFpbmluZ0Jsb2NrLCBmb3Jt
YXR0aW5nUm9vdCk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9ja1JpZ2h0ID0gRm9ybWF0dGluZ0Nv
bnRleHQ6Om1hcFJpZ2h0VG9BbmNlc3RvcihsYXlvdXRTdGF0ZSgpLCBjb250YWluaW5nQmxvY2ss
IGZvcm1hdHRpbmdSb290KTsKKyAgICB9CisgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50
Qm94TGVmdCA9IGNvbnRhaW5pbmdCbG9ja0xlZnQgKyBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94
LmJvcmRlckxlZnQoKSArIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gucGFkZGluZ0xlZnQoKS52
YWx1ZU9yKDApOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFJpZ2h0ID0gY29u
dGFpbmluZ0Jsb2NrUmlnaHQgLSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmJvcmRlclJpZ2h0
KCkgKyBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7
CisKKyAgICAvLyBTaHJpbmsgdGhlIGF2YWlsYWJsZSBzcGFjZSBpZiB0aGUgZmxvYXRzIGFyZSBh
Y3R1YWxseSBpbnRydWRpbmcgYXQgdGhpcyB2ZXJ0aWNhbCBwb3NpdGlvbi4KKyAgICBhdmFpbGFi
bGVXaWR0aCAtPSAoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY29uc3RyYWludHMubGVmdC52YWx1
ZU9yKFBvc2l0aW9uSW5Db250ZXh0Um9vdCB7IDAgfSkgLSBjb250YWluaW5nQmxvY2tDb250ZW50
Qm94TGVmdCkKKyAgICAgICAgKyBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjb250YWluaW5nQmxv
Y2tDb250ZW50Qm94UmlnaHQgLSBjb25zdHJhaW50cy5yaWdodC52YWx1ZU9yKFBvc2l0aW9uSW5D
b250ZXh0Um9vdCB7IGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hSaWdodCB9KSkpOworICAgIHJl
dHVybiBhdmFpbGFibGVXaWR0aDsKK30KKwogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojps
YXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRl
eHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogeworICAgIEFTU0VSVChsYXlvdXRCb3gu
ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICAvLyBTdGFydCBsYXlpbmcgb3V0
IHRoaXMgZm9ybWF0dGluZyByb290IGluIHRoZSBmb3JtYXR0aW5nIGNvbnRlbnh0IGl0IGxpdmVz
IGluLgogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFt
IDw8ICJbQ29tcHV0ZV0gLT4gW1Bvc2l0aW9uXVtCb3JkZXJdW1BhZGRpbmddW1dpZHRoXVtNYXJn
aW5dIC0+IGZvciBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgY29tcHV0
ZUJvcmRlckFuZFBhZGRpbmcobGF5b3V0Qm94KTsKLSAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4o
bGF5b3V0Qm94KTsKLSAgICBjb21wdXRlU3RhdGljUG9zaXRpb24oZmxvYXRpbmdDb250ZXh0LCBs
YXlvdXRCb3gpOworICAgIGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGZsb2F0aW5nQ29u
dGV4dCwgbGF5b3V0Qm94KTsKKworICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gs
IHVzZWRBdmFpbGFibGVXaWR0aEZvckZsb2F0QXZvaWRlcihmbG9hdGluZ0NvbnRleHQsIGxheW91
dEJveCkpOworICAgIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24obGF5b3V0Qm94KTsK
ICAgICAvLyBTd2ljaCBvdmVyIHRvIHRoZSBuZXcgZm9ybWF0dGluZyBjb250ZXh0ICh0aGUgb25l
IHRoYXQgdGhlIHJvb3QgY3JlYXRlcykuCiAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IGxh
eW91dFN0YXRlKCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Qm94KTsKICAgICBmb3Jt
YXR0aW5nQ29udGV4dC0+bGF5b3V0KCk7CkBAIC0xNzIsMTYgKzIxMCwyNyBAQCB2b2lkIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91
dCwgc3RyZWFtIDw8ICJFbmQ6IG1vdmUgaW4tZmxvdyBwb3NpdGlvbmVkIGNoaWxkcmVuIC0+IHBh
cmVudDogIiA8PCAmbGF5b3V0Qm94KTsKIH0KIAotdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlU3RhdGljUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0Nv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRl
eHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAg
YXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAgIGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5zZXRUb3BMZWZ0KEdlb21ldHJ5Ojpz
dGF0aWNQb3NpdGlvbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7CisgICAgbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnNldFRvcChHZW9tZXRyeTo6c3RhdGlj
VmVydGljYWxQb3NpdGlvbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSk7CiAgICAgaWYgKGxheW91
dEJveC5oYXNGbG9hdENsZWFyKCkpCiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBv
c2l0aW9uRm9yRmxvYXRDbGVhcihmbG9hdGluZ0NvbnRleHQsIGxheW91dEJveCk7CiAgICAgZWxz
ZSBpZiAobGF5b3V0Qm94LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkKICAgICAgICAg
Y29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdChsYXlvdXRC
b3gpOwogfQogCit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNIb3Jp
em9udGFsUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit7CisgICAgbGF5b3V0
U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0TGVmdChHZW9tZXRy
eTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGxheW91dFN0YXRlKCksIGxheW91dEJveCkpOwor
fQorCit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihj
b25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0Cit7CisgICAgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oZmxvYXRpbmdD
b250ZXh0LCBsYXlvdXRCb3gpOworICAgIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRpb24o
bGF5b3V0Qm94KTsKK30KKwogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0
aW1hdGVkVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAg
ICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CkBAIC0yMjYsMTMgKzI3
NSwxNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRWZXJ0
aWNhbFBvc2l0aW9uRm9yRm9ybWF0dGluZ1Jvb3QoYwogICAgIEFTU0VSVChsYXlvdXRCb3guZXN0
YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIWxheW91dEJveC5oYXNG
bG9hdENsZWFyKCkpOwogCi0gICAgYXV0byBhdm9pZHNGbG9hdHMgPSBsYXlvdXRCb3guaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCk7Ci0gICAgaWYgKGF2b2lkc0Zsb2F0cykKKyAgICBpZiAobGF5b3V0Qm94LmlzRmxv
YXRpbmdQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgY29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9z
aXRpb25Gb3JBbmNlc3RvcnMobGF5b3V0Qm94KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9uKGxheW91dEJveCk7CisgICAgY29t
cHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb25Gb3JBbmNlc3RvcnMobGF5b3V0Qm94KTsKIAog
ICAgIC8vIElmIHRoZSBpbmxpbmUgZm9ybWF0dGluZyByb290IGlzIGFsc28gdGhlIHJvb3QgZm9y
IHRoZSBmbG9hdHMgKGhhcHBlbnMgd2hlbiB0aGUgcm9vdCBib3ggYWxzbyBlc3RhYmxpc2hlcyBh
IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCkKICAgICAvLyB0aGUgZmxvYXRzIGFyZSBpbiB0aGUg
Y29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhpcyByb290LiBObyBuZWVkIHRvIGZpbmQgdGhlIGZpbmFs
IHZlcnRpY2FsIHBvc2l0aW9uLgotICAgIGF1dG8gaW5saW5lQ29udGV4dEluaGVyaXRzRmxvYXRz
ID0gbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSAmJiAhbGF5
b3V0Qm94LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOworICAgIGF1dG8gaW5s
aW5lQ29udGV4dEluaGVyaXRzRmxvYXRzID0gbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRPbmx5KCk7CiAgICAgaWYgKGlubGluZUNvbnRleHRJbmhlcml0c0Zsb2F0
cykgewogICAgICAgICBjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gp
OwogICAgICAgICBjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbkZvckFuY2VzdG9ycyhs
YXlvdXRCb3gpOwpAQCAtMjk1LDEzICszNDgsMTggQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYK
ICAgICAgICAgbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnNl
dFRvcExlZnQoKmFkanVzdGVkUG9zaXRpb24pOwogfQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QK
K3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxhYmxlV2lkdGgp
IGNvbnN0CiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwot
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgp
OworCisgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aDsKKyAgICBpZiAodXNlZEF2YWlsYWJs
ZVdpZHRoKQorICAgICAgICBhdmFpbGFibGVXaWR0aCA9ICp1c2VkQXZhaWxhYmxlV2lkdGg7Cisg
ICAgZWxzZQorICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRo
KCk7CiAKICAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdp
ZHRoKSAtPiBXaWR0aEFuZE1hcmdpbiB7Ci0gICAgICAgIGF1dG8gdXNlZFZhbHVlcyA9IFVzZWRI
b3Jpem9udGFsVmFsdWVzIHsgY29udGFpbmluZ0Jsb2NrV2lkdGgsIHVzZWRXaWR0aCwgeyB9IH07
CisgICAgICAgIGF1dG8gdXNlZFZhbHVlcyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgYXZhaWxh
YmxlV2lkdGgsIHVzZWRXaWR0aCwgeyB9IH07CiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbkZs
b3coKSkKICAgICAgICAgICAgIHJldHVybiBHZW9tZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJnaW4o
bGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZFZhbHVlcyk7CiAKQEAgLTMxNCwxMyArMzcyLDEz
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNv
bnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogCiAgICAgYXV0byB3aWR0aEFuZE1hcmdpbiA9IGNv
bXB1dGUoeyB9KTsKIAotICAgIGlmIChhdXRvIG1heFdpZHRoID0gR2VvbWV0cnk6OmNvbXB1dGVk
VmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbE1heFdpZHRoKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKSkgeworICAgIGlmIChhdXRvIG1heFdpZHRoID0gR2VvbWV0cnk6OmNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbE1heFdpZHRoKCks
IGF2YWlsYWJsZVdpZHRoKSkgewogICAgICAgICBhdXRvIG1heFdpZHRoQW5kTWFyZ2luID0gY29t
cHV0ZShtYXhXaWR0aCk7CiAgICAgICAgIGlmICh3aWR0aEFuZE1hcmdpbi53aWR0aCA+IG1heFdp
ZHRoQW5kTWFyZ2luLndpZHRoKQogICAgICAgICAgICAgd2lkdGhBbmRNYXJnaW4gPSBtYXhXaWR0
aEFuZE1hcmdpbjsKICAgICB9CiAKLSAgICBhdXRvIG1pbldpZHRoID0gR2VvbWV0cnk6OmNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbE1pbldpZHRoKCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApOworICAgIGF1dG8gbWluV2lkdGggPSBHZW9t
ZXRyeTo6Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWlu
V2lkdGgoKSwgYXZhaWxhYmxlV2lkdGgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBtaW5XaWR0aEFu
ZE1hcmdpbiA9IGNvbXB1dGUobWluV2lkdGgpOwogICAgIGlmICh3aWR0aEFuZE1hcmdpbi53aWR0
aCA8IG1pbldpZHRoQW5kTWFyZ2luLndpZHRoKQogICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IG1p
bldpZHRoQW5kTWFyZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBjYjIxZjlm
MzRlZTZhODUyY2Q4MzNiZDMwZDlhMGU2NDNhMmQ0OWQ1Li41ZTNhZGYzMTY2NDExZmFiYzY4ZmQw
N2ExZThmNGVjMTU0YmFmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNTUs
OSArNTUsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9v
dChGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKICAgICB2b2lkIHBsYWNlSW5G
bG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IEJveCYpIGNvbnN0OwogCi0gICAgdm9pZCBjb21w
dXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlV2lk
dGhBbmRNYXJnaW4oY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEF2YWlsYWJs
ZVdpZHRoID0geyB9KSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JikgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXB1dGVTdGF0aWNIb3Jpem9udGFsUG9zaXRp
b24oY29uc3QgQm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlU3RhdGljVmVydGljYWxQb3Np
dGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKICAgICB2b2lk
IGNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gm
KSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVGbG9hdGluZ1Bvc2l0aW9uKGNvbnN0IEZsb2F0aW5n
Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uVG9B
dm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKQEAg
LTc3LDYgKzc5LDggQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGlu
Rmxvd1dpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgVXNlZEhv
cml6b250YWxWYWx1ZXMpOwogCiAgICAgICAgIHN0YXRpYyBQb2ludCBzdGF0aWNQb3NpdGlvbihj
b25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgTGF5b3V0VW5p
dCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7
CisgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbihjb25z
dCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGludHJp
bnNpY1dpZHRoQ29uc3RyYWludHNOZWVkQ2hpbGRyZW5XaWR0aChjb25zdCBCb3gmKTsKICAgICAg
ICAgc3RhdGljIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJh
aW50cyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwpAQCAtMTMxLDYgKzEzNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94Jiwg
Y29uc3QgRXN0aW1hdGVkTWFyZ2luQmVmb3JlJikgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgbV9lc3RpbWF0
ZWRNYXJnaW5CZWZvcmVMaXN0LnJlbW92ZSgmbGF5b3V0Qm94KTsgfQogICAgIGJvb2wgaGFzRXN0
aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYpIGNvbnN0OworICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IHVzZWRBdmFpbGFibGVXaWR0aEZvckZsb2F0QXZvaWRlcihjb25zdCBGbG9hdGluZ0Nv
bnRleHQmLCBjb25zdCBCb3gmKSBjb25zdDsKICNpZm5kZWYgTkRFQlVHCiAgICAgRXN0aW1hdGVk
TWFyZ2luQmVmb3JlIGVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QgeyByZXR1cm4gbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmVMaXN0LmdldCgmbGF5b3V0Qm94
KTsgfQogICAgIGJvb2wgaGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXgg
YWUxYTIxZWRiOGM1MmQzYjYxYzE1MDgzMzFjYzMwZDg2NjRiZTFhZi4uMTI3YTdmZjU4N2ExNmJi
YjFhNThkNzQ3ZjkzNTRjZjQ3NTMyZGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcApAQCAtMjIyLDI1ICsyMjIsMjkgQEAgV2lkdGhBbmRNYXJnaW4g
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRN
YXJnaW4oY28KICAgICByZXR1cm4geyAqdXNlZFZhbHVlcy53aWR0aCwgbm9uUmVwbGFjZWRXaWR0
aEFuZE1hcmdpbi51c2VkTWFyZ2luLCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLmNvbXB1dGVk
TWFyZ2luIH07CiB9CiAKLVBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpz
dGF0aWNQb3NpdGlvbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KQorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
c3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1My
Mi92aXN1cmVuLmh0bWwjYmxvY2stZm9ybWF0dGluZwogICAgIC8vIEluIGEgYmxvY2sgZm9ybWF0
dGluZyBjb250ZXh0LCBib3hlcyBhcmUgbGFpZCBvdXQgb25lIGFmdGVyIHRoZSBvdGhlciwgdmVy
dGljYWxseSwgYmVnaW5uaW5nIGF0IHRoZSB0b3Agb2YgYSBjb250YWluaW5nIGJsb2NrLgogICAg
IC8vIFRoZSB2ZXJ0aWNhbCBkaXN0YW5jZSBiZXR3ZWVuIHR3byBzaWJsaW5nIGJveGVzIGlzIGRl
dGVybWluZWQgYnkgdGhlICdtYXJnaW4nIHByb3BlcnRpZXMuCiAgICAgLy8gVmVydGljYWwgbWFy
Z2lucyBiZXR3ZWVuIGFkamFjZW50IGJsb2NrLWxldmVsIGJveGVzIGluIGEgYmxvY2sgZm9ybWF0
dGluZyBjb250ZXh0IGNvbGxhcHNlLgotICAgIC8vIEluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250
ZXh0LCBlYWNoIGJveCdzIGxlZnQgb3V0ZXIgZWRnZSB0b3VjaGVzIHRoZSBsZWZ0IGVkZ2Ugb2Yg
dGhlIGNvbnRhaW5pbmcgYmxvY2sgKGZvciByaWdodC10by1sZWZ0IGZvcm1hdHRpbmcsIHJpZ2h0
IGVkZ2VzIHRvdWNoKS4KLQotICAgIExheW91dFVuaXQgdG9wOwotICAgIGF1dG8mIGNvbnRhaW5p
bmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCps
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogICAgIGlmIChhdXRvKiBwcmV2aW91c0luRmxv
d1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKICAgICAgICAg
YXV0byYgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZv
ckxheW91dEJveCgqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKLSAgICAgICAgdG9wID0gcHJldmlv
dXNJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94Lm1h
cmdpbkFmdGVyKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0Rp
c3BsYXlCb3guY29udGVudEJveFRvcCgpOworICAgICAgIHJldHVybiBwcmV2aW91c0luRmxvd0Rp
c3BsYXlCb3guYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIo
KTsKKyAgICB9CisgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFRvcCgpOworfQorCitMYXlv
dXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFs
UG9zaXRpb24oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK3sKKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJlbi5odG1s
I2Jsb2NrLWZvcm1hdHRpbmcKKyAgICAvLyBJbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCwg
ZWFjaCBib3gncyBsZWZ0IG91dGVyIGVkZ2UgdG91Y2hlcyB0aGUgbGVmdCBlZGdlIG9mIHRoZSBj
b250YWluaW5nIGJsb2NrIChmb3IgcmlnaHQtdG8tbGVmdCBmb3JtYXR0aW5nLCByaWdodCBlZGdl
cyB0b3VjaCkuCisgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveExlZnQoKSArIGxheW91dFN0
YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5tYXJnaW5TdGFydCgpOworfQog
Ci0gICAgYXV0byBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5jb250ZW50Qm94TGVm
dCgpICsgbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLm1hcmdp
blN0YXJ0KCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltQb3NpdGlvbl0gLT4gc3RhdGljIC0+IHRvcCgiIDw8IHRvcCA8PCAicHgpIGxl
ZnQoIiA8PCBsZWZ0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwot
ICAgIHJldHVybiB7IGxlZnQsIHRvcCB9OworUG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgcmV0dXJuIHsgc3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpIH07CiB9CiAKIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRWZXJ0aWNhbFZh
bHVlcyB1c2VkVmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRp
bmdTdGF0ZS5jcHAKaW5kZXggYWI4MTAwMjczODc4MWIyZmJlZDIwMDA5YWNkYmEyN2Y0YzIxMzgz
Zi4uNzY1MWVjNjk2YzZkZTI3NjA2YjRkOTkxNjg0MGUzM2M4OWMwYzYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCkBAIC0xMjEsNyArMTIx
LDcgQEAgRmxvYXRpbmdTdGF0ZTo6Q29uc3RyYWludHMgRmxvYXRpbmdTdGF0ZTo6Y29uc3RyYWlu
dHMoUG9zaXRpb25JbkNvbnRleHRSb290IHZlcnQKICAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24g
PSBQb2ludCB7IDAsIHZlcnRpY2FsUG9zaXRpb24gfTsKIAogICAgIGlmIChjb29yZGluYXRlTWFw
cGluZ0lzUmVxdWlyZWQpCi0gICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSBGb3JtYXR0aW5nQ29u
dGV4dDo6bWFwQ29vcmRpbmF0ZVRvQW5jZXN0b3IobV9sYXlvdXRTdGF0ZSwgYWRqdXN0ZWRQb3Np
dGlvbiwgZG93bmNhc3Q8Q29udGFpbmVyPihmb3JtYXR0aW5nQ29udGV4dFJvb3QpLCBkb3duY2Fz
dDxDb250YWluZXI+KHJvb3QoKSkpOworICAgICAgICBhZGp1c3RlZFBvc2l0aW9uID0gRm9ybWF0
dGluZ0NvbnRleHQ6Om1hcFBvaW50VG9BbmNlc3RvcihtX2xheW91dFN0YXRlLCBhZGp1c3RlZFBv
c2l0aW9uLCBkb3duY2FzdDxDb250YWluZXI+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCksIGRvd25j
YXN0PENvbnRhaW5lcj4ocm9vdCgpKSk7CiAKICAgICBDb25zdHJhaW50cyBjb25zdHJhaW50czsK
ICAgICBmb3IgKGludCBpbmRleCA9IG1fZmxvYXRzLnNpemUoKSAtIDE7IGluZGV4ID49IDA7IC0t
aW5kZXgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJsb2NrQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJsb2NrQ29udGFpbmVyLmNwcAppbmRleCA0Y2IyODQ3MmUyYWQwNWRjYzY5MWI0Mjdh
Y2Y2MWQ2Mzc5ODg2NWIxLi44ZjhlY2NhNDYxNmQ3MmZmNzI4ZjAzYWFhOTc3ZDVmODc1OGViOGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCbG9j
a0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0QmxvY2tDb250YWluZXIuY3BwCkBAIC01Myw2ICs1MywxMSBAQCBib29sIEJsb2NrQ29udGFp
bmVyOjplc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQmxvY2tDb250YWluZXI6OmVzdGFibGlzaGVzSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRPbmx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXN0YWJsaXNoZXNJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCgpICYmICFlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCbG9ja0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIuaAppbmRleCA2MTJhOTUxYTYwMmIxNGI0Mzcx
NDQ3ZjQ5Y2NlMzgwNjQ4MWMwYTE5Li5hNzdmNGZjZDhmMjhkNGNjZTg4YjE5NWYzNDY4ODBhNWIz
ZmVjYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRCbG9ja0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJsb2NrQ29udGFpbmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEJs
b2NrQ29udGFpbmVyKE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJiwg
QmFzZVR5cGVGbGFncyA9IEJsb2NrQ29udGFpbmVyRmxhZyk7CiAKICAgICBib29sIGVzdGFibGlz
aGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCBmaW5hbDsKLQorICAgIGJvb2wgZXN0
YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSBjb25zdCBmaW5hbDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmlu
ZGV4IDE1YTExZDkxY2NmODIwZGQ0OTk0MGQxNWRlYjAxZjMzZGEwM2ZhMjIuLjAxMTk4MzE0Yjcx
MWE4YjU1YTg0ZDA5NDhjNWU1ZmJjNDJkMDI4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtMTM0LDYgKzEzNCwxMSBAQCBib29sIEJv
eDo6aGFzRmxvYXRDbGVhcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3R5bGUuY2xlYXIoKSAhPSBD
bGVhcjo6Tm9uZTsKIH0KIAorYm9vbCBCb3g6OmlzRmxvYXRBdm9pZGVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwgaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKTsKK30KKwogY29uc3QgQ29udGFpbmVyKiBCb3g6OmNvbnRhaW5pbmdCbG9j
aygpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGNvbnRhaW5pbmcgYmxvY2sgaW4gd2hpY2ggdGhlIHJv
b3QgZWxlbWVudCBsaXZlcyBpcyBhIHJlY3RhbmdsZSBjYWxsZWQgdGhlIGluaXRpYWwgY29udGFp
bmluZyBibG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmgKaW5kZXggYWQyZDNmODdiOGJiYWZkYzQ0M2JiODM3Njg4N2E1ZDBmYzZkZmJkNy4uNTYwNmUy
MWEzOWQ2YWNmNzM3YmQzMjliODU1OWM5NjgzNTA2NmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7CiAgICAg
Ym9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBlc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0T25seSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlz
SW5GbG93KCkgY29uc3QgeyByZXR1cm4gIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KTsgfQogICAgIGJvb2wgaXNQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNJbkZsb3dQb3Np
dGlvbmVkKCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7IH0KQEAgLTkxLDYgKzkyLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNMZWZ0RmxvYXRpbmdQb3NpdGlvbmVkKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1JpZ2h0RmxvYXRpbmdQb3NpdGlvbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNGbG9h
dENsZWFyKCkgY29uc3Q7CisgICAgYm9vbCBpc0Zsb2F0QXZvaWRlcigpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372190</attachid>
            <date>2019-06-15 05:54:09 -0700</date>
            <delta_ts>2019-06-15 11:47:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198886-20190615055408.patch</filename>
            <type>text/plain</type>
            <size>25588</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ4YzBlYmFjNmJjNjQz
YzU5YzVkY2E3YWI2OTg5YjM5YzM5YjZjOC4uMTc1ZjUxOTBmN2U5NDI3N2JhM2IyOWVmZWZiNDhh
OTY3ZDg3MDRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTA2LTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBGaXggYXZh
aWxhYmxlIHdpZHRoIGZvciBub24tZmxvYXRpbmcgcG9zaXRpb25lZCBmbG9hdCBhdm9pZGVycy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODg4Ngor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTE3NzM2NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm9ybWFsbHkgdGhlIGF2YWlsYWJsZSB3aWR0aCBm
b3IgYW4gaW4tZmxvdyBibG9jayBsZXZlbCBib3ggaXMgdGhlIHdpZHRoIG9mIHRoZSBjb250YWlu
aW5nIGJsb2NrJ3MgY29udGVudCBib3guCisgICAgICAgIEhvd2V2ZXIgYSBub24tZmxvYXRpbmcg
cG9zaXRpb25lZCBmbG9hdCBhdm9pZGVyIGJveCBtaWdodCBiZSBjb25zdHJhaW5lZCBieSBleGlz
dGluZyBmbG9hdHMuCisgICAgICAgIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCB3ZSBwcmUtY29tcHV0
ZShlc3RpbWF0ZSkgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGFuZCBjaGVjayB0aGUgY3VycmVudCBm
bG9hdGluZyBjb250ZXh0IGZvcgorICAgICAgICBsZWZ0IGFuZCByaWdodCBmbG9hdHMuIFRoZXNl
IGZsb2F0cyBjb250cmFpbiB0aGUgYXZhaWxhYmxlIHdpZHRoIGFuZCB0aGlzIGNvbXB1dGVkIHZh
bHVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncworICAg
ICAgICBjb250ZW50IGJveCdzIHdpZHRoIHdoZSBjYWxjdWxhdGluZyB0aGUgdXNlZCB3aWR0aCBm
b3Igd2lkdGg6IGF1dG8uCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjptYXBIb3Jpem9udGFsUG9zaXRpb25Ub0FuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcExl
ZnRUb0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Om1hcFJpZ2h0VG9BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0OjptYXBQb2ludFRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFwQ29vcmRpbmF0ZVRvQW5jZXN0b3IpOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRBdmFpbGFibGVXaWR0
aEZvckZsb2F0QXZvaWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVT
dGF0aWNWZXJ0aWNhbFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVTdGF0aWNQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9u
Rm9yRm9ybWF0dGluZ1Jvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKToKKyAgICAg
ICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpjb25zdHJhaW50cyBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0NvbnRhaW5lcjo6ZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dE9ubHkgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJsb2Nr
Q29udGFpbmVyLmg6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0Zsb2F0QXZvaWRlciBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJveDo6ZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dE9ubHkgY29u
c3QpOgorCiAyMDE5LTA2LTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bTWFyZ2luQ29sbGFwc2luZ10gQ29sbGFwc2VkIHRocm91Z2ggbWFyZ2luIHZh
bHVlcyBwcmVzZXJ2ZSBxdWlyayBzdGF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGExZWM0YTE1YmM2ZTI2NTk0ZDAwNTNjODNiYzE2NWVmYTc0
YTE1ZDYuLjE3MzFkZGJhY2M1NTU3ZGYzMzI2MWVjNjFiOTViM2I1MmMyYzU5ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTY1LDYgKzE2NSwz
MCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dEZXNjZW5kYW50cyhj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGlu
Z0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRW5kOiBsYXlvdXQgb3V0LW9mLWZsb3cgZGVzY2Vu
ZGFudHMgLT4gY29udGV4dDogIiA8PCAmbGF5b3V0U3RhdGUgPDwgIiByb290OiAiIDw8ICZyb290
KCkpOwogfQogCitzdGF0aWMgTGF5b3V0VW5pdCBtYXBIb3Jpem9udGFsUG9zaXRpb25Ub0FuY2Vz
dG9yKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgTGF5b3V0VW5pdCBob3Jpem9udGFs
UG9zaXRpb24sIGNvbnN0IENvbnRhaW5lciYgY29udGFpbmluZ0Jsb2NrLCBjb25zdCBDb250YWlu
ZXImIGFuY2VzdG9yKQoreworICAgIC8vICJob3Jpem9udGFsUG9zaXRpb24iIGlzIGluIHRoZSBj
b29yZGluYXRlIHN5c3RlbSBvZiB0aGUgImNvbnRhaW5pbmdCbG9jayIuIC0+IG1hcCBmcm9tIGNv
bnRhaW5pbmdCbG9jayB0byBhbmNlc3Rvci4KKyAgICBpZiAoJmNvbnRhaW5pbmdCbG9jayA9PSAm
YW5jZXN0b3IpCisgICAgICAgIHJldHVybiBob3Jpem9udGFsUG9zaXRpb247CisgICAgQVNTRVJU
KGNvbnRhaW5pbmdCbG9jay5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpOworICAgIGZvciAoYXV0
byogY29udGFpbmVyID0gJmNvbnRhaW5pbmdCbG9jazsgY29udGFpbmVyICYmIGNvbnRhaW5lciAh
PSAmYW5jZXN0b3I7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpCisg
ICAgICAgIGhvcml6b250YWxQb3NpdGlvbiArPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KCpjb250YWluZXIpLmxlZnQoKTsKKyAgICByZXR1cm4gaG9yaXpvbnRhbFBvc2l0aW9u
OworfQorCisvLyBGSVhNRSB0dXJuIHRoZXNlIGludG8gdGVtcGxhdGVzLgorTGF5b3V0VW5pdCBG
b3JtYXR0aW5nQ29udGV4dDo6bWFwTGVmdFRvQW5jZXN0b3IoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3Rv
cikKK3sKKyAgICBBU1NFUlQobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICByZXR1
cm4gbWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNlc3RvcihsYXlvdXRTdGF0ZSwgbGF5b3V0U3Rh
dGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmxlZnQoKSwgKmxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSwgYW5jZXN0b3IpOworfQorCitMYXlvdXRVbml0IEZvcm1hdHRpbmdD
b250ZXh0OjptYXBSaWdodFRvQW5jZXN0b3IoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
LCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3RvcikKK3sKKyAg
ICBBU1NFUlQobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICByZXR1cm4gbWFwSG9y
aXpvbnRhbFBvc2l0aW9uVG9BbmNlc3RvcihsYXlvdXRTdGF0ZSwgbGF5b3V0U3RhdGUuZGlzcGxh
eUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnJpZ2h0KCksICpsYXlvdXRCb3guY29udGFpbmlu
Z0Jsb2NrKCksIGFuY2VzdG9yKTsKK30KKwogRGlzcGxheTo6Qm94IEZvcm1hdHRpbmdDb250ZXh0
OjptYXBCb3hUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpCiB7CiAgICAgQVNTRVJU
KGxheW91dEJveC5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpOwpAQCAtMTk2LDcgKzIyMCw3IEBA
IExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Om1hcFRvcFRvQW5jZXN0b3IoY29uc3QgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjCiAgICAgcmV0dXJuIHRvcDsKIH0KIAotUG9pbnQgRm9y
bWF0dGluZ0NvbnRleHQ6Om1hcENvb3JkaW5hdGVUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgUG9pbnQgcG9zaXRpb24sIGNvbnN0IENvbnRhaW5lciYgY29udGFpbmlu
Z0Jsb2NrLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKQorUG9pbnQgRm9ybWF0dGluZ0NvbnRl
eHQ6Om1hcFBvaW50VG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIFBv
aW50IHBvc2l0aW9uLCBjb25zdCBDb250YWluZXImIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgQ29u
dGFpbmVyJiBhbmNlc3RvcikKIHsKICAgICBhdXRvIG1hcHBlZFBvc2l0aW9uID0gcG9zaXRpb247
CiAgICAgYXV0byogY29udGFpbmVyID0gJmNvbnRhaW5pbmdCbG9jazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMWMxMzY3MjQxYWJlMjJiMWFjZGJlZjNl
MWQyMDk4Y2QwN2MxNjljMC4uODU3ODExOTk2OTdkZDQ5MWUyZDdlNGNjMTg1NTg3N2NhM2JlNjgy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTYwLDcg
KzYwLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIERpc3BsYXk6OkJveCBtYXBCb3hUb0FuY2Vz
dG9yKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNl
c3Rvcik7CiAgICAgc3RhdGljIExheW91dFVuaXQgbWFwVG9wVG9BbmNlc3Rvcihjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpOwotICAgIHN0
YXRpYyBQb2ludCBtYXBDb29yZGluYXRlVG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYsIFBv
aW50LCBjb25zdCBDb250YWluZXImIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgQ29udGFpbmVyJiBh
bmNlc3Rvcik7CisgICAgc3RhdGljIExheW91dFVuaXQgbWFwTGVmdFRvQW5jZXN0b3IoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKTsKKyAg
ICBzdGF0aWMgTGF5b3V0VW5pdCBtYXBSaWdodFRvQW5jZXN0b3IoY29uc3QgTGF5b3V0U3RhdGUm
LCBjb25zdCBCb3gmLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKTsKKyAgICBzdGF0aWMgUG9p
bnQgbWFwUG9pbnRUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRlJiwgUG9pbnQsIGNvbnN0IENv
bnRhaW5lciYgY29udGFpbmluZ0Jsb2NrLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKTsKIAog
cHJvdGVjdGVkOgogICAgIHVzaW5nIExheW91dFF1ZXVlID0gVmVjdG9yPGNvbnN0IEJveCo+Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNzRlMGJhZGE1YjQwNTZjNmZmOTI0
NjhhZmJjNzg2ODk4YzA2OWNjMi4uMTNkNjM2YzI3ZjhiZmIyZDdmOGU3ZGQ4NWVmNjVmMjdlMDRm
ZmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMTgsMTMgKzExOCw1
MSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCgpIGNvbnN0CiAgICAgTE9H
X1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltFbmRdIC0+
IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgp
IDw8ICIpIik7CiB9CiAKK09wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OnVzZWRBdmFpbGFibGVXaWR0aEZvckZsb2F0QXZvaWRlcihjb25zdCBGbG9hdGluZ0NvbnRl
eHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit7CisgICAg
Ly8gTm9ybWFsbHkgdGhlIGF2YWlsYWJsZSB3aWR0aCBmb3IgYW4gaW4tZmxvdyBibG9jayBsZXZl
bCBib3ggaXMgdGhlIHdpZHRoIG9mIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgY29udGVudCBib3gu
CisgICAgLy8gSG93ZXZlciAoYW5kIHBsZWFzZSB0ZWxsIG1lIHdoZXJlIGl0IGlzIGluIHRoZSBz
cGVjKSBub24tZmxvYXRpbmcgcG9zaXRpb25lZCBmbG9hdCBhdm9pZGVyIGJsb2NrIGxldmVsIGJv
eGVzIGFyZSBjb25zdHJhaW5lZCBieSBleGlzdGluZyBmbG9hdHMuCisgICAgaWYgKCFsYXlvdXRC
b3guaXNGbG9hdEF2b2lkZXIoKSB8fCBsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvJiBmbG9hdGluZ1N0YXRlID0gZmxvYXRpbmdD
b250ZXh0LmZsb2F0aW5nU3RhdGUoKTsKKyAgICBpZiAoZmxvYXRpbmdTdGF0ZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB7IH07CisgICAgLy8gVmVydGljYWwgc3RhdGljIHBvc2l0aW9uIGlz
IG5vdCBjb21wdXRlZCB5ZXQsIHNvIGxldCdzIGp1c3QgZXN0aW1hdGUgaXQgZm9yIG5vdy4KKyAg
ICBhdXRvJiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKTsKKyAg
ICBhdXRvIHZlcnRpY2FsUG9zaXRpb24gPSBGb3JtYXR0aW5nQ29udGV4dDo6bWFwVG9wVG9BbmNl
c3RvcihsYXlvdXRTdGF0ZSgpLCBsYXlvdXRCb3gsIGZvcm1hdHRpbmdSb290KTsKKyAgICBhdXRv
IGNvbnN0cmFpbnRzID0gZmxvYXRpbmdTdGF0ZS5jb25zdHJhaW50cyh7IHZlcnRpY2FsUG9zaXRp
b24gfSwgZm9ybWF0dGluZ1Jvb3QpOworICAgIGlmICghY29uc3RyYWludHMubGVmdCAmJiAhY29u
c3RyYWludHMucmlnaHQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byYgY29udGFpbmlu
Z0Jsb2NrID0gZG93bmNhc3Q8Q29udGFpbmVyPigqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygp
KTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUoKS5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayk7CisgICAgYXV0byBhdmFpbGFi
bGVXaWR0aCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJveFdpZHRoKCk7CisK
KyAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0xlZnQ7CisgICAgTGF5b3V0VW5pdCBjb250
YWluaW5nQmxvY2tSaWdodCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gucmlnaHQoKTsKKyAg
ICBpZiAoJmNvbnRhaW5pbmdCbG9jayAhPSAmZm9ybWF0dGluZ1Jvb3QpIHsKKyAgICAgICAgLy8g
TW92ZSBjb250YWluaW5nIGJsb2NrIGxlZnQvcmlnaHQgdG8gdGhlIHJvb3QncyBjb29yZGluYXRl
IHN5c3RlbS4KKyAgICAgICAgY29udGFpbmluZ0Jsb2NrTGVmdCA9IEZvcm1hdHRpbmdDb250ZXh0
OjptYXBMZWZ0VG9BbmNlc3RvcihsYXlvdXRTdGF0ZSgpLCBjb250YWluaW5nQmxvY2ssIGZvcm1h
dHRpbmdSb290KTsKKyAgICAgICAgY29udGFpbmluZ0Jsb2NrUmlnaHQgPSBGb3JtYXR0aW5nQ29u
dGV4dDo6bWFwUmlnaHRUb0FuY2VzdG9yKGxheW91dFN0YXRlKCksIGNvbnRhaW5pbmdCbG9jaywg
Zm9ybWF0dGluZ1Jvb3QpOworICAgIH0KKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRC
b3hMZWZ0ID0gY29udGFpbmluZ0Jsb2NrTGVmdCArIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gu
Ym9yZGVyTGVmdCgpICsgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZh
bHVlT3IoMCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94UmlnaHQgPSBjb250
YWluaW5nQmxvY2tSaWdodCAtIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guYm9yZGVyUmlnaHQo
KSArIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsK
KworICAgIC8vIFNocmluayB0aGUgYXZhaWxhYmxlIHNwYWNlIGlmIHRoZSBmbG9hdHMgYXJlIGFj
dHVhbGx5IGludHJ1ZGluZyBhdCB0aGlzIHZlcnRpY2FsIHBvc2l0aW9uLgorICAgIGF2YWlsYWJs
ZVdpZHRoIC09IChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjb25zdHJhaW50cy5sZWZ0LnZhbHVl
T3IoUG9zaXRpb25JbkNvbnRleHRSb290IHsgMCB9KSAtIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRC
b3hMZWZ0KQorICAgICAgICArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGNvbnRhaW5pbmdCbG9j
a0NvbnRlbnRCb3hSaWdodCAtIGNvbnN0cmFpbnRzLnJpZ2h0LnZhbHVlT3IoUG9zaXRpb25JbkNv
bnRleHRSb290IHsgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFJpZ2h0IH0pKSk7CisgICAgcmV0
dXJuIGF2YWlsYWJsZVdpZHRoOworfQorCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Omxh
eW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4
dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CisgICAgQVNTRVJUKGxheW91dEJveC5l
c3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIC8vIFN0YXJ0IGxheWluZyBvdXQg
dGhpcyBmb3JtYXR0aW5nIHJvb3QgaW4gdGhlIGZvcm1hdHRpbmcgY29udGVueHQgaXQgbGl2ZXMg
aW4uCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0g
PDwgIltDb21wdXRlXSAtPiBbUG9zaXRpb25dW0JvcmRlcl1bUGFkZGluZ11bV2lkdGhdW01hcmdp
bl0gLT4gZm9yIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICBjb21wdXRl
Qm9yZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gpOwotICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihs
YXlvdXRCb3gpOwotICAgIGNvbXB1dGVTdGF0aWNQb3NpdGlvbihmbG9hdGluZ0NvbnRleHQsIGxh
eW91dEJveCk7CisgICAgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oZmxvYXRpbmdDb250
ZXh0LCBsYXlvdXRCb3gpOworCisgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwg
dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0
Qm94KSk7CisgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gpOwog
ICAgIC8vIFN3aWNoIG92ZXIgdG8gdGhlIG5ldyBmb3JtYXR0aW5nIGNvbnRleHQgKHRoZSBvbmUg
dGhhdCB0aGUgcm9vdCBjcmVhdGVzKS4KICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gbGF5
b3V0U3RhdGUoKS5jcmVhdGVGb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gpOwogICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXQoKTsKQEAgLTE3MiwxNiArMjEwLDI3IEBAIHZvaWQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQm94
JiBsYXlvdXRCb3gpCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIkVuZDogbW92ZSBpbi1mbG93IHBvc2l0aW9uZWQgY2hpbGRyZW4gLT4gcGFy
ZW50OiAiIDw8ICZsYXlvdXRCb3gpOwogfQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29u
dGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4
dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBh
dXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0gICAgbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnNldFRvcExlZnQoR2VvbWV0cnk6OnN0
YXRpY1Bvc2l0aW9uKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBsYXlvdXRTdGF0ZS5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKEdlb21ldHJ5OjpzdGF0aWNW
ZXJ0aWNhbFBvc2l0aW9uKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKICAgICBpZiAobGF5b3V0
Qm94Lmhhc0Zsb2F0Q2xlYXIoKSkKICAgICAgICAgY29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9z
aXRpb25Gb3JGbG9hdENsZWFyKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KTsKICAgICBlbHNl
IGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQogICAgICAgICBj
b21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbkZvckZvcm1hdHRpbmdSb290KGxheW91dEJv
eCk7CiB9CiAKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY0hvcml6
b250YWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK3sKKyAgICBsYXlvdXRT
dGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5zZXRMZWZ0KEdlb21ldHJ5
OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24obGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94KSk7Cit9
CisKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNv
bnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKK3sKKyAgICBjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihmbG9hdGluZ0Nv
bnRleHQsIGxheW91dEJveCk7CisgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihs
YXlvdXRCb3gpOworfQorCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3Rp
bWF0ZWRWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAg
IGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKQEAgLTIyNiwxMyArMjc1
LDE3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZFZlcnRp
Y2FsUG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdChjCiAgICAgQVNTRVJUKGxheW91dEJveC5lc3Rh
Ymxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIEFTU0VSVCghbGF5b3V0Qm94Lmhhc0Zs
b2F0Q2xlYXIoKSk7CiAKLSAgICBhdXRvIGF2b2lkc0Zsb2F0cyA9IGxheW91dEJveC5pc0Zsb2F0
aW5nUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQoKTsKLSAgICBpZiAoYXZvaWRzRmxvYXRzKQorICAgIGlmIChsYXlvdXRCb3guaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSkgewogICAgICAgICBjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3Np
dGlvbkZvckFuY2VzdG9ycyhsYXlvdXRCb3gpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgY29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb24obGF5b3V0Qm94KTsKKyAgICBjb21w
dXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbkZvckFuY2VzdG9ycyhsYXlvdXRCb3gpOwogCiAg
ICAgLy8gSWYgdGhlIGlubGluZSBmb3JtYXR0aW5nIHJvb3QgaXMgYWxzbyB0aGUgcm9vdCBmb3Ig
dGhlIGZsb2F0cyAoaGFwcGVucyB3aGVuIHRoZSByb290IGJveCBhbHNvIGVzdGFibGlzaGVzIGEg
YmxvY2sgZm9ybWF0dGluZyBjb250ZXh0KQogICAgIC8vIHRoZSBmbG9hdHMgYXJlIGluIHRoZSBj
b29yZGluYXRlIHN5c3RlbSBvZiB0aGlzIHJvb3QuIE5vIG5lZWQgdG8gZmluZCB0aGUgZmluYWwg
dmVydGljYWwgcG9zaXRpb24uCi0gICAgYXV0byBpbmxpbmVDb250ZXh0SW5oZXJpdHNGbG9hdHMg
PSBsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpICYmICFsYXlv
dXRCb3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7CisgICAgYXV0byBpbmxp
bmVDb250ZXh0SW5oZXJpdHNGbG9hdHMgPSBsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dE9ubHkoKTsKICAgICBpZiAoaW5saW5lQ29udGV4dEluaGVyaXRzRmxvYXRz
KSB7CiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9uKGxheW91dEJveCk7
CiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9uRm9yQW5jZXN0b3JzKGxh
eW91dEJveCk7CkBAIC0yOTUsMTMgKzM0OCwxOCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3QgRmxvYXRpbmdDb250ZXh0Jgog
ICAgICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0
VG9wTGVmdCgqYWRqdXN0ZWRQb3NpdGlvbik7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAor
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRBdmFpbGFibGVXaWR0aCkg
Y29uc3QKIHsKICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0g
ICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7
CisKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoOworICAgIGlmICh1c2VkQXZhaWxhYmxl
V2lkdGgpCisgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gKnVzZWRBdmFpbGFibGVXaWR0aDsKKyAg
ICBlbHNlCisgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZv
ckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgo
KTsKIAogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lk
dGgpIC0+IFdpZHRoQW5kTWFyZ2luIHsKLSAgICAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhv
cml6b250YWxWYWx1ZXMgeyBjb250YWluaW5nQmxvY2tXaWR0aCwgdXNlZFdpZHRoLCB7IH0gfTsK
KyAgICAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBhdmFpbGFi
bGVXaWR0aCwgdXNlZFdpZHRoLCB7IH0gfTsKICAgICAgICAgaWYgKGxheW91dEJveC5pc0luRmxv
dygpKQogICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5OjppbkZsb3dXaWR0aEFuZE1hcmdpbihs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkVmFsdWVzKTsKIApAQCAtMzE0LDEzICszNzIsMTMg
QEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29u
c3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAKICAgICBhdXRvIHdpZHRoQW5kTWFyZ2luID0gY29t
cHV0ZSh7IH0pOwogCi0gICAgaWYgKGF1dG8gbWF4V2lkdGggPSBHZW9tZXRyeTo6Y29tcHV0ZWRW
YWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpKSB7CisgICAgaWYgKGF1dG8gbWF4V2lkdGggPSBHZW9tZXRyeTo6Y29t
cHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKSwg
YXZhaWxhYmxlV2lkdGgpKSB7CiAgICAgICAgIGF1dG8gbWF4V2lkdGhBbmRNYXJnaW4gPSBjb21w
dXRlKG1heFdpZHRoKTsKICAgICAgICAgaWYgKHdpZHRoQW5kTWFyZ2luLndpZHRoID4gbWF4V2lk
dGhBbmRNYXJnaW4ud2lkdGgpCiAgICAgICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IG1heFdpZHRo
QW5kTWFyZ2luOwogICAgIH0KIAotICAgIGF1dG8gbWluV2lkdGggPSBHZW9tZXRyeTo6Y29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKSwgY29u
dGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBtaW5XaWR0aCA9IEdlb21l
dHJ5Ojpjb21wdXRlZFZhbHVlSWZOb3RBdXRvKGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5X
aWR0aCgpLCBhdmFpbGFibGVXaWR0aCkudmFsdWVPcigwKTsKICAgICBhdXRvIG1pbldpZHRoQW5k
TWFyZ2luID0gY29tcHV0ZShtaW5XaWR0aCk7CiAgICAgaWYgKHdpZHRoQW5kTWFyZ2luLndpZHRo
IDwgbWluV2lkdGhBbmRNYXJnaW4ud2lkdGgpCiAgICAgICAgIHdpZHRoQW5kTWFyZ2luID0gbWlu
V2lkdGhBbmRNYXJnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGNiMjFmOWYz
NGVlNmE4NTJjZDgzM2JkMzBkOWEwZTY0M2EyZDQ5ZDUuLjVlM2FkZjMxNjY0MTFmYWJjNjhmZDA3
YTFlOGY0ZWMxNTRiYWYwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC01NSw5
ICs1NSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290
KEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VJbkZs
b3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQm94JikgY29uc3Q7CiAKLSAgICB2b2lkIGNvbXB1
dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVXaWR0
aEFuZE1hcmdpbihjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxhYmxl
V2lkdGggPSB7IH0pIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25z
dCBCb3gmKSBjb25zdDsKIAorICAgIHZvaWQgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlv
bihjb25zdCBCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZvaWQg
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYp
IGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdD
b250ZXh0JiwgY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25Ub0F2
b2lkRmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwpAQCAt
NzcsNiArNzksOCBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5G
bG93V2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBVc2VkSG9y
aXpvbnRhbFZhbHVlcyk7CiAKICAgICAgICAgc3RhdGljIFBvaW50IHN0YXRpY1Bvc2l0aW9uKGNv
bnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0
IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsK
KyAgICAgICAgc3RhdGljIExheW91dFVuaXQgc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaW50cmlu
c2ljV2lkdGhDb25zdHJhaW50c05lZWRDaGlsZHJlbldpZHRoKGNvbnN0IEJveCYpOwogICAgICAg
ICBzdGF0aWMgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CkBAIC0xMzEsNiArMTM1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldEVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmLCBj
b25zdCBFc3RpbWF0ZWRNYXJnaW5CZWZvcmUmKSBjb25zdDsKICAgICB2b2lkIHJlbW92ZUVzdGlt
YXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyBtX2VzdGltYXRl
ZE1hcmdpbkJlZm9yZUxpc3QucmVtb3ZlKCZsYXlvdXRCb3gpOyB9CiAgICAgYm9vbCBoYXNFc3Rp
bWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JikgY29uc3Q7CisgICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gdXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogI2lmbmRlZiBOREVCVUcKICAgICBFc3RpbWF0ZWRN
YXJnaW5CZWZvcmUgZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBj
b25zdCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3QuZ2V0KCZsYXlvdXRCb3gp
OyB9CiAgICAgYm9vbCBoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBh
ZTFhMjFlZGI4YzUyZDNiNjFjMTUwODMzMWNjMzBkODY2NGJlMWFmLi41ZDBjZDc1NGE5YTQzYjNl
Y2JiM2JhYTIxZWQzODNlN2MzNTg0ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCkBAIC0yMjIsMjUgKzIyMiwyOSBAQCBXaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihjbwogICAgIHJldHVybiB7ICp1c2VkVmFsdWVzLndpZHRoLCBub25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luLnVzZWRNYXJnaW4sIG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4uY29tcHV0ZWRN
YXJnaW4gfTsKIH0KIAotUG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0
YXRpY1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCitMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpz
dGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIy
L3Zpc3VyZW4uaHRtbCNibG9jay1mb3JtYXR0aW5nCiAgICAgLy8gSW4gYSBibG9jayBmb3JtYXR0
aW5nIGNvbnRleHQsIGJveGVzIGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIgdGhlIG90aGVyLCB2ZXJ0
aWNhbGx5LCBiZWdpbm5pbmcgYXQgdGhlIHRvcCBvZiBhIGNvbnRhaW5pbmcgYmxvY2suCiAgICAg
Ly8gVGhlIHZlcnRpY2FsIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNpYmxpbmcgYm94ZXMgaXMgZGV0
ZXJtaW5lZCBieSB0aGUgJ21hcmdpbicgcHJvcGVydGllcy4KICAgICAvLyBWZXJ0aWNhbCBtYXJn
aW5zIGJldHdlZW4gYWRqYWNlbnQgYmxvY2stbGV2ZWwgYm94ZXMgaW4gYSBibG9jayBmb3JtYXR0
aW5nIGNvbnRleHQgY29sbGFwc2UuCi0gICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRl
eHQsIGVhY2ggYm94J3MgbGVmdCBvdXRlciBlZGdlIHRvdWNoZXMgdGhlIGxlZnQgZWRnZSBvZiB0
aGUgY29udGFpbmluZyBibG9jayAoZm9yIHJpZ2h0LXRvLWxlZnQgZm9ybWF0dGluZywgcmlnaHQg
ZWRnZXMgdG91Y2gpLgotCi0gICAgTGF5b3V0VW5pdCB0b3A7Ci0gICAgYXV0byYgY29udGFpbmlu
Z0Jsb2NrRGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CiAgICAgaWYgKGF1dG8qIHByZXZpb3VzSW5GbG93
U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewogICAgICAgICBh
dXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcpOwotICAgICAgICB0b3AgPSBwcmV2aW91
c0luRmxvd0Rpc3BsYXlCb3guYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFy
Z2luQWZ0ZXIoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrRGlz
cGxheUJveC5jb250ZW50Qm94VG9wKCk7CisgICAgICAgIHJldHVybiBwcmV2aW91c0luRmxvd0Rp
c3BsYXlCb3guYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIo
KTsKKyAgICB9CisgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFRvcCgpOworfQorCitMYXlv
dXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFs
UG9zaXRpb24oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK3sKKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJlbi5odG1s
I2Jsb2NrLWZvcm1hdHRpbmcKKyAgICAvLyBJbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCwg
ZWFjaCBib3gncyBsZWZ0IG91dGVyIGVkZ2UgdG91Y2hlcyB0aGUgbGVmdCBlZGdlIG9mIHRoZSBj
b250YWluaW5nIGJsb2NrIChmb3IgcmlnaHQtdG8tbGVmdCBmb3JtYXR0aW5nLCByaWdodCBlZGdl
cyB0b3VjaCkuCisgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveExlZnQoKSArIGxheW91dFN0
YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5tYXJnaW5TdGFydCgpOworfQog
Ci0gICAgYXV0byBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5jb250ZW50Qm94TGVm
dCgpICsgbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLm1hcmdp
blN0YXJ0KCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltQb3NpdGlvbl0gLT4gc3RhdGljIC0+IHRvcCgiIDw8IHRvcCA8PCAicHgpIGxl
ZnQoIiA8PCBsZWZ0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwot
ICAgIHJldHVybiB7IGxlZnQsIHRvcCB9OworUG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgcmV0dXJuIHsgc3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpIH07CiB9CiAKIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRWZXJ0aWNhbFZh
bHVlcyB1c2VkVmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRp
bmdTdGF0ZS5jcHAKaW5kZXggYWI4MTAwMjczODc4MWIyZmJlZDIwMDA5YWNkYmEyN2Y0YzIxMzgz
Zi4uNzY1MWVjNjk2YzZkZTI3NjA2YjRkOTkxNjg0MGUzM2M4OWMwYzYxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCkBAIC0xMjEsNyArMTIx
LDcgQEAgRmxvYXRpbmdTdGF0ZTo6Q29uc3RyYWludHMgRmxvYXRpbmdTdGF0ZTo6Y29uc3RyYWlu
dHMoUG9zaXRpb25JbkNvbnRleHRSb290IHZlcnQKICAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24g
PSBQb2ludCB7IDAsIHZlcnRpY2FsUG9zaXRpb24gfTsKIAogICAgIGlmIChjb29yZGluYXRlTWFw
cGluZ0lzUmVxdWlyZWQpCi0gICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSBGb3JtYXR0aW5nQ29u
dGV4dDo6bWFwQ29vcmRpbmF0ZVRvQW5jZXN0b3IobV9sYXlvdXRTdGF0ZSwgYWRqdXN0ZWRQb3Np
dGlvbiwgZG93bmNhc3Q8Q29udGFpbmVyPihmb3JtYXR0aW5nQ29udGV4dFJvb3QpLCBkb3duY2Fz
dDxDb250YWluZXI+KHJvb3QoKSkpOworICAgICAgICBhZGp1c3RlZFBvc2l0aW9uID0gRm9ybWF0
dGluZ0NvbnRleHQ6Om1hcFBvaW50VG9BbmNlc3RvcihtX2xheW91dFN0YXRlLCBhZGp1c3RlZFBv
c2l0aW9uLCBkb3duY2FzdDxDb250YWluZXI+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCksIGRvd25j
YXN0PENvbnRhaW5lcj4ocm9vdCgpKSk7CiAKICAgICBDb25zdHJhaW50cyBjb25zdHJhaW50czsK
ICAgICBmb3IgKGludCBpbmRleCA9IG1fZmxvYXRzLnNpemUoKSAtIDE7IGluZGV4ID49IDA7IC0t
aW5kZXgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJsb2NrQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJsb2NrQ29udGFpbmVyLmNwcAppbmRleCA0Y2IyODQ3MmUyYWQwNWRjYzY5MWI0Mjdh
Y2Y2MWQ2Mzc5ODg2NWIxLi44ZjhlY2NhNDYxNmQ3MmZmNzI4ZjAzYWFhOTc3ZDVmODc1OGViOGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCbG9j
a0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0QmxvY2tDb250YWluZXIuY3BwCkBAIC01Myw2ICs1MywxMSBAQCBib29sIEJsb2NrQ29udGFp
bmVyOjplc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQmxvY2tDb250YWluZXI6OmVzdGFibGlzaGVzSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRPbmx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXN0YWJsaXNoZXNJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCgpICYmICFlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCbG9ja0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIuaAppbmRleCA2MTJhOTUxYTYwMmIxNGI0Mzcx
NDQ3ZjQ5Y2NlMzgwNjQ4MWMwYTE5Li5hNzdmNGZjZDhmMjhkNGNjZTg4YjE5NWYzNDY4ODBhNWIz
ZmVjYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRCbG9ja0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJsb2NrQ29udGFpbmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEJs
b2NrQ29udGFpbmVyKE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJiwg
QmFzZVR5cGVGbGFncyA9IEJsb2NrQ29udGFpbmVyRmxhZyk7CiAKICAgICBib29sIGVzdGFibGlz
aGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCBmaW5hbDsKLQorICAgIGJvb2wgZXN0
YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSBjb25zdCBmaW5hbDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmlu
ZGV4IDE1YTExZDkxY2NmODIwZGQ0OTk0MGQxNWRlYjAxZjMzZGEwM2ZhMjIuLjAxMTk4MzE0Yjcx
MWE4YjU1YTg0ZDA5NDhjNWU1ZmJjNDJkMDI4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtMTM0LDYgKzEzNCwxMSBAQCBib29sIEJv
eDo6aGFzRmxvYXRDbGVhcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3R5bGUuY2xlYXIoKSAhPSBD
bGVhcjo6Tm9uZTsKIH0KIAorYm9vbCBCb3g6OmlzRmxvYXRBdm9pZGVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwgaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKTsKK30KKwogY29uc3QgQ29udGFpbmVyKiBCb3g6OmNvbnRhaW5pbmdCbG9j
aygpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGNvbnRhaW5pbmcgYmxvY2sgaW4gd2hpY2ggdGhlIHJv
b3QgZWxlbWVudCBsaXZlcyBpcyBhIHJlY3RhbmdsZSBjYWxsZWQgdGhlIGluaXRpYWwgY29udGFp
bmluZyBibG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmgKaW5kZXggYWQyZDNmODdiOGJiYWZkYzQ0M2JiODM3Njg4N2E1ZDBmYzZkZmJkNy4uNTYwNmUy
MWEzOWQ2YWNmNzM3YmQzMjliODU1OWM5NjgzNTA2NmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7CiAgICAg
Ym9vbCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBlc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0T25seSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlz
SW5GbG93KCkgY29uc3QgeyByZXR1cm4gIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KTsgfQogICAgIGJvb2wgaXNQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNJbkZsb3dQb3Np
dGlvbmVkKCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7IH0KQEAgLTkxLDYgKzkyLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNMZWZ0RmxvYXRpbmdQb3NpdGlvbmVkKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1JpZ2h0RmxvYXRpbmdQb3NpdGlvbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNGbG9h
dENsZWFyKCkgY29uc3Q7CisgICAgYm9vbCBpc0Zsb2F0QXZvaWRlcigpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372196</attachid>
            <date>2019-06-15 11:47:25 -0700</date>
            <delta_ts>2019-06-15 12:30:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198886-20190615114725.patch</filename>
            <type>text/plain</type>
            <size>25585</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ4YzBlYmFjNmJjNjQz
YzU5YzVkY2E3YWI2OTg5YjM5YzM5YjZjOC4uYWQ5OGFiN2MwNTRjYWE1MThlZGU0Yjk0MjE2YzA0
ZTZlOWQxOGQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTA2LTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bQkZDXSBGaXggYXZh
aWxhYmxlIHdpZHRoIGZvciBub24tZmxvYXRpbmcgcG9zaXRpb25lZCBmbG9hdCBhdm9pZGVycy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODg4Ngor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTE3NzM2NDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTm9ybWFsbHkgdGhlIGF2YWlsYWJsZSB3aWR0aCBm
b3IgYW4gaW4tZmxvdyBibG9jayBsZXZlbCBib3ggaXMgdGhlIHdpZHRoIG9mIHRoZSBjb250YWlu
aW5nIGJsb2NrJ3MgY29udGVudCBib3guCisgICAgICAgIEhvd2V2ZXIgYSBub24tZmxvYXRpbmcg
cG9zaXRpb25lZCBmbG9hdCBhdm9pZGVyIGJveCBtaWdodCBiZSBjb25zdHJhaW5lZCBieSBleGlz
dGluZyBmbG9hdHMuCisgICAgICAgIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCB3ZSBwcmUtY29tcHV0
ZShlc3RpbWF0ZSkgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGFuZCBjaGVjayB0aGUgY3VycmVudCBm
bG9hdGluZyBjb250ZXh0IGZvcgorICAgICAgICBsZWZ0IGFuZCByaWdodCBmbG9hdHMuIFRoZXNl
IGZsb2F0cyBjb250cmFpbiB0aGUgYXZhaWxhYmxlIHdpZHRoIGFuZCB0aGlzIGNvbXB1dGVkIHZh
bHVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncworICAg
ICAgICBjb250ZW50IGJveCdzIHdpZHRoIHdoZSBjYWxjdWxhdGluZyB0aGUgdXNlZCB3aWR0aCBm
b3Igd2lkdGg6IGF1dG8uCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjptYXBIb3Jpem9udGFsUG9zaXRpb25Ub0FuY2Vz
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcExl
ZnRUb0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Om1hcFJpZ2h0VG9BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0OjptYXBQb2ludFRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFwQ29vcmRpbmF0ZVRvQW5jZXN0b3IpOiBEZWxldGVk
LgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRBdmFpbGFibGVXaWR0
aEZvckZsb2F0QXZvaWRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVT
dGF0aWNWZXJ0aWNhbFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVTdGF0aWNQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9u
Rm9yRm9ybWF0dGluZ1Jvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKToKKyAgICAg
ICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpjb25zdHJhaW50cyBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0NvbnRhaW5lcjo6ZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dE9ubHkgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJsb2Nr
Q29udGFpbmVyLmg6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojppc0Zsb2F0QXZvaWRlciBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJveDo6ZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dE9ubHkgY29u
c3QpOgorCiAyMDE5LTA2LTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bTWFyZ2luQ29sbGFwc2luZ10gQ29sbGFwc2VkIHRocm91Z2ggbWFyZ2luIHZh
bHVlcyBwcmVzZXJ2ZSBxdWlyayBzdGF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGExZWM0YTE1YmM2ZTI2NTk0ZDAwNTNjODNiYzE2NWVmYTc0
YTE1ZDYuLjk0NTNmY2JhYmY1NDhlNDJlZDk2YTBiZWQ4YTk2OTFjMGY4OGFhNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTY1LDYgKzE2NSwz
MCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dEZXNjZW5kYW50cyhj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGlu
Z0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRW5kOiBsYXlvdXQgb3V0LW9mLWZsb3cgZGVzY2Vu
ZGFudHMgLT4gY29udGV4dDogIiA8PCAmbGF5b3V0U3RhdGUgPDwgIiByb290OiAiIDw8ICZyb290
KCkpOwogfQogCitzdGF0aWMgTGF5b3V0VW5pdCBtYXBIb3Jpem9udGFsUG9zaXRpb25Ub0FuY2Vz
dG9yKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgTGF5b3V0VW5pdCBob3Jpem9udGFs
UG9zaXRpb24sIGNvbnN0IENvbnRhaW5lciYgY29udGFpbmluZ0Jsb2NrLCBjb25zdCBDb250YWlu
ZXImIGFuY2VzdG9yKQoreworICAgIC8vICJob3Jpem9udGFsUG9zaXRpb24iIGlzIGluIHRoZSBj
b29yZGluYXRlIHN5c3RlbSBvZiB0aGUgImNvbnRhaW5pbmdCbG9jayIuIC0+IG1hcCBmcm9tIGNv
bnRhaW5pbmdCbG9jayB0byBhbmNlc3Rvci4KKyAgICBpZiAoJmNvbnRhaW5pbmdCbG9jayA9PSAm
YW5jZXN0b3IpCisgICAgICAgIHJldHVybiBob3Jpem9udGFsUG9zaXRpb247CisgICAgQVNTRVJU
KGNvbnRhaW5pbmdCbG9jay5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpOworICAgIGZvciAoYXV0
byogY29udGFpbmVyID0gJmNvbnRhaW5pbmdCbG9jazsgY29udGFpbmVyICYmIGNvbnRhaW5lciAh
PSAmYW5jZXN0b3I7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpCisg
ICAgICAgIGhvcml6b250YWxQb3NpdGlvbiArPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KCpjb250YWluZXIpLmxlZnQoKTsKKyAgICByZXR1cm4gaG9yaXpvbnRhbFBvc2l0aW9u
OworfQorCisvLyBGSVhNRTogdHVybiB0aGVzZSBpbnRvIHRlbXBsYXRlcy4KK0xheW91dFVuaXQg
Rm9ybWF0dGluZ0NvbnRleHQ6Om1hcExlZnRUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0
b3IpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgcmV0
dXJuIG1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IobGF5b3V0U3RhdGUsIGxheW91dFN0
YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5sZWZ0KCksICpsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCksIGFuY2VzdG9yKTsKK30KKworTGF5b3V0VW5pdCBGb3JtYXR0aW5n
Q29udGV4dDo6bWFwUmlnaHRUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpCit7Cisg
ICAgQVNTRVJUKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgcmV0dXJuIG1hcEhv
cml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IobGF5b3V0U3RhdGUsIGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5yaWdodCgpLCAqbGF5b3V0Qm94LmNvbnRhaW5p
bmdCbG9jaygpLCBhbmNlc3Rvcik7Cit9CisKIERpc3BsYXk6OkJveCBGb3JtYXR0aW5nQ29udGV4
dDo6bWFwQm94VG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKQogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNEZXNjZW5kYW50T2YoYW5jZXN0b3IpKTsKQEAgLTE5Niw3ICsyMjAsNyBA
QCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBUb3BUb0FuY2VzdG9yKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYwogICAgIHJldHVybiB0b3A7CiB9CiAKLVBvaW50IEZv
cm1hdHRpbmdDb250ZXh0OjptYXBDb29yZGluYXRlVG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUsIFBvaW50IHBvc2l0aW9uLCBjb25zdCBDb250YWluZXImIGNvbnRhaW5p
bmdCbG9jaywgY29uc3QgQ29udGFpbmVyJiBhbmNlc3RvcikKK1BvaW50IEZvcm1hdHRpbmdDb250
ZXh0OjptYXBQb2ludFRvQW5jZXN0b3IoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBQ
b2ludCBwb3NpdGlvbiwgY29uc3QgQ29udGFpbmVyJiBjb250YWluaW5nQmxvY2ssIGNvbnN0IENv
bnRhaW5lciYgYW5jZXN0b3IpCiB7CiAgICAgYXV0byBtYXBwZWRQb3NpdGlvbiA9IHBvc2l0aW9u
OwogICAgIGF1dG8qIGNvbnRhaW5lciA9ICZjb250YWluaW5nQmxvY2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDFjMTM2NzI0MWFiZTIyYjFhY2RiZWYz
ZTFkMjA5OGNkMDdjMTY5YzAuLjg1NzgxMTk5Njk3ZGQ0OTFlMmQ3ZTRjYzE4NTU4NzdjYTNiZTY4
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02MCw3
ICs2MCw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEaXNwbGF5OjpCb3ggbWFwQm94VG9BbmNl
c3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIGNvbnN0IENvbnRhaW5lciYgYW5j
ZXN0b3IpOwogICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcFRvcFRvQW5jZXN0b3IoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKTsKLSAgICBz
dGF0aWMgUG9pbnQgbWFwQ29vcmRpbmF0ZVRvQW5jZXN0b3IoY29uc3QgTGF5b3V0U3RhdGUmLCBQ
b2ludCwgY29uc3QgQ29udGFpbmVyJiBjb250YWluaW5nQmxvY2ssIGNvbnN0IENvbnRhaW5lciYg
YW5jZXN0b3IpOworICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcExlZnRUb0FuY2VzdG9yKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3Rvcik7Cisg
ICAgc3RhdGljIExheW91dFVuaXQgbWFwUmlnaHRUb0FuY2VzdG9yKGNvbnN0IExheW91dFN0YXRl
JiwgY29uc3QgQm94JiwgY29uc3QgQ29udGFpbmVyJiBhbmNlc3Rvcik7CisgICAgc3RhdGljIFBv
aW50IG1hcFBvaW50VG9BbmNlc3Rvcihjb25zdCBMYXlvdXRTdGF0ZSYsIFBvaW50LCBjb25zdCBD
b250YWluZXImIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgQ29udGFpbmVyJiBhbmNlc3Rvcik7CiAK
IHByb3RlY3RlZDoKICAgICB1c2luZyBMYXlvdXRRdWV1ZSA9IFZlY3Rvcjxjb25zdCBCb3gqPjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDc0ZTBiYWRhNWI0MDU2YzZmZjky
NDY4YWZiYzc4Njg5OGMwNjljYzIuLmVjMDk2OTdiOTczMTE4N2VmYWViNmI1MzJhMmMwMzljNjY3
NzA5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTE4LDEzICsxMTgs
NTEgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoKSBjb25zdAogICAgIExP
R19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbRW5kXSAt
PiBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3Qo
KSA8PCAiKSIpOwogfQogCitPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdDb250
ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAoreworICAg
IC8vIE5vcm1hbGx5IHRoZSBhdmFpbGFibGUgd2lkdGggZm9yIGFuIGluLWZsb3cgYmxvY2sgbGV2
ZWwgYm94IGlzIHRoZSB3aWR0aCBvZiB0aGUgY29udGFpbmluZyBibG9jaydzIGNvbnRlbnQgYm94
LgorICAgIC8vIEhvd2V2ZXIgKGFuZCBjYW4ndCBmaW5kIGl0IGFueXdoZXJlIGluIHRoZSBzcGVj
KSBub24tZmxvYXRpbmcgcG9zaXRpb25lZCBmbG9hdCBhdm9pZGVyIGJsb2NrIGxldmVsIGJveGVz
IGFyZSBjb25zdHJhaW5lZCBieSBleGlzdGluZyBmbG9hdHMuCisgICAgaWYgKCFsYXlvdXRCb3gu
aXNGbG9hdEF2b2lkZXIoKSB8fCBsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvJiBmbG9hdGluZ1N0YXRlID0gZmxvYXRpbmdDb250
ZXh0LmZsb2F0aW5nU3RhdGUoKTsKKyAgICBpZiAoZmxvYXRpbmdTdGF0ZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB7IH07CisgICAgLy8gVmVydGljYWwgc3RhdGljIHBvc2l0aW9uIGlzIG5v
dCBjb21wdXRlZCB5ZXQsIHNvIGxldCdzIGp1c3QgZXN0aW1hdGUgaXQgZm9yIG5vdy4KKyAgICBh
dXRvJiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKTsKKyAgICBh
dXRvIHZlcnRpY2FsUG9zaXRpb24gPSBGb3JtYXR0aW5nQ29udGV4dDo6bWFwVG9wVG9BbmNlc3Rv
cihsYXlvdXRTdGF0ZSgpLCBsYXlvdXRCb3gsIGZvcm1hdHRpbmdSb290KTsKKyAgICBhdXRvIGNv
bnN0cmFpbnRzID0gZmxvYXRpbmdTdGF0ZS5jb25zdHJhaW50cyh7IHZlcnRpY2FsUG9zaXRpb24g
fSwgZm9ybWF0dGluZ1Jvb3QpOworICAgIGlmICghY29uc3RyYWludHMubGVmdCAmJiAhY29uc3Ry
YWludHMucmlnaHQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byYgY29udGFpbmluZ0Js
b2NrID0gZG93bmNhc3Q8Q29udGFpbmVyPigqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsK
KyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUoKS5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayk7CisgICAgYXV0byBhdmFpbGFibGVX
aWR0aCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJveFdpZHRoKCk7CisKKyAg
ICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0xlZnQ7CisgICAgTGF5b3V0VW5pdCBjb250YWlu
aW5nQmxvY2tSaWdodCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gucmlnaHQoKTsKKyAgICBp
ZiAoJmNvbnRhaW5pbmdCbG9jayAhPSAmZm9ybWF0dGluZ1Jvb3QpIHsKKyAgICAgICAgLy8gTW92
ZSBjb250YWluaW5nIGJsb2NrIGxlZnQvcmlnaHQgdG8gdGhlIHJvb3QncyBjb29yZGluYXRlIHN5
c3RlbS4KKyAgICAgICAgY29udGFpbmluZ0Jsb2NrTGVmdCA9IEZvcm1hdHRpbmdDb250ZXh0Ojpt
YXBMZWZ0VG9BbmNlc3RvcihsYXlvdXRTdGF0ZSgpLCBjb250YWluaW5nQmxvY2ssIGZvcm1hdHRp
bmdSb290KTsKKyAgICAgICAgY29udGFpbmluZ0Jsb2NrUmlnaHQgPSBGb3JtYXR0aW5nQ29udGV4
dDo6bWFwUmlnaHRUb0FuY2VzdG9yKGxheW91dFN0YXRlKCksIGNvbnRhaW5pbmdCbG9jaywgZm9y
bWF0dGluZ1Jvb3QpOworICAgIH0KKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hM
ZWZ0ID0gY29udGFpbmluZ0Jsb2NrTGVmdCArIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guYm9y
ZGVyTGVmdCgpICsgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5wYWRkaW5nTGVmdCgpLnZhbHVl
T3IoMCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94UmlnaHQgPSBjb250YWlu
aW5nQmxvY2tSaWdodCAtIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guYm9yZGVyUmlnaHQoKSAr
IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKKwor
ICAgIC8vIFNocmluayB0aGUgYXZhaWxhYmxlIHNwYWNlIGlmIHRoZSBmbG9hdHMgYXJlIGFjdHVh
bGx5IGludHJ1ZGluZyBhdCB0aGlzIHZlcnRpY2FsIHBvc2l0aW9uLgorICAgIGF2YWlsYWJsZVdp
ZHRoIC09IChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjb25zdHJhaW50cy5sZWZ0LnZhbHVlT3Io
UG9zaXRpb25JbkNvbnRleHRSb290IHsgMCB9KSAtIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3hM
ZWZ0KQorICAgICAgICArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGNvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRCb3hSaWdodCAtIGNvbnN0cmFpbnRzLnJpZ2h0LnZhbHVlT3IoUG9zaXRpb25JbkNvbnRl
eHRSb290IHsgY29udGFpbmluZ0Jsb2NrQ29udGVudEJveFJpZ2h0IH0pKSk7CisgICAgcmV0dXJu
IGF2YWlsYWJsZVdpZHRoOworfQorCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dEZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwg
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CisgICAgQVNTRVJUKGxheW91dEJveC5lc3Rh
Ymxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIC8vIFN0YXJ0IGxheWluZyBvdXQgdGhp
cyBmb3JtYXR0aW5nIHJvb3QgaW4gdGhlIGZvcm1hdHRpbmcgY29udGVueHQgaXQgbGl2ZXMgaW4u
CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IltDb21wdXRlXSAtPiBbUG9zaXRpb25dW0JvcmRlcl1bUGFkZGluZ11bV2lkdGhdW01hcmdpbl0g
LT4gZm9yIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICBjb21wdXRlQm9y
ZGVyQW5kUGFkZGluZyhsYXlvdXRCb3gpOwotICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihsYXlv
dXRCb3gpOwotICAgIGNvbXB1dGVTdGF0aWNQb3NpdGlvbihmbG9hdGluZ0NvbnRleHQsIGxheW91
dEJveCk7CisgICAgY29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oZmxvYXRpbmdDb250ZXh0
LCBsYXlvdXRCb3gpOworCisgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgdXNl
ZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94
KSk7CisgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gpOwogICAg
IC8vIFN3aWNoIG92ZXIgdG8gdGhlIG5ldyBmb3JtYXR0aW5nIGNvbnRleHQgKHRoZSBvbmUgdGhh
dCB0aGUgcm9vdCBjcmVhdGVzKS4KICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gbGF5b3V0
U3RhdGUoKS5jcmVhdGVGb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gpOwogICAgIGZvcm1hdHRp
bmdDb250ZXh0LT5sYXlvdXQoKTsKQEAgLTE3MiwxNiArMjEwLDI3IEBAIHZvaWQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQm94JiBs
YXlvdXRCb3gpCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIkVuZDogbW92ZSBpbi1mbG93IHBvc2l0aW9uZWQgY2hpbGRyZW4gLT4gcGFyZW50
OiAiIDw8ICZsYXlvdXRCb3gpOwogfQogCi12b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVTdGF0aWNQb3NpdGlvbihjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4
dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYg
ZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBhdXRv
JiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0gICAgbGF5b3V0U3RhdGUuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLnNldFRvcExlZnQoR2VvbWV0cnk6OnN0YXRp
Y1Bvc2l0aW9uKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKKyAgICBsYXlvdXRTdGF0ZS5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9wKEdlb21ldHJ5OjpzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpKTsKICAgICBpZiAobGF5b3V0Qm94
Lmhhc0Zsb2F0Q2xlYXIoKSkKICAgICAgICAgY29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRp
b25Gb3JGbG9hdENsZWFyKGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KTsKICAgICBlbHNlIGlm
IChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQogICAgICAgICBjb21w
dXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbkZvckZvcm1hdHRpbmdSb290KGxheW91dEJveCk7
CiB9CiAKK3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY0hvcml6b250
YWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK3sKKyAgICBsYXlvdXRTdGF0
ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5zZXRMZWZ0KEdlb21ldHJ5Ojpz
dGF0aWNIb3Jpem9udGFsUG9zaXRpb24obGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94KSk7Cit9CisK
K3ZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0
IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKK3sKKyAgICBjb21wdXRlU3RhdGljVmVydGljYWxQb3NpdGlvbihmbG9hdGluZ0NvbnRl
eHQsIGxheW91dEJveCk7CisgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlv
dXRCb3gpOworfQorCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0
ZWRWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIGF1
dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKQEAgLTIyNiwxMyArMjc1LDE3
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZFZlcnRpY2Fs
UG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdChjCiAgICAgQVNTRVJUKGxheW91dEJveC5lc3RhYmxp
c2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIEFTU0VSVCghbGF5b3V0Qm94Lmhhc0Zsb2F0
Q2xlYXIoKSk7CiAKLSAgICBhdXRvIGF2b2lkc0Zsb2F0cyA9IGxheW91dEJveC5pc0Zsb2F0aW5n
UG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKTsKLSAgICBpZiAoYXZvaWRzRmxvYXRzKQorICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSkgewogICAgICAgICBjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlv
bkZvckFuY2VzdG9ycyhsYXlvdXRCb3gpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb24obGF5b3V0Qm94KTsKKyAgICBjb21wdXRl
RXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbkZvckFuY2VzdG9ycyhsYXlvdXRCb3gpOwogCiAgICAg
Ly8gSWYgdGhlIGlubGluZSBmb3JtYXR0aW5nIHJvb3QgaXMgYWxzbyB0aGUgcm9vdCBmb3IgdGhl
IGZsb2F0cyAoaGFwcGVucyB3aGVuIHRoZSByb290IGJveCBhbHNvIGVzdGFibGlzaGVzIGEgYmxv
Y2sgZm9ybWF0dGluZyBjb250ZXh0KQogICAgIC8vIHRoZSBmbG9hdHMgYXJlIGluIHRoZSBjb29y
ZGluYXRlIHN5c3RlbSBvZiB0aGlzIHJvb3QuIE5vIG5lZWQgdG8gZmluZCB0aGUgZmluYWwgdmVy
dGljYWwgcG9zaXRpb24uCi0gICAgYXV0byBpbmxpbmVDb250ZXh0SW5oZXJpdHNGbG9hdHMgPSBs
YXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpICYmICFsYXlvdXRC
b3guZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7CisgICAgYXV0byBpbmxpbmVD
b250ZXh0SW5oZXJpdHNGbG9hdHMgPSBsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dE9ubHkoKTsKICAgICBpZiAoaW5saW5lQ29udGV4dEluaGVyaXRzRmxvYXRzKSB7
CiAgICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9uKGxheW91dEJveCk7CiAg
ICAgICAgIGNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9uRm9yQW5jZXN0b3JzKGxheW91
dEJveCk7CkBAIC0yOTUsMTMgKzM0OCwxOCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVQb3NpdGlvblRvQXZvaWRGbG9hdHMoY29uc3QgRmxvYXRpbmdDb250ZXh0JgogICAg
ICAgICBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuc2V0VG9w
TGVmdCgqYWRqdXN0ZWRQb3NpdGlvbik7CiB9CiAKLXZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAordm9p
ZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94
JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRBdmFpbGFibGVXaWR0aCkgY29u
c3QKIHsKICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0gICAg
YXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7CisK
KyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoOworICAgIGlmICh1c2VkQXZhaWxhYmxlV2lk
dGgpCisgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gKnVzZWRBdmFpbGFibGVXaWR0aDsKKyAgICBl
bHNlCisgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsK
IAogICAgIGF1dG8gY29tcHV0ZSA9IFsmXShPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgp
IC0+IFdpZHRoQW5kTWFyZ2luIHsKLSAgICAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6
b250YWxWYWx1ZXMgeyBjb250YWluaW5nQmxvY2tXaWR0aCwgdXNlZFdpZHRoLCB7IH0gfTsKKyAg
ICAgICAgYXV0byB1c2VkVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBhdmFpbGFibGVX
aWR0aCwgdXNlZFdpZHRoLCB7IH0gfTsKICAgICAgICAgaWYgKGxheW91dEJveC5pc0luRmxvdygp
KQogICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5OjppbkZsb3dXaWR0aEFuZE1hcmdpbihsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkVmFsdWVzKTsKIApAQCAtMzE0LDEzICszNzIsMTMgQEAg
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiAKICAgICBhdXRvIHdpZHRoQW5kTWFyZ2luID0gY29tcHV0
ZSh7IH0pOwogCi0gICAgaWYgKGF1dG8gbWF4V2lkdGggPSBHZW9tZXRyeTo6Y29tcHV0ZWRWYWx1
ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpKSB7CisgICAgaWYgKGF1dG8gbWF4V2lkdGggPSBHZW9tZXRyeTo6Y29tcHV0
ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKSwgYXZh
aWxhYmxlV2lkdGgpKSB7CiAgICAgICAgIGF1dG8gbWF4V2lkdGhBbmRNYXJnaW4gPSBjb21wdXRl
KG1heFdpZHRoKTsKICAgICAgICAgaWYgKHdpZHRoQW5kTWFyZ2luLndpZHRoID4gbWF4V2lkdGhB
bmRNYXJnaW4ud2lkdGgpCiAgICAgICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IG1heFdpZHRoQW5k
TWFyZ2luOwogICAgIH0KIAotICAgIGF1dG8gbWluV2lkdGggPSBHZW9tZXRyeTo6Y29tcHV0ZWRW
YWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBtaW5XaWR0aCA9IEdlb21ldHJ5
Ojpjb21wdXRlZFZhbHVlSWZOb3RBdXRvKGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5XaWR0
aCgpLCBhdmFpbGFibGVXaWR0aCkudmFsdWVPcigwKTsKICAgICBhdXRvIG1pbldpZHRoQW5kTWFy
Z2luID0gY29tcHV0ZShtaW5XaWR0aCk7CiAgICAgaWYgKHdpZHRoQW5kTWFyZ2luLndpZHRoIDwg
bWluV2lkdGhBbmRNYXJnaW4ud2lkdGgpCiAgICAgICAgIHdpZHRoQW5kTWFyZ2luID0gbWluV2lk
dGhBbmRNYXJnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGNiMjFmOWYzNGVl
NmE4NTJjZDgzM2JkMzBkOWEwZTY0M2EyZDQ5ZDUuLjVlM2FkZjMxNjY0MTFmYWJjNjhmZDA3YTFl
OGY0ZWMxNTRiYWYwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC01NSw5ICs1
NSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRSb290KEZs
b2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VJbkZsb3dQ
b3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQm94JikgY29uc3Q7CiAKLSAgICB2b2lkIGNvbXB1dGVX
aWR0aEFuZE1hcmdpbihjb25zdCBCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVXaWR0aEFu
ZE1hcmdpbihjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkQXZhaWxhYmxlV2lk
dGggPSB7IH0pIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBC
b3gmKSBjb25zdDsKIAorICAgIHZvaWQgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlvbihj
b25zdCBCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
KGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZvaWQgY29t
cHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNv
bnN0OwogICAgIHZvaWQgY29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250
ZXh0JiwgY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25Ub0F2b2lk
RmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwpAQCAtNzcs
NiArNzksOCBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93
V2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBVc2VkSG9yaXpv
bnRhbFZhbHVlcyk7CiAKICAgICAgICAgc3RhdGljIFBvaW50IHN0YXRpY1Bvc2l0aW9uKGNvbnN0
IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IHN0
YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKKyAg
ICAgICAgc3RhdGljIExheW91dFVuaXQgc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaW50cmluc2lj
V2lkdGhDb25zdHJhaW50c05lZWRDaGlsZHJlbldpZHRoKGNvbnN0IEJveCYpOwogICAgICAgICBz
dGF0aWMgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CkBAIC0xMzEsNiArMTM1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmLCBjb25z
dCBFc3RpbWF0ZWRNYXJnaW5CZWZvcmUmKSBjb25zdDsKICAgICB2b2lkIHJlbW92ZUVzdGltYXRl
ZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyBtX2VzdGltYXRlZE1h
cmdpbkJlZm9yZUxpc3QucmVtb3ZlKCZsYXlvdXRCb3gpOyB9CiAgICAgYm9vbCBoYXNFc3RpbWF0
ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JikgY29uc3Q7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGNvbnN0IEZsb2F0aW5nQ29udGV4
dCYsIGNvbnN0IEJveCYpIGNvbnN0OwogI2lmbmRlZiBOREVCVUcKICAgICBFc3RpbWF0ZWRNYXJn
aW5CZWZvcmUgZXN0aW1hdGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dCB7IHJldHVybiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3QuZ2V0KCZsYXlvdXRCb3gpOyB9
CiAgICAgYm9vbCBoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBhZTFh
MjFlZGI4YzUyZDNiNjFjMTUwODMzMWNjMzBkODY2NGJlMWFmLi41ZDBjZDc1NGE5YTQzYjNlY2Ji
M2JhYTIxZWQzODNlN2MzNTg0ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCkBAIC0yMjIsMjUgKzIyMiwyOSBAQCBXaWR0aEFuZE1hcmdpbiBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdp
bihjbwogICAgIHJldHVybiB7ICp1c2VkVmFsdWVzLndpZHRoLCBub25SZXBsYWNlZFdpZHRoQW5k
TWFyZ2luLnVzZWRNYXJnaW4sIG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4uY29tcHV0ZWRNYXJn
aW4gfTsKIH0KIAotUG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRp
Y1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCitMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0
aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCiB7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3Zp
c3VyZW4uaHRtbCNibG9jay1mb3JtYXR0aW5nCiAgICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5n
IGNvbnRleHQsIGJveGVzIGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIgdGhlIG90aGVyLCB2ZXJ0aWNh
bGx5LCBiZWdpbm5pbmcgYXQgdGhlIHRvcCBvZiBhIGNvbnRhaW5pbmcgYmxvY2suCiAgICAgLy8g
VGhlIHZlcnRpY2FsIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNpYmxpbmcgYm94ZXMgaXMgZGV0ZXJt
aW5lZCBieSB0aGUgJ21hcmdpbicgcHJvcGVydGllcy4KICAgICAvLyBWZXJ0aWNhbCBtYXJnaW5z
IGJldHdlZW4gYWRqYWNlbnQgYmxvY2stbGV2ZWwgYm94ZXMgaW4gYSBibG9jayBmb3JtYXR0aW5n
IGNvbnRleHQgY29sbGFwc2UuCi0gICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQs
IGVhY2ggYm94J3MgbGVmdCBvdXRlciBlZGdlIHRvdWNoZXMgdGhlIGxlZnQgZWRnZSBvZiB0aGUg
Y29udGFpbmluZyBibG9jayAoZm9yIHJpZ2h0LXRvLWxlZnQgZm9ybWF0dGluZywgcmlnaHQgZWRn
ZXMgdG91Y2gpLgotCi0gICAgTGF5b3V0VW5pdCB0b3A7Ci0gICAgYXV0byYgY29udGFpbmluZ0Js
b2NrRGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91
dEJveC5jb250YWluaW5nQmxvY2soKSk7CiAgICAgaWYgKGF1dG8qIHByZXZpb3VzSW5GbG93U2li
bGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewogICAgICAgICBhdXRv
JiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcpOwotICAgICAgICB0b3AgPSBwcmV2aW91c0lu
Rmxvd0Rpc3BsYXlCb3guYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2lu
QWZ0ZXIoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrRGlzcGxh
eUJveC5jb250ZW50Qm94VG9wKCk7CisgICAgICAgIHJldHVybiBwcmV2aW91c0luRmxvd0Rpc3Bs
YXlCb3guYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQWZ0ZXIoKTsK
KyAgICB9CisgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveFRvcCgpOworfQorCitMYXlvdXRV
bml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9z
aXRpb24oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJv
eCkKK3sKKyAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJlbi5odG1sI2Js
b2NrLWZvcm1hdHRpbmcKKyAgICAvLyBJbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCwgZWFj
aCBib3gncyBsZWZ0IG91dGVyIGVkZ2UgdG91Y2hlcyB0aGUgbGVmdCBlZGdlIG9mIHRoZSBjb250
YWluaW5nIGJsb2NrIChmb3IgcmlnaHQtdG8tbGVmdCBmb3JtYXR0aW5nLCByaWdodCBlZGdlcyB0
b3VjaCkuCisgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJveExlZnQoKSArIGxheW91dFN0YXRl
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5tYXJnaW5TdGFydCgpOworfQogCi0g
ICAgYXV0byBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5jb250ZW50Qm94TGVmdCgp
ICsgbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLm1hcmdpblN0
YXJ0KCk7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltQb3NpdGlvbl0gLT4gc3RhdGljIC0+IHRvcCgiIDw8IHRvcCA8PCAicHgpIGxlZnQo
IiA8PCBsZWZ0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAg
IHJldHVybiB7IGxlZnQsIHRvcCB9OworUG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OnN0YXRpY1Bvc2l0aW9uKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgcmV0dXJuIHsgc3RhdGljSG9yaXpvbnRhbFBvc2l0
aW9uKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpIH07CiB9CiAKIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRWZXJ0aWNhbFZhbHVl
cyB1c2VkVmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdT
dGF0ZS5jcHAKaW5kZXggYWI4MTAwMjczODc4MWIyZmJlZDIwMDA5YWNkYmEyN2Y0YzIxMzgzZi4u
NzY1MWVjNjk2YzZkZTI3NjA2YjRkOTkxNjg0MGUzM2M4OWMwYzYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCkBAIC0xMjEsNyArMTIxLDcg
QEAgRmxvYXRpbmdTdGF0ZTo6Q29uc3RyYWludHMgRmxvYXRpbmdTdGF0ZTo6Y29uc3RyYWludHMo
UG9zaXRpb25JbkNvbnRleHRSb290IHZlcnQKICAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBQ
b2ludCB7IDAsIHZlcnRpY2FsUG9zaXRpb24gfTsKIAogICAgIGlmIChjb29yZGluYXRlTWFwcGlu
Z0lzUmVxdWlyZWQpCi0gICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSBGb3JtYXR0aW5nQ29udGV4
dDo6bWFwQ29vcmRpbmF0ZVRvQW5jZXN0b3IobV9sYXlvdXRTdGF0ZSwgYWRqdXN0ZWRQb3NpdGlv
biwgZG93bmNhc3Q8Q29udGFpbmVyPihmb3JtYXR0aW5nQ29udGV4dFJvb3QpLCBkb3duY2FzdDxD
b250YWluZXI+KHJvb3QoKSkpOworICAgICAgICBhZGp1c3RlZFBvc2l0aW9uID0gRm9ybWF0dGlu
Z0NvbnRleHQ6Om1hcFBvaW50VG9BbmNlc3RvcihtX2xheW91dFN0YXRlLCBhZGp1c3RlZFBvc2l0
aW9uLCBkb3duY2FzdDxDb250YWluZXI+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCksIGRvd25jYXN0
PENvbnRhaW5lcj4ocm9vdCgpKSk7CiAKICAgICBDb25zdHJhaW50cyBjb25zdHJhaW50czsKICAg
ICBmb3IgKGludCBpbmRleCA9IG1fZmxvYXRzLnNpemUoKSAtIDE7IGluZGV4ID49IDA7IC0taW5k
ZXgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dEJsb2NrQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJsb2NrQ29udGFpbmVyLmNwcAppbmRleCA0Y2IyODQ3MmUyYWQwNWRjYzY5MWI0MjdhY2Y2
MWQ2Mzc5ODg2NWIxLi44ZjhlY2NhNDYxNmQ3MmZmNzI4ZjAzYWFhOTc3ZDVmODc1OGViOGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCbG9ja0Nv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
QmxvY2tDb250YWluZXIuY3BwCkBAIC01Myw2ICs1MywxMSBAQCBib29sIEJsb2NrQ29udGFpbmVy
Ojplc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK2Jvb2wgQmxvY2tDb250YWluZXI6OmVzdGFibGlzaGVzSW5saW5lRm9ybWF0
dGluZ0NvbnRleHRPbmx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXN0YWJsaXNoZXNJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCgpICYmICFlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQo
KTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCbG9ja0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIuaAppbmRleCA2MTJhOTUxYTYwMmIxNGI0MzcxNDQ3
ZjQ5Y2NlMzgwNjQ4MWMwYTE5Li5hNzdmNGZjZDhmMjhkNGNjZTg4YjE5NWYzNDY4ODBhNWIzZmVj
YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
bG9ja0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJsb2NrQ29udGFpbmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIEJsb2Nr
Q29udGFpbmVyKE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJiwgQmFz
ZVR5cGVGbGFncyA9IEJsb2NrQ29udGFpbmVyRmxhZyk7CiAKICAgICBib29sIGVzdGFibGlzaGVz
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCBmaW5hbDsKLQorICAgIGJvb2wgZXN0YWJs
aXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSBjb25zdCBmaW5hbDsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4
IDE1YTExZDkxY2NmODIwZGQ0OTk0MGQxNWRlYjAxZjMzZGEwM2ZhMjIuLjAxMTk4MzE0YjcxMWE4
YjU1YTg0ZDA5NDhjNWU1ZmJjNDJkMDI4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtMTM0LDYgKzEzNCwxMSBAQCBib29sIEJveDo6
aGFzRmxvYXRDbGVhcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3R5bGUuY2xlYXIoKSAhPSBDbGVh
cjo6Tm9uZTsKIH0KIAorYm9vbCBCb3g6OmlzRmxvYXRBdm9pZGVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwgaXNGbG9hdGluZ1Bv
c2l0aW9uZWQoKTsKK30KKwogY29uc3QgQ29udGFpbmVyKiBCb3g6OmNvbnRhaW5pbmdCbG9jaygp
IGNvbnN0CiB7CiAgICAgLy8gVGhlIGNvbnRhaW5pbmcgYmxvY2sgaW4gd2hpY2ggdGhlIHJvb3Qg
ZWxlbWVudCBsaXZlcyBpcyBhIHJlY3RhbmdsZSBjYWxsZWQgdGhlIGluaXRpYWwgY29udGFpbmlu
ZyBibG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgK
aW5kZXggYWQyZDNmODdiOGJiYWZkYzQ0M2JiODM3Njg4N2E1ZDBmYzZkZmJkNy4uNTYwNmUyMWEz
OWQ2YWNmNzM3YmQzMjliODU1OWM5NjgzNTA2NmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAg
IGJvb2wgZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7CiAgICAgYm9v
bCBlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBlc3RhYmxpc2hlc0lubGluZUZvcm1hdHRp
bmdDb250ZXh0T25seSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzSW5G
bG93KCkgY29uc3QgeyByZXR1cm4gIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKTsg
fQogICAgIGJvb2wgaXNQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNJbkZsb3dQb3NpdGlv
bmVkKCkgfHwgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7IH0KQEAgLTkxLDYgKzkyLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNMZWZ0RmxvYXRpbmdQb3NpdGlvbmVkKCkgY29uc3Q7CiAgICAgYm9v
bCBpc1JpZ2h0RmxvYXRpbmdQb3NpdGlvbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNGbG9hdENs
ZWFyKCkgY29uc3Q7CisgICAgYm9vbCBpc0Zsb2F0QXZvaWRlcigpIGNvbnN0OwogCiAgICAgYm9v
bCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>