<?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>191144</bug_id>
          
          <creation_ts>2018-10-31 21:54:24 -0700</creation_ts>
          <short_desc>[LFC][IFC] Add support for intrinsic width calculation</short_desc>
          <delta_ts>2018-11-02 07:24:23 -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>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>1474025</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-31 21:54:24 -0700</bug_when>
    <thetext>ssia (needed by inline-block and float)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474399</commentid>
    <comment_count>1</comment_count>
      <attachid>353680</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-11-01 21:53:32 -0700</bug_when>
    <thetext>Created attachment 353680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474400</commentid>
    <comment_count>2</comment_count>
      <attachid>353681</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-11-01 21:55:16 -0700</bug_when>
    <thetext>Created attachment 353681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474478</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-11-02 07:24:01 -0700</bug_when>
    <thetext>Committed r237731: &lt;https://trac.webkit.org/changeset/237731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474479</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-02 07:24:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/45761459&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353680</attachid>
            <date>2018-11-01 21:53:32 -0700</date>
            <delta_ts>2018-11-01 21:55:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>16672</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NjRkOTczZjM4YS4uYTVhYzg1ZjcxNjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0xMS0wMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtM
RkNdW0lGQ10gQWRkIHN1cHBvcnQgZm9yIGludHJpbnNpYyB3aWR0aCBjYWxjdWxhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2lubGlu
ZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2su
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMTgtMTEtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBM
b2NhdGlvbiBvYmplY3Qgc2FucyBicm93c2luZyBjb250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDQ4Y2M5OWU1ZThlLi4yMzZlYmVlODI1NiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMxMTQsNiArMzEx
NCw3IEBAIGZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXQxLmh0bWwgWyBGYWlsdXJl
IF0KIGZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXRzMi5odG1sIFsgRmFpbHVyZSBd
CiBmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZsb2F0czMuaHRtbCBbIEZhaWx1cmUgXQog
ZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1ibG9jay5odG1sIFsgRmFpbHVyZSBdCitmYXN0L2lu
bGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2suaHRtbCBbIEZhaWx1cmUgXQog
CiAjIERhdGFsaXN0CiB3ZWJraXQub3JnL2IvMTg2NzE0IGZhc3QvZm9ybXMvZGF0YWxpc3QvZGF0
YWxpc3QtdGV4dGlucHV0LWtleWRvd24uaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEwZWQ2
ZmVjNzY4Li43YzVjMzE5ODcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTEx
LTAxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZD
XSBBZGQgc3VwcG9ydCBmb3IgaW50cmluc2ljIHdpZHRoIGNhbGN1bGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExNDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBpbmxpbmUg
Zm9ybWF0dGluZyB2ZXJzaW9uIG9mIHRoZSBzaHJpbmstdG8tZml0IGNvbXB1dGF0aW9uLiBJdCBn
ZW5lcmF0ZXMgaW5saW5lIHJ1bnMKKyAgICAgICAgYW5kIHVzZXMgSW5saW5lTGluZUJyZWFrZXIg
dG8gY29tcHV0ZSBtaW4vbWF4IHdpZHRoLiBUaGlzIGlzIHZlcnkgc2ltaWxhciB0byA6OmxheW91
dC4KKworICAgICAgICBUZXN0OiBmYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxp
bmUtYmxvY2suaHRtbAorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlSGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlV2lkdGhBbmRIZWlnaHRGb3JSZXBsYWNlZElubGluZUJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29u
dGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRIZWln
aHRGb3JJbmxpbmVCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisKIDIwMTgtMTEtMDEgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Omluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGxvZ2ljIHNob3VsZCBs
b29rIHNpbWlsYXIgdG8gOjpsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAppbmRleCAwMDRmMGQxY2NhZC4uMjIxMjA3MWQyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKQEAgLTYwLDQzICs2MCwyMiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXQoKSBjb25zdAogCiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRl
ID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUoKSk7CiAg
ICAgSW5saW5lUnVuUHJvdmlkZXIgaW5saW5lUnVuUHJvdmlkZXIoaW5saW5lRm9ybWF0dGluZ1N0
YXRlKTsKLSAgICBhdXRvJiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4ocm9v
dCgpKTsKLSAgICBhdXRvKiBsYXlvdXRCb3ggPSBmb3JtYXR0aW5nUm9vdC5maXJzdEluRmxvd09y
RmxvYXRpbmdDaGlsZCgpOwotICAgIC8vIENhc3VhbGx5IHdhbGsgdGhyb3VnaCB0aGUgYmxvY2sn
cyBkZXNjZW5kYW50cyBhbmQgcGxhY2UgdGhlIGlubGluZSBib3hlcyBvbmUgYWZ0ZXIgdGhlIG90
aGVyIGFzIG11Y2ggYXMgd2UgY2FuICh5ZWFoLCBJIGFtIGxvb2tpbmcgYXQgeW91IGZsb2F0cyku
Ci0gICAgd2hpbGUgKGxheW91dEJveCkgewogCi0gICAgICAgIGlmIChsYXlvdXRCb3gtPmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICAgICAgbGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRSb290KCpsYXlvdXRCb3gpOwotICAgICAgICAgICAgLy8gRm9ybWF0dGluZyBjb250
ZXh0IHJvb3RzIHRha2UgY2FyZSBvZiB0aGVpciBlbnRpcmUgc3VidHJlZS4gQ29udGludWUgd2l0
aCBuZXh0IHNpYmxpbmcuCi0gICAgICAgICAgICBpbmxpbmVSdW5Qcm92aWRlci5hcHBlbmQoKmxh
eW91dEJveCk7Ci0gICAgICAgICAgICBsYXlvdXRCb3ggPSBsYXlvdXRCb3gtPm5leHRJbkZsb3dP
ckZsb2F0aW5nU2libGluZygpOworICAgIGNvbGxlY3RJbmxpbmVDb250ZW50KGlubGluZVJ1blBy
b3ZpZGVyKTsKKyAgICAvLyBDb21wdXRlIHdpZHRoL2hlaWdodCBmb3Igbm9uLXRleHQgY29udGVu
dC4KKyAgICBmb3IgKGF1dG8mIGlubGluZVJ1biA6IGlubGluZVJ1blByb3ZpZGVyLnJ1bnMoKSkg
eworICAgICAgICBpZiAoaW5saW5lUnVuLmlzVGV4dCgpKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIH0KIAotICAgICAgICBpZiAoaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoaXM8SW5saW5lQ29udGFpbmVyPihsYXlvdXRCb3gpKTsKLSAgICAg
ICAgICAgIGxheW91dEJveCA9IGRvd25jYXN0PENvbnRhaW5lcj4oKmxheW91dEJveCkuZmlyc3RJ
bkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKKyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5l
UnVuLmlubGluZUl0ZW0oKS5sYXlvdXRCb3goKTsKKyAgICAgICAgaWYgKGxheW91dEJveC5lc3Rh
Ymxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIGxheW91dEZvcm1hdHRp
bmdDb250ZXh0Um9vdChsYXlvdXRCb3gpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KLQotICAgICAgICBpbmxpbmVSdW5Qcm92aWRlci5hcHBlbmQoKmxheW91dEJveCk7Ci0gICAg
ICAgIGNvbXB1dGVXaWR0aEFuZEhlaWdodEZvcklubGluZUJveCgqbGF5b3V0Qm94KTsKLQotICAg
ICAgICBmb3IgKDsgbGF5b3V0Qm94OyBsYXlvdXRCb3ggPSBsYXlvdXRCb3gtPnBhcmVudCgpKSB7
Ci0gICAgICAgICAgICBpZiAobGF5b3V0Qm94ID09ICZmb3JtYXR0aW5nUm9vdCkgewotICAgICAg
ICAgICAgICAgIGxheW91dEJveCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRC
b3gtPm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgbGF5
b3V0Qm94ID0gbmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKCFsYXlvdXRCb3ggfHwgbGF5b3V0Qm94LT5p
c0Rlc2NlbmRhbnRPZihmb3JtYXR0aW5nUm9vdCkpOworICAgICAgICBjb21wdXRlV2lkdGhBbmRI
ZWlnaHRGb3JSZXBsYWNlZElubGluZUJveChsYXlvdXRCb3gpOwogICAgIH0KIAogICAgIGxheW91
dElubGluZUNvbnRlbnQoaW5saW5lUnVuUHJvdmlkZXIpOwotCiAgICAgTE9HX1dJVEhfU1RSRUFN
KEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltFbmRdIC0+IGlubGluZSBmb3Jt
YXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwgJnJvb3QoKSA8PCAiKSIpOwog
fQogCkBAIC0yMDQsODEgKzE4Myw2OSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojps
YXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IElubGluZVJ1blByb3ZpZGVyJiBpbmxpbgogICAgIGxp
bmUuY2xvc2UoTGluZTo6TGFzdExpbmU6Olllcyk7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1h
cmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBhdXRvJiBsYXlvdXRTdGF0
ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CiAKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRp
bmdQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSk7Ci0gICAgYXV0
byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0
Qm94KTsKLQotICAgIGF1dG8gY29tcHV0ZVdpZHRoQW5kTWFyZ2luID0gWyZdKCkgewotICAgICAg
ICBXaWR0aEFuZE1hcmdpbiB3aWR0aEFuZE1hcmdpbjsKKyAgICBXaWR0aEFuZE1hcmdpbiB3aWR0
aEFuZE1hcmdpbjsKKyAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisg
ICAgICAgIHdpZHRoQW5kTWFyZ2luID0gR2VvbWV0cnk6OmZsb2F0aW5nV2lkdGhBbmRNYXJnaW4o
bGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5l
QmxvY2tCb3goKSkKKyAgICAgICAgd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5saW5lQmxv
Y2tXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBlbHNlIGlmIChs
YXlvdXRCb3gucmVwbGFjZWQoKSkKKyAgICAgICAgd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6
aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAg
ICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgICAgIGlmIChsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIHdpZHRoQW5kTWFyZ2lu
ID0gR2VvbWV0cnk6OmZsb2F0aW5nV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJv
eCk7Ci0gICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCi0gICAg
ICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IEdlb21ldHJ5OjppbmxpbmVCbG9ja1dpZHRoQW5kTWFy
Z2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGRpc3BsYXlCb3guc2V0Q29u
dGVudEJveFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKKyAgICBkaXNwbGF5Qm94LnNldEhv
cml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4ubWFyZ2luKTsKKyAgICBkaXNwbGF5Qm94LnNl
dEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbih3aWR0aEFuZE1hcmdpbi5ub25Db21wdXRlZE1h
cmdpbik7Cit9CiAKLSAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgod2lkdGhB
bmRNYXJnaW4ud2lkdGgpOwotICAgICAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4o
d2lkdGhBbmRNYXJnaW4ubWFyZ2luKTsKLSAgICAgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFs
Tm9uQ29tcHV0ZWRNYXJnaW4od2lkdGhBbmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4pOwotICAg
IH07Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAoreworICAgIGF1dG8mIGxheW91dFN0YXRlID0g
dGhpcy0+bGF5b3V0U3RhdGUoKTsKIAotICAgIGF1dG8gY29tcHV0ZUhlaWdodEFuZE1hcmdpbiA9
IFsmXSgpIHsKLSAgICAgICAgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbjsKKyAgICBI
ZWlnaHRBbmRNYXJnaW4gaGVpZ2h0QW5kTWFyZ2luOworICAgIGlmIChsYXlvdXRCb3guaXNGbG9h
dGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0gR2VvbWV0cnk6OmZs
b2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGVsc2Ug
aWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCisgICAgICAgIGhlaWdodEFuZE1hcmdp
biA9IEdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94KTsKKyAgICBlbHNlIGlmIChsYXlvdXRCb3gucmVwbGFjZWQoKSkKKyAgICAgICAgaGVp
Z2h0QW5kTWFyZ2luID0gR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAKLSAgICAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQot
ICAgICAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0gR2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0QW5k
TWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICBlbHNlIGlmIChsYXlvdXRC
b3guaXNJbmxpbmVCbG9ja0JveCgpKQotICAgICAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0gR2Vv
bWV0cnk6OmlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBh
dXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlv
dXRCb3gpOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChoZWlnaHRBbmRNYXJn
aW4uaGVpZ2h0KTsKKyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFyZ2lu
KGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOworICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJn
aW4oaGVpZ2h0QW5kTWFyZ2luLmNvbGxhcHNlZE1hcmdpbi52YWx1ZV9vcihoZWlnaHRBbmRNYXJn
aW4ubWFyZ2luKSk7Cit9CiAKLSAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0
KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwotICAgICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2Fs
Tm9uQ29sbGFwc2VkTWFyZ2luKGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOwotICAgICAgICBkaXNw
bGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKGhlaWdodEFuZE1hcmdpbi5jb2xsYXBzZWRNYXJnaW4u
dmFsdWVfb3IoaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbikpOwotICAgIH07Cit2b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBs
YXlvdXRCb3gpIGNvbnN0Cit7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRp
b25lZCgpIHx8IGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpOwogCi0gICAgbGF5b3V0U3Rh
dGUuY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChsYXlvdXRC
b3gpOworICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKKyAgICBh
dXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5jcmVhdGVGb3JtYXR0aW5nU3RhdGVG
b3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGxheW91dEJveCk7CiAgICAgY29tcHV0ZUJvcmRlckFu
ZFBhZGRpbmcobGF5b3V0Qm94KTsKLSAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4oKTsKLQorICAg
IGNvbXB1dGVXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gpOwogICAgIC8vIFN3aWNoIG92ZXIgdG8g
dGhlIG5ldyBmb3JtYXR0aW5nIGNvbnRleHQgKHRoZSBvbmUgdGhhdCB0aGUgcm9vdCBjcmVhdGVz
KS4KLSAgICBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRCb3gp
LmZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCktPmxheW91dCgpOwotCisgICAgZm9ybWF0dGlu
Z1N0YXRlLmZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCktPmxheW91dCgpOwogICAgIC8vIENv
bWUgYmFjayBhbmQgZmluYWxpemUgdGhlIHJvb3QncyBoZWlnaHQgYW5kIG1hcmdpbi4KLSAgICBj
b21wdXRlSGVpZ2h0QW5kTWFyZ2luKCk7CisgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihsYXlv
dXRCb3gpOwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhB
bmRIZWlnaHRGb3JJbmxpbmVCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRIZWlnaHRGb3JSZXBsYWNlZElu
bGluZUJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWxheW91
dEJveC5pc0NvbnRhaW5lcigpKTsKICAgICBBU1NFUlQoIWxheW91dEJveC5lc3RhYmxpc2hlc0Zv
cm1hdHRpbmdDb250ZXh0KCkpOwotCi0gICAgaWYgKGlzPElubGluZUJveD4obGF5b3V0Qm94KSAm
JiBkb3duY2FzdDxJbmxpbmVCb3g+KGxheW91dEJveCkuaGFzVGV4dENvbnRlbnQoKSkgewotICAg
ICAgICAvLyBUZXh0IGNvbnRlbnQgd2lkdGggaXMgY29tcHV0ZWQgZHVyaW5nIHRleHQgcnVuIGdl
bmVyYXRpb24uIC1JdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZSB0byBtZWFzdXJlIHVucHJvY2Vz
c2VkIHRleHQgaGVyZSwgc2luY2UgaXQgd2lsbCBsaWtlbHkgYmUKLSAgICAgICAgLy8gc3BsaXQg
dXAgKG9yIGNvbmNhdGVuYXRlZCkuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRv
JiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7Ci0gICAgLy8gVGhpcyBpcyBwcmV0
dHkgbXVjaCBvbmx5IGZvciByZXBsYWNlZCBpbmxpbmUgYm94ZXMgYXRtLgogICAgIEFTU0VSVChs
YXlvdXRCb3gucmVwbGFjZWQoKSk7Ci0gICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcobGF5b3V0
Qm94KTsKLQotICAgIGF1dG8gd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5saW5lUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICBhdXRvIGhlaWdo
dEFuZE1hcmdpbiA9IEdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KTsKLQotICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7Ci0gICAgZGlzcGxheUJveC5zZXRD
b250ZW50Qm94V2lkdGgod2lkdGhBbmRNYXJnaW4ud2lkdGgpOwotICAgIGRpc3BsYXlCb3guc2V0
SG9yaXpvbnRhbE1hcmdpbih3aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwotICAgIGRpc3BsYXlCb3gu
c2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm5vbkNvbXB1dGVk
TWFyZ2luKTsKIAotICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChoZWlnaHRBbmRN
YXJnaW4uaGVpZ2h0KTsKLSAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFy
Z2luKGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOwotICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxN
YXJnaW4oaGVpZ2h0QW5kTWFyZ2luLmNvbGxhcHNlZE1hcmdpbi52YWx1ZV9vcihoZWlnaHRBbmRN
YXJnaW4ubWFyZ2luKSk7CisgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcobGF5b3V0Qm94KTsK
KyAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94KTsKKyAgICBjb21wdXRlSGVpZ2h0
QW5kTWFyZ2luKGxheW91dEJveCk7CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVGbG9hdFBvc2l0aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250
ZXh0LCBMaW5lJiBsaW5lLCBjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdApAQCAtMzAxLDkgKzI2
OCw3OSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRp
b25lZFBvc2l0aW9uKGNvbnN0IEJveCYpIGNvbnN0CiB7CiB9CiAKK3ZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KElubGluZVJ1blByb3ZpZGVyJiBpbmxp
bmVSdW5Qcm92aWRlcikgY29uc3QKK3sKKyAgICBpZiAoIWlzPENvbnRhaW5lcj4ocm9vdCgpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSBkb3duY2FzdDxD
b250YWluZXI+KHJvb3QoKSk7CisgICAgYXV0byogbGF5b3V0Qm94ID0gZm9ybWF0dGluZ1Jvb3Qu
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKKworICAgIHdoaWxlIChsYXlvdXRCb3gpIHsK
KyAgICAgICAgQVNTRVJUKGxheW91dEJveC0+aXNEZXNjZW5kYW50T2YoZm9ybWF0dGluZ1Jvb3Qp
KTsKKworICAgICAgICBpZiAobGF5b3V0Qm94LT5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0
KCkpIHsKKyAgICAgICAgICAgIGlubGluZVJ1blByb3ZpZGVyLmFwcGVuZCgqbGF5b3V0Qm94KTsK
KyAgICAgICAgICAgIGxheW91dEJveCA9IGxheW91dEJveC0+bmV4dEluRmxvd09yRmxvYXRpbmdT
aWJsaW5nKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChpczxDb250YWluZXI+KGxheW91dEJveCkpIHsKKyAgICAgICAgICAgIGxheW91dEJveCA9IGRv
d25jYXN0PENvbnRhaW5lcj4oKmxheW91dEJveCkuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQo
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaW5saW5lUnVu
UHJvdmlkZXIuYXBwZW5kKCpsYXlvdXRCb3gpOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRCb3gtPm5leHRJbkZsb3dP
ckZsb2F0aW5nU2libGluZygpKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0Qm94ID0gbmV4dFNp
Ymxpbmc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGxheW91dEJveCA9IGxheW91dEJveC0+cGFyZW50KCk7CisKKyAgICAgICAgICAgIGlmIChs
YXlvdXRCb3ggPT0gJmZvcm1hdHRpbmdSb290KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogRm9ybWF0dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENv
bnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25zdHJh
aW50cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3Rh
dGVGb3JSb290ID0gbGF5b3V0U3RhdGUoKS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gocm9vdCgpKTsK
KyAgICBpZiAoYXV0byBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdTdGF0
ZUZvclJvb3QuaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMocm9vdCgpKSkKKyAgICAgICAgcmV0
dXJuICppbnN0cmluc2ljV2lkdGhDb25zdHJhaW50czsKKworICAgIGF1dG8mIGlubGluZUZvcm1h
dHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0
YXRlKCkpOworICAgIElubGluZVJ1blByb3ZpZGVyIGlubGluZVJ1blByb3ZpZGVyKGlubGluZUZv
cm1hdHRpbmdTdGF0ZSk7CisgICAgY29sbGVjdElubGluZUNvbnRlbnQoaW5saW5lUnVuUHJvdmlk
ZXIpOworCisgICAgLy8gQ29tcHV0ZSB3aWR0aCBmb3Igbm9uLXRleHQgY29udGVudC4KKyAgICBm
b3IgKGF1dG8mIGlubGluZVJ1biA6IGlubGluZVJ1blByb3ZpZGVyLnJ1bnMoKSkgeworICAgICAg
ICBpZiAoaW5saW5lUnVuLmlzVGV4dCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGlubGluZVJ1bi5pbmxpbmVJdGVtKCkubGF5b3V0Qm94
KCkpOworICAgIH0KKworICAgIGF1dG8gbWF4aW11bUxpbmVXaWR0aCA9IFsmXShhdXRvIGF2YWls
YWJsZVdpZHRoKSB7CisgICAgICAgIExheW91dFVuaXQgbWF4Q29udGVudExvZ2ljYWxSaWdodDsK
KyAgICAgICAgSW5saW5lTGluZUJyZWFrZXIgbGluZUJyZWFrZXIobGF5b3V0U3RhdGUoKSwgaW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmlubGluZUNvbnRlbnQoKSwgaW5saW5lUnVuUHJvdmlkZXIucnVu
cygpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBsaW5lTG9naWNhbFJpZ2h0OworICAgICAgICB3aGls
ZSAoYXV0byBydW4gPSBsaW5lQnJlYWtlci5uZXh0UnVuKGxpbmVMb2dpY2FsUmlnaHQsIGF2YWls
YWJsZVdpZHRoLCAhbGluZUxvZ2ljYWxSaWdodCkpIHsKKyAgICAgICAgICAgIGlmIChydW4tPnBv
c2l0aW9uID09IElubGluZUxpbmVCcmVha2VyOjpSdW46OlBvc2l0aW9uOjpMaW5lQmVnaW4pCisg
ICAgICAgICAgICAgICAgbGluZUxvZ2ljYWxSaWdodCA9IDA7CisgICAgICAgICAgICBsaW5lTG9n
aWNhbFJpZ2h0ICs9IHJ1bi0+d2lkdGg7CisKKyAgICAgICAgICAgIG1heENvbnRlbnRMb2dpY2Fs
UmlnaHQgPSBzdGQ6Om1heChtYXhDb250ZW50TG9naWNhbFJpZ2h0LCBsaW5lTG9naWNhbFJpZ2h0
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWF4Q29udGVudExvZ2ljYWxSaWdodDsKKyAg
ICB9OworCisgICAgYXV0byBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IEZvcm1hdHRpbmdD
b250ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyB7IG1heGltdW1MaW5lV2lkdGgoMCks
IG1heGltdW1MaW5lV2lkdGgoTGF5b3V0VW5pdDo6bWF4KCkpIH07CisgICAgZm9ybWF0dGluZ1N0
YXRlRm9yUm9vdC5zZXRJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhyb290KCksIGluc3RyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKTsKKyAgICByZXR1cm4gaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHM7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGY3ZDY1ZWMz
N2FlLi5mYTkwYWE0NjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC0x
MDYsMTEgKzEwNiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld0xpbmUoTGlu
ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3Qg
Qm94JikgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlV2lkdGhBbmRIZWlnaHRGb3JJbmxpbmVCb3go
Y29uc3QgQm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRIZWlnaHRGb3JSZXBs
YWNlZElubGluZUJveChjb25zdCBCb3gmKSBjb25zdDsKKyAgICB2b2lkIGNvbXB1dGVIZWlnaHRB
bmRNYXJnaW4oY29uc3QgQm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJn
aW4oY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlRmxvYXRQb3NpdGlvbihjb25z
dCBGbG9hdGluZ0NvbnRleHQmLCBMaW5lJiwgY29uc3QgQm94JikgY29uc3Q7CiAgICAgdm9pZCBj
b21wdXRlU3RhdGljUG9zaXRpb24oY29uc3QgQm94JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKGNvbnN0IEJveCYpIGNvbnN0IG92ZXJy
aWRlOwogCisgICAgdm9pZCBjb2xsZWN0SW5saW5lQ29udGVudChJbmxpbmVSdW5Qcm92aWRlciYp
IGNvbnN0OwogICAgIEluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGluc3RyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2UwYjZhNjhlMTAuLjEwZWZkOTg1NzJlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTgtMTEtMDEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBwb3J0IGZvciBpbnRyaW5zaWMgd2lkdGggY2FsY3Vs
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTE0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMtcGFzc2luZy10ZXN0cy50eHQ6CisKIDIwMTgtMTEtMDEg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIGJ1aWxk
LWpzYyAtLXdpbmNhaXJvIHNob3VsZCB1cGRhdGUgV2luQ2Fpcm8gbGlicmFyaWVzCmRpZmYgLS1n
aXQgYS9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5nLXRlc3RzLnR4dCBiL1Rv
b2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0CmluZGV4IGJjZjA2
OGIwNDBhLi5hNTk5NmRlNzBlMCAxMDA2NDQKLS0tIGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlz
Yy9MRkMtcGFzc2luZy10ZXN0cy50eHQKKysrIGIvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9M
RkMtcGFzc2luZy10ZXN0cy50eHQKQEAgLTY4LDMgKzY4LDQgQEAgZmFzdC9pbmxpbmUvc2ltcGxl
LWludHJ1ZGluZy1mbG9hdDEuaHRtbAogZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9h
dHMyLmh0bWwKIGZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXRzMy5odG1sCiBmYXN0
L2lubGluZS9zaW1wbGUtaW5saW5lLWJsb2NrLmh0bWwKK2Zhc3QvaW5saW5lL3NpbXBsZS1zaHJp
bmstdG8tZml0LWlubGluZS1ibG9jay5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353681</attachid>
            <date>2018-11-01 21:55:16 -0700</date>
            <delta_ts>2018-11-02 06:44:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>18119</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NjRkOTczZjM4YS4uYTVhYzg1ZjcxNjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0xMS0wMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtM
RkNdW0lGQ10gQWRkIHN1cHBvcnQgZm9yIGludHJpbnNpYyB3aWR0aCBjYWxjdWxhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2lubGlu
ZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2su
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMTgtMTEtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBM
b2NhdGlvbiBvYmplY3Qgc2FucyBicm93c2luZyBjb250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2stZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvc2ltcGxlLXNocmluay10by1maXQtaW5s
aW5lLWJsb2NrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uODExNjY3N2I5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lu
bGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2stZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTMgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDAp
IHNpemUgMzAweDEwMgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMSkgc2l6ZSA4
NngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdpZHRoIDg2OiAiZmlyc3QgbGluZSB3
aXRoIgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoODUsMCkgc2l6ZSA3N3gxMDIgW2Jv
cmRlcjogKDFweCBzb2xpZCAjRkYwMDAwKV0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDEsMSkgc2l6ZSA3NHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGgg
NzQ6ICJzaHJpbmsgdG8gZml0IgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE2MSwx
KSBzaXplIDQ4eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDE2MSwxKSB3aWR0aCA0ODogImNv
bnRlbnQiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2lubGluZS9zaW1wbGUtc2hyaW5r
LXRvLWZpdC1pbmxpbmUtYmxvY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3NpbXBs
ZS1zaHJpbmstdG8tZml0LWlubGluZS1ibG9jay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi45ODhkNWM3OWUzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvaW5saW5lL3NpbXBsZS1zaHJpbmstdG8tZml0LWlubGluZS1ibG9jay5odG1sCkBA
IC0wLDAgKzEsMTQgQEAKKzxzdHlsZT4KKyNtYWluIHsKKwl3aWR0aDogMzAwcHg7Cit9CisKKyNp
bmxpbmUtYiB7CisJYm9yZGVyOiAxcHggc29saWQgcmVkOworCWRpc3BsYXk6IGlubGluZS1ibG9j
azsKKwloZWlnaHQ6IDEwMHB4OworfQorCis8L3N0eWxlPgorCis8ZGl2IGlkPW1haW4+Zmlyc3Qg
bGluZSB3aXRoPGRpdiBpZD1pbmxpbmUtYj5zaHJpbmsgdG8gZml0PC9kaXY+Y29udGVudDwvZGl2
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0OGNjOTll
NWU4ZS4uMjM2ZWJlZTgyNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0zMTE0LDYgKzMxMTQsNyBAQCBmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5n
LWZsb2F0MS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2lubGluZS9zaW1wbGUtaW50cnVkaW5nLWZs
b2F0czIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9pbmxpbmUvc2ltcGxlLWludHJ1ZGluZy1mbG9h
dHMzLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvaW5saW5lL3NpbXBsZS1pbmxpbmUtYmxvY2suaHRt
bCBbIEZhaWx1cmUgXQorZmFzdC9pbmxpbmUvc2ltcGxlLXNocmluay10by1maXQtaW5saW5lLWJs
b2NrLmh0bWwgWyBGYWlsdXJlIF0KIAogIyBEYXRhbGlzdAogd2Via2l0Lm9yZy9iLzE4NjcxNCBm
YXN0L2Zvcm1zL2RhdGFsaXN0L2RhdGFsaXN0LXRleHRpbnB1dC1rZXlkb3duLmh0bWwgWyBTa2lw
IF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAxMGVkNmZlYzc2OC4uN2M1YzMxOTg3MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxOC0xMS0wMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtMRkNdW0lGQ10gQWRkIHN1cHBvcnQgZm9yIGludHJpbnNpYyB3aWR0aCBj
YWxjdWxhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkxMTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyB0aGUgaW5saW5lIGZvcm1hdHRpbmcgdmVyc2lvbiBvZiB0aGUgc2hyaW5rLXRv
LWZpdCBjb21wdXRhdGlvbi4gSXQgZ2VuZXJhdGVzIGlubGluZSBydW5zCisgICAgICAgIGFuZCB1
c2VzIElubGluZUxpbmVCcmVha2VyIHRvIGNvbXB1dGUgbWluL21heCB3aWR0aC4gVGhpcyBpcyB2
ZXJ5IHNpbWlsYXIgdG8gOjpsYXlvdXQuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbmxpbmUvc2lt
cGxlLXNocmluay10by1maXQtaW5saW5lLWJsb2NrLmh0bWwKKworICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
V2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0
aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9ySW5saW5lQm94IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5o
OgorCiAyMDE4LTExLTAxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ11bQkZDXSBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjppbnN0cmluc2ljV2lkdGhDb25z
dHJhaW50cyBsb2dpYyBzaG91bGQgbG9vayBzaW1pbGFyIHRvIDo6bGF5b3V0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMDA0ZjBkMWNjYWQuLjIyMTIwNzFkMjY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC02MCw0MyArNjAsMjIgQEAg
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KCkgY29uc3QKIAogICAgIGF1dG8m
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4o
Zm9ybWF0dGluZ1N0YXRlKCkpOwogICAgIElubGluZVJ1blByb3ZpZGVyIGlubGluZVJ1blByb3Zp
ZGVyKGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7Ci0gICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSBk
b3duY2FzdDxDb250YWluZXI+KHJvb3QoKSk7Ci0gICAgYXV0byogbGF5b3V0Qm94ID0gZm9ybWF0
dGluZ1Jvb3QuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKLSAgICAvLyBDYXN1YWxseSB3
YWxrIHRocm91Z2ggdGhlIGJsb2NrJ3MgZGVzY2VuZGFudHMgYW5kIHBsYWNlIHRoZSBpbmxpbmUg
Ym94ZXMgb25lIGFmdGVyIHRoZSBvdGhlciBhcyBtdWNoIGFzIHdlIGNhbiAoeWVhaCwgSSBhbSBs
b29raW5nIGF0IHlvdSBmbG9hdHMpLgotICAgIHdoaWxlIChsYXlvdXRCb3gpIHsKIAotICAgICAg
ICBpZiAobGF5b3V0Qm94LT5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAg
ICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdCgqbGF5b3V0Qm94KTsKLSAgICAgICAg
ICAgIC8vIEZvcm1hdHRpbmcgY29udGV4dCByb290cyB0YWtlIGNhcmUgb2YgdGhlaXIgZW50aXJl
IHN1YnRyZWUuIENvbnRpbnVlIHdpdGggbmV4dCBzaWJsaW5nLgotICAgICAgICAgICAgaW5saW5l
UnVuUHJvdmlkZXIuYXBwZW5kKCpsYXlvdXRCb3gpOwotICAgICAgICAgICAgbGF5b3V0Qm94ID0g
bGF5b3V0Qm94LT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKTsKKyAgICBjb2xsZWN0SW5s
aW5lQ29udGVudChpbmxpbmVSdW5Qcm92aWRlcik7CisgICAgLy8gQ29tcHV0ZSB3aWR0aC9oZWln
aHQgZm9yIG5vbi10ZXh0IGNvbnRlbnQuCisgICAgZm9yIChhdXRvJiBpbmxpbmVSdW4gOiBpbmxp
bmVSdW5Qcm92aWRlci5ydW5zKCkpIHsKKyAgICAgICAgaWYgKGlubGluZVJ1bi5pc1RleHQoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzPENvbnRh
aW5lcj4obGF5b3V0Qm94KSkgewotICAgICAgICAgICAgQVNTRVJUKGlzPElubGluZUNvbnRhaW5l
cj4obGF5b3V0Qm94KSk7Ci0gICAgICAgICAgICBsYXlvdXRCb3ggPSBkb3duY2FzdDxDb250YWlu
ZXI+KCpsYXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CisgICAgICAgIGF1
dG8mIGxheW91dEJveCA9IGlubGluZVJ1bi5pbmxpbmVJdGVtKCkubGF5b3V0Qm94KCk7CisgICAg
ICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAg
ICAgICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lUnVuUHJvdmlkZXIuYXBw
ZW5kKCpsYXlvdXRCb3gpOwotICAgICAgICBjb21wdXRlV2lkdGhBbmRIZWlnaHRGb3JJbmxpbmVC
b3goKmxheW91dEJveCk7Ci0KLSAgICAgICAgZm9yICg7IGxheW91dEJveDsgbGF5b3V0Qm94ID0g
bGF5b3V0Qm94LT5wYXJlbnQoKSkgewotICAgICAgICAgICAgaWYgKGxheW91dEJveCA9PSAmZm9y
bWF0dGluZ1Jvb3QpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRCb3ggPSBudWxscHRyOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGF1dG8q
IG5leHRTaWJsaW5nID0gbGF5b3V0Qm94LT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkg
ewotICAgICAgICAgICAgICAgIGxheW91dEJveCA9IG5leHRTaWJsaW5nOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVCghbGF5
b3V0Qm94IHx8IGxheW91dEJveC0+aXNEZXNjZW5kYW50T2YoZm9ybWF0dGluZ1Jvb3QpKTsKKyAg
ICAgICAgY29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3gobGF5b3V0Qm94
KTsKICAgICB9CiAKICAgICBsYXlvdXRJbmxpbmVDb250ZW50KGlubGluZVJ1blByb3ZpZGVyKTsK
LQogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbRW5kXSAtPiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZvcm1hdHRpbmcgcm9vdCgi
IDw8ICZyb290KCkgPDwgIikiKTsKIH0KIApAQCAtMjA0LDgxICsxODMsNjkgQEAgdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBJbmxpbmVSdW5Q
cm92aWRlciYgaW5saW4KICAgICBsaW5lLmNsb3NlKExpbmU6Okxhc3RMaW5lOjpZZXMpOwogfQog
Ci12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFJv
b3QoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7
CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogCi0gICAgQVNT
RVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0lubGlu
ZUJsb2NrQm94KCkpOwotICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZS5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7Ci0KLSAgICBhdXRvIGNvbXB1dGVXaWR0aEFuZE1h
cmdpbiA9IFsmXSgpIHsKLSAgICAgICAgV2lkdGhBbmRNYXJnaW4gd2lkdGhBbmRNYXJnaW47Cisg
ICAgV2lkdGhBbmRNYXJnaW4gd2lkdGhBbmRNYXJnaW47CisgICAgaWYgKGxheW91dEJveC5pc0Zs
b2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IEdlb21ldHJ5Ojpm
bG9hdGluZ1dpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGVsc2Ug
aWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCisgICAgICAgIHdpZHRoQW5kTWFyZ2lu
ID0gR2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91
dEJveCk7CisgICAgZWxzZSBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCisgICAgICAgIHdpZHRo
QW5kTWFyZ2luID0gR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0
U3RhdGUsIGxheW91dEJveCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIAotICAgICAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAg
ICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IEdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2lu
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNJ
bmxpbmVCbG9ja0JveCgpKQotICAgICAgICAgICAgd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6
aW5saW5lQmxvY2tXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgYXV0byYgZGlz
cGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
KyAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aCh3aWR0aEFuZE1hcmdpbi53aWR0aCk7
CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm1hcmdp
bik7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTm9uQ29tcHV0ZWRNYXJnaW4od2lkdGhB
bmRNYXJnaW4ubm9uQ29tcHV0ZWRNYXJnaW4pOworfQogCi0gICAgICAgIGRpc3BsYXlCb3guc2V0
Q29udGVudEJveFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKLSAgICAgICAgZGlzcGxheUJv
eC5zZXRIb3Jpem9udGFsTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm1hcmdpbik7Ci0gICAgICAgIGRp
c3BsYXlCb3guc2V0SG9yaXpvbnRhbE5vbkNvbXB1dGVkTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm5v
bkNvbXB1dGVkTWFyZ2luKTsKLSAgICB9Owordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK3sKKyAg
ICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CiAKLSAgICBhdXRvIGNv
bXB1dGVIZWlnaHRBbmRNYXJnaW4gPSBbJl0oKSB7Ci0gICAgICAgIEhlaWdodEFuZE1hcmdpbiBo
ZWlnaHRBbmRNYXJnaW47CisgICAgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbjsKKyAg
ICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIGhlaWdodEFu
ZE1hcmdpbiA9IEdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKKyAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpKQor
ICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5saW5lQmxvY2tIZWlnaHRBbmRN
YXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgZWxzZSBpZiAobGF5b3V0Qm94LnJl
cGxhY2VkKCkpCisgICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IEdlb21ldHJ5OjppbmxpbmVSZXBs
YWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgICAgIGlmIChsYXlvdXRCb3guaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IEdlb21l
dHJ5OjpmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAg
ICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKLSAgICAgICAgICAg
IGhlaWdodEFuZE1hcmdpbiA9IEdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRC
b3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7CisgICAgZGlzcGxheUJveC5zZXRWZXJ0
aWNhbE5vbkNvbGxhcHNlZE1hcmdpbihoZWlnaHRBbmRNYXJnaW4ubWFyZ2luKTsKKyAgICBkaXNw
bGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKGhlaWdodEFuZE1hcmdpbi5jb2xsYXBzZWRNYXJnaW4u
dmFsdWVfb3IoaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbikpOworfQogCi0gICAgICAgIGRpc3BsYXlC
b3guc2V0Q29udGVudEJveEhlaWdodChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKLSAgICAgICAg
ZGlzcGxheUJveC5zZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbihoZWlnaHRBbmRNYXJnaW4u
bWFyZ2luKTsKLSAgICAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihoZWlnaHRBbmRN
YXJnaW4uY29sbGFwc2VkTWFyZ2luLnZhbHVlX29yKGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pKTsK
LSAgICB9Owordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAoreworICAgIEFTU0VSVChsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0Jv
eCgpKTsKIAotICAgIGxheW91dFN0YXRlLmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdSb290SWZOZWVkZWQobGF5b3V0Qm94KTsKKyAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMt
PmxheW91dFN0YXRlKCk7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUu
Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChsYXlvdXRCb3gp
OwogICAgIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCk7Ci0gICAgY29tcHV0ZVdp
ZHRoQW5kTWFyZ2luKCk7Ci0KKyAgICBjb21wdXRlV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94KTsK
ICAgICAvLyBTd2ljaCBvdmVyIHRvIHRoZSBuZXcgZm9ybWF0dGluZyBjb250ZXh0ICh0aGUgb25l
IHRoYXQgdGhlIHJvb3QgY3JlYXRlcykuCi0gICAgbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3Jt
YXR0aW5nU3RhdGUobGF5b3V0Qm94KS5mb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gpLT5sYXlv
dXQoKTsKLQorICAgIGZvcm1hdHRpbmdTdGF0ZS5mb3JtYXR0aW5nQ29udGV4dChsYXlvdXRCb3gp
LT5sYXlvdXQoKTsKICAgICAvLyBDb21lIGJhY2sgYW5kIGZpbmFsaXplIHRoZSByb290J3MgaGVp
Z2h0IGFuZCBtYXJnaW4uCi0gICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbigpOworICAgIGNvbXB1
dGVIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94KTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kSGVpZ2h0Rm9ySW5saW5lQm94KGNvbnN0IEJveCYgbGF5
b3V0Qm94KSBjb25zdAordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRo
QW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFsYXlvdXRCb3guaXNDb250YWluZXIoKSk7CiAgICAgQVNTRVJUKCFs
YXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKLQotICAgIGlmIChpczxJ
bmxpbmVCb3g+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8SW5saW5lQm94PihsYXlvdXRCb3gpLmhh
c1RleHRDb250ZW50KCkpIHsKLSAgICAgICAgLy8gVGV4dCBjb250ZW50IHdpZHRoIGlzIGNvbXB1
dGVkIGR1cmluZyB0ZXh0IHJ1biBnZW5lcmF0aW9uLiAtSXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vu
c2UgdG8gbWVhc3VyZSB1bnByb2Nlc3NlZCB0ZXh0IGhlcmUsIHNpbmNlIGl0IHdpbGwgbGlrZWx5
IGJlCi0gICAgICAgIC8vIHNwbGl0IHVwIChvciBjb25jYXRlbmF0ZWQpLgotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgp
OwotICAgIC8vIFRoaXMgaXMgcHJldHR5IG11Y2ggb25seSBmb3IgcmVwbGFjZWQgaW5saW5lIGJv
eGVzIGF0bS4KICAgICBBU1NFUlQobGF5b3V0Qm94LnJlcGxhY2VkKCkpOwotICAgIGNvbXB1dGVC
b3JkZXJBbmRQYWRkaW5nKGxheW91dEJveCk7Ci0KLSAgICBhdXRvIHdpZHRoQW5kTWFyZ2luID0g
R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91
dEJveCk7Ci0gICAgYXV0byBoZWlnaHRBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5saW5lUmVwbGFj
ZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7Ci0KLSAgICBhdXRvJiBk
aXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gp
OwotICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRo
KTsKLSAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lkdGhBbmRNYXJnaW4ubWFy
Z2luKTsKLSAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxOb25Db21wdXRlZE1hcmdpbih3aWR0
aEFuZE1hcmdpbi5ub25Db21wdXRlZE1hcmdpbik7CiAKLSAgICBkaXNwbGF5Qm94LnNldENvbnRl
bnRCb3hIZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7Ci0gICAgZGlzcGxheUJveC5zZXRW
ZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbihoZWlnaHRBbmRNYXJnaW4ubWFyZ2luKTsKLSAgICBk
aXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKGhlaWdodEFuZE1hcmdpbi5jb2xsYXBzZWRNYXJn
aW4udmFsdWVfb3IoaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbikpOworICAgIGNvbXB1dGVCb3JkZXJB
bmRQYWRkaW5nKGxheW91dEJveCk7CisgICAgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGxheW91dEJv
eCk7CisgICAgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gpOwogfQogCiB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRQb3NpdGlvbihjb25zdCBGbG9hdGlu
Z0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgTGluZSYgbGluZSwgY29uc3QgQm94JiBmbG9hdEJv
eCkgY29uc3QKQEAgLTMwMSw5ICsyNjgsNzkgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihjb25zdCBCb3gmKSBjb25zdAogewog
fQogCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudChJ
bmxpbmVSdW5Qcm92aWRlciYgaW5saW5lUnVuUHJvdmlkZXIpIGNvbnN0Cit7CisgICAgaWYgKCFp
czxDb250YWluZXI+KHJvb3QoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGZvcm1h
dHRpbmdSb290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihyb290KCkpOworICAgIGF1dG8qIGxheW91
dEJveCA9IGZvcm1hdHRpbmdSb290LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CisKKyAg
ICB3aGlsZSAobGF5b3V0Qm94KSB7CisgICAgICAgIEFTU0VSVChsYXlvdXRCb3gtPmlzRGVzY2Vu
ZGFudE9mKGZvcm1hdHRpbmdSb290KSk7CisKKyAgICAgICAgaWYgKGxheW91dEJveC0+ZXN0YWJs
aXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICBpbmxpbmVSdW5Qcm92aWRl
ci5hcHBlbmQoKmxheW91dEJveCk7CisgICAgICAgICAgICBsYXlvdXRCb3ggPSBsYXlvdXRCb3gt
Pm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKSB7CisgICAg
ICAgICAgICBsYXlvdXRCb3ggPSBkb3duY2FzdDxDb250YWluZXI+KCpsYXlvdXRCb3gpLmZpcnN0
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlubGluZVJ1blByb3ZpZGVyLmFwcGVuZCgqbGF5b3V0Qm94KTsKKworICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5nID0g
bGF5b3V0Qm94LT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgeworICAgICAgICAgICAg
ICAgIGxheW91dEJveCA9IG5leHRTaWJsaW5nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBsYXlvdXRCb3ggPSBsYXlvdXRCb3gtPnBhcmVudCgp
OworCisgICAgICAgICAgICBpZiAobGF5b3V0Qm94ID09ICZmb3JtYXR0aW5nUm9vdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKIEZvcm1hdHRpbmdDb250
ZXh0OjpJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
aW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdAogewotICAgIHJldHVybiB7IH07Cisg
ICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlRm9yUm9vdCA9IGxheW91dFN0YXRlKCkuZm9ybWF0dGlu
Z1N0YXRlRm9yQm94KHJvb3QoKSk7CisgICAgaWYgKGF1dG8gaW5zdHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgPSBmb3JtYXR0aW5nU3RhdGVGb3JSb290Lmluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRz
KHJvb3QoKSkpCisgICAgICAgIHJldHVybiAqaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CisK
KyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0
aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZSgpKTsKKyAgICBJbmxpbmVSdW5Qcm92aWRlciBpbmxp
bmVSdW5Qcm92aWRlcihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOworICAgIGNvbGxlY3RJbmxpbmVD
b250ZW50KGlubGluZVJ1blByb3ZpZGVyKTsKKworICAgIC8vIENvbXB1dGUgd2lkdGggZm9yIG5v
bi10ZXh0IGNvbnRlbnQuCisgICAgZm9yIChhdXRvJiBpbmxpbmVSdW4gOiBpbmxpbmVSdW5Qcm92
aWRlci5ydW5zKCkpIHsKKyAgICAgICAgaWYgKGlubGluZVJ1bi5pc1RleHQoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihpbmxpbmVSdW4u
aW5saW5lSXRlbSgpLmxheW91dEJveCgpKTsKKyAgICB9CisKKyAgICBhdXRvIG1heGltdW1MaW5l
V2lkdGggPSBbJl0oYXV0byBhdmFpbGFibGVXaWR0aCkgeworICAgICAgICBMYXlvdXRVbml0IG1h
eENvbnRlbnRMb2dpY2FsUmlnaHQ7CisgICAgICAgIElubGluZUxpbmVCcmVha2VyIGxpbmVCcmVh
a2VyKGxheW91dFN0YXRlKCksIGlubGluZUZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVDb250ZW50KCks
IGlubGluZVJ1blByb3ZpZGVyLnJ1bnMoKSk7CisgICAgICAgIExheW91dFVuaXQgbGluZUxvZ2lj
YWxSaWdodDsKKyAgICAgICAgd2hpbGUgKGF1dG8gcnVuID0gbGluZUJyZWFrZXIubmV4dFJ1bihs
aW5lTG9naWNhbFJpZ2h0LCBhdmFpbGFibGVXaWR0aCwgIWxpbmVMb2dpY2FsUmlnaHQpKSB7Cisg
ICAgICAgICAgICBpZiAocnVuLT5wb3NpdGlvbiA9PSBJbmxpbmVMaW5lQnJlYWtlcjo6UnVuOjpQ
b3NpdGlvbjo6TGluZUJlZ2luKQorICAgICAgICAgICAgICAgIGxpbmVMb2dpY2FsUmlnaHQgPSAw
OworICAgICAgICAgICAgbGluZUxvZ2ljYWxSaWdodCArPSBydW4tPndpZHRoOworCisgICAgICAg
ICAgICBtYXhDb250ZW50TG9naWNhbFJpZ2h0ID0gc3RkOjptYXgobWF4Q29udGVudExvZ2ljYWxS
aWdodCwgbGluZUxvZ2ljYWxSaWdodCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1heENv
bnRlbnRMb2dpY2FsUmlnaHQ7CisgICAgfTsKKworICAgIGF1dG8gaW5zdHJpbnNpY1dpZHRoQ29u
c3RyYWludHMgPSBGb3JtYXR0aW5nQ29udGV4dDo6SW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
eyBtYXhpbXVtTGluZVdpZHRoKDApLCBtYXhpbXVtTGluZVdpZHRoKExheW91dFVuaXQ6Om1heCgp
KSB9OworICAgIGZvcm1hdHRpbmdTdGF0ZUZvclJvb3Quc2V0SW5zdHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMocm9vdCgpLCBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyk7CisgICAgcmV0dXJuIGlu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaAppbmRleCBmN2Q2NWVjMzdhZS4uZmE5MGFhNDY1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaApAQCAtMTA2LDExICsxMDYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluaXRpYWxpemVOZXdMaW5lKExpbmUmKSBjb25zdDsKIAogICAgIHZvaWQgbGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYpIGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZVdpZHRo
QW5kSGVpZ2h0Rm9ySW5saW5lQm94KGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZvaWQgY29tcHV0
ZVdpZHRoQW5kSGVpZ2h0Rm9yUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgQm94JikgY29uc3Q7Cisg
ICAgdm9pZCBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYpIGNvbnN0OworICAgIHZv
aWQgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHZvaWQgY29t
cHV0ZUZsb2F0UG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiwgTGluZSYsIGNvbnN0IEJv
eCYpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uKGNvbnN0IEJveCYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihj
b25zdCBCb3gmKSBjb25zdCBvdmVycmlkZTsKIAorICAgIHZvaWQgY29sbGVjdElubGluZUNvbnRl
bnQoSW5saW5lUnVuUHJvdmlkZXImKSBjb25zdDsKICAgICBJbnN0cmluc2ljV2lkdGhDb25zdHJh
aW50cyBpbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cygpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdlMGI2
YTY4ZTEwLi4xMGVmZDk4NTcyZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTExLTAxICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3VwcG9ydCBmb3Ig
aW50cmluc2ljIHdpZHRoIGNhbGN1bGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIExheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVz
dHMudHh0OgorCiAyMDE4LTExLTAxICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KIAogICAgICAgICBidWlsZC1qc2MgLS13aW5jYWlybyBzaG91bGQgdXBkYXRlIFdpbkNh
aXJvIGxpYnJhcmllcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTGF5b3V0UmVsb2FkZWQvbWlzYy9MRkMt
cGFzc2luZy10ZXN0cy50eHQgYi9Ub29scy9MYXlvdXRSZWxvYWRlZC9taXNjL0xGQy1wYXNzaW5n
LXRlc3RzLnR4dAppbmRleCBiY2YwNjhiMDQwYS4uYTU5OTZkZTcwZTAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0CisrKyBiL1Rvb2xz
L0xheW91dFJlbG9hZGVkL21pc2MvTEZDLXBhc3NpbmctdGVzdHMudHh0CkBAIC02OCwzICs2OCw0
IEBAIGZhc3QvaW5saW5lL3NpbXBsZS1pbnRydWRpbmctZmxvYXQxLmh0bWwKIGZhc3QvaW5saW5l
L3NpbXBsZS1pbnRydWRpbmctZmxvYXRzMi5odG1sCiBmYXN0L2lubGluZS9zaW1wbGUtaW50cnVk
aW5nLWZsb2F0czMuaHRtbAogZmFzdC9pbmxpbmUvc2ltcGxlLWlubGluZS1ibG9jay5odG1sCitm
YXN0L2lubGluZS9zaW1wbGUtc2hyaW5rLXRvLWZpdC1pbmxpbmUtYmxvY2suaHRtbAo=
</data>
<flag name="review"
          id="370896"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>