<?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>186744</bug_id>
          
          <creation_ts>2018-06-16 14:20:58 -0700</creation_ts>
          <short_desc>[LFC] DisplayBox API should be more clear about height/width vs. contentBoxHeight/width</short_desc>
          <delta_ts>2018-06-17 09:38:24 -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>koivisto</cc>
    
    <cc>sam</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>1433823</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-16 14:20:58 -0700</bug_when>
    <thetext>height/width -&gt; borderBox
top/left/bottom/right -&gt; borderBox&apos;s position in containing block&apos;s coordinate system</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433824</commentid>
    <comment_count>1</comment_count>
      <attachid>342890</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-16 14:42:07 -0700</bug_when>
    <thetext>Created attachment 342890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433826</commentid>
    <comment_count>2</comment_count>
      <attachid>342891</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-16 14:46:50 -0700</bug_when>
    <thetext>Created attachment 342891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433878</commentid>
    <comment_count>3</comment_count>
      <attachid>342891</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-17 09:37:57 -0700</bug_when>
    <thetext>Comment on attachment 342891
Patch

Clearing flags on attachment: 342891

Committed r232914: &lt;https://trac.webkit.org/changeset/232914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433879</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-17 09:37:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433880</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-17 09:38:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/41196351&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342890</attachid>
            <date>2018-06-16 14:42:07 -0700</date>
            <delta_ts>2018-06-16 14:46:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186744-20180616144206.patch</filename>
            <type>text/plain</type>
            <size>35288</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNlNTFiY2VjYzExMmVh
MjNmMWM0OTg4OGY5MTkxZDZiODA5MjU1ZC4uMjA3YzFlZWZhOGY0M2E3YjcyYzc5NzJjYjdiNDY0
NGU4ZTU1ODEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE4LTA2LTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gRGlzcGxheUJveCBB
UEkgc2hvdWxkIGJlIG1vcmUgY2xlYXIgYWJvdXQgaGVpZ2h0L3dpZHRoIHZzLiBjb250ZW50Qm94
SGVpZ2h0L3dpZHRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODY3NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEaXNwbGF5OjpCb3g6OmhlaWdodC93aWR0aCAtPiBib3JkZXIgYm94IHNpemUuCisgICAg
ICAgIERpc3BsYXk6OkJveDo6Y29udGVudEJveEhlaWdodC93aWR0aCAtPiBjb250ZW50IGJveCBz
aXplLgorICAgICAgICBEaXNwbGF5OjpCb3g6OnRvcC9sZWZ0L2JvdHRvbS9yaWdodCAtPiBib3Jk
ZXIgYm94IHBvc2l0aW9uIGluIHRoZSBjb250YWluaW5nIGJveCdzIGNvb3JkaW5hdGUgc3lzdGVt
LgorICAgICAgICBEaXNwbGF5OjpCb3g6Om1hcmdpbkJveC9ib3JkZXJCb3gvcGFkZGluZ0JveC9j
b250ZW50Qm94IC0+IHJlbGF0aXZlIHRvIGJvcmRlciBib3ggKGJvcmVkZXIgYm94IGlzIHsgMCwg
MCB9KQorICAgICAgICAoVGhpcyBwYXRjaCBhbHNvIHJlbW92ZXMgdGhlIGJveC1zaXppbmcgbG9n
aWMgZnJvbSBEaXNwbGF5OjpCb3guIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSBzaG91bGQg
c2V0IHRoZQorICAgICAgICBjb3JyZWN0IGNvbnRlbnRCb3hTaXplL2JvcmRlckJveFNpemUgYmFz
ZWQgb24gdGhlIENTUyBwcm9wZXJ0eS4pCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdGluZ1dpZHRoQW5kTWFyZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2Vv
bWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6dmFsaWRhdGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQgY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBs
YWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNl
ZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojppbmxp
bmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29tcHV0ZWRQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpblZhbHVlKToKKyAgICAgICAgKiBs
YXlvdXQvTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91
dENvbnRleHQ6OmluaXRpYWxpemVSb290KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93SGVpZ2h0QW5kTWFyZ2luIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUluRmxvd1dpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3Np
dGlvbik6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5Cb3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpib3JkZXJCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6Qm94OjpwYWRkaW5nQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6Y29udGVudEJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6dG9wIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bGVmdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OnJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkJveDo6dG9wTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6
OmJvdHRvbVJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OndpZHRoIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6cmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6OnNldFRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjpzZXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRMZWZ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bW92ZUhvcml6b250YWxseSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Om1vdmVWZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6c2V0SGFzVmFsaWRDb250ZW50SGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0SGFzVmFsaWRDb250ZW50V2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRDb250ZW50Qm94SGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0Q29udGVudEJveFdpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6Y29udGVudEJveEhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OmNvbnRlbnRCb3hXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OnNldFdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6c2V0SGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6c2V0U2l6ZSk6IERlbGV0ZWQuCisKIDIwMTgtMDYtMTUgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBGaXggc3RhdGljIHBvc2l0aW9u
IGxlZnQvdG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCAyZjk1YmFiODViYjAzZjE0ZDYwNjAxMGIyOWMwY2JkZDJjOWQzNzAyLi40M2JhMjdhNWJl
ZjQ1ZDJjYzM4YjU4NzQ3NTQ5OThhNjViN2EwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgRm9ybWF0dGluZ0NvbnRl
eHQ6On5Gb3JtYXR0aW5nQ29udGV4dCgpCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
RmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29u
c3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKICAg
ICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IEdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodEFuZE1hcmdp
bihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwotICAgIGRpc3BsYXlCb3guc2V0SGVpZ2h0KGhl
aWdodEFuZE1hcmdpbi5oZWlnaHQpOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdo
dChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0aWNhbGx5
KGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udG9wKTsKICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2Fs
TWFyZ2luKGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOwogfQpAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4oTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udAogdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0
aW5nV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94
JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKICAgICBhdXRv
IHdpZHRoQW5kTWFyZ2luID0gR2VvbWV0cnk6OmZsb2F0aW5nV2lkdGhBbmRNYXJnaW4obGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKLSAgICBkaXNwbGF5Qm94LnNldFdpZHRoKHdpZHRoQW5kTWFy
Z2luLndpZHRoKTsKKyAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aCh3aWR0aEFuZE1h
cmdpbi53aWR0aCk7CiAgICAgZGlzcGxheUJveC5tb3ZlSG9yaXpvbnRhbGx5KHdpZHRoQW5kTWFy
Z2luLm1hcmdpbi5sZWZ0KTsKICAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lk
dGhBbmRNYXJnaW4ubWFyZ2luKTsKIH0KQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0
JiBsYXlvdXQKIHsKICAgICBhdXRvIGhvcml6b250YWxHZW9tZXRyeSA9IEdlb21ldHJ5OjpvdXRP
ZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKICAgICBk
aXNwbGF5Qm94LnNldExlZnQoaG9yaXpvbnRhbEdlb21ldHJ5LmxlZnQpOwotICAgIGRpc3BsYXlC
b3guc2V0V2lkdGgoaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLndpZHRoKTsKKyAg
ICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChob3Jpem9udGFsR2VvbWV0cnkud2lkdGhB
bmRNYXJnaW4ud2lkdGgpOwogICAgIEFTU0VSVChob3Jpem9udGFsR2VvbWV0cnkubGVmdCArIGhv
cml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi53aWR0aCA9PSBob3Jpem9udGFsR2VvbWV0
cnkucmlnaHQpOwogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbihob3Jpem9udGFs
R2VvbWV0cnkud2lkdGhBbmRNYXJnaW4ubWFyZ2luKTsKIH0KQEAgLTgwLDcgKzgwLDcgQEAgdm9p
ZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q28KIHsKICAgICBhdXRvIHZlcnRpY2FsR2VvbWV0cnkgPSBHZW9t
ZXRyeTo6b3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gp
OwogICAgIGRpc3BsYXlCb3guc2V0VG9wKHZlcnRpY2FsR2VvbWV0cnkudG9wKTsKLSAgICBkaXNw
bGF5Qm94LnNldEhlaWdodCh2ZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5oZWlnaHQp
OworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodCh2ZXJ0aWNhbEdlb21ldHJ5Lmhl
aWdodEFuZE1hcmdpbi5oZWlnaHQpOwogICAgIEFTU0VSVCh2ZXJ0aWNhbEdlb21ldHJ5LnRvcCAr
IHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA9PSB2ZXJ0aWNhbEdlb21l
dHJ5LmJvdHRvbSk7CiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNhbEdl
b21ldHJ5LmhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOwogfQpAQCAtMTQ0LDkgKzE0NCw5IEBAIHZv
aWQgRm9ybWF0dGluZ0NvbnRleHQ6OnZhbGlkYXRlR2VvbWV0cnlDb25zdHJhaW50c0FmdGVyTGF5
b3V0KGNvbnN0IExheW91dENvbnRlCiAgICAgZm9yIChhdXRvJiBsYXlvdXRCb3ggOiBkZXNjZW5k
YW50c09mVHlwZTxCb3g+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpIHsKICAgICAgICAgaWYgKCZs
YXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCkgIT0gJmZvcm1hdHRpbmdDb250ZXh0Um9v
dCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvKiBjb250YWluaW5nQmxvY2sg
PSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIEFTU0VSVChjb250YWluaW5n
QmxvY2spOwotICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1NpemUgPSBsYXlvdXRDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jayktPnNpemUoKTsKKyAgICAg
ICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5j
b250ZW50Qm94SGVpZ2h0KCk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBj
b250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwogICAgICAgICBhdXRv
KiBkaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91
dEJveCk7CiAgICAgICAgIEFTU0VSVChkaXNwbGF5Qm94KTsKIApAQCAtMTU0LDE1ICsxNTQsMTUg
QEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6dmFsaWRhdGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0
ZXJMYXlvdXQoY29uc3QgTGF5b3V0Q29udGUKICAgICAgICAgLy8gMTAuMy43IEFic29sdXRlbHkg
cG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAgICAgIGlmICgobGF5b3V0Qm94
LmlzQmxvY2tMZXZlbEJveCgpIHx8IGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkg
JiYgIWxheW91dEJveC5yZXBsYWNlZCgpKSB7CiAgICAgICAgICAgICAvLyBtYXJnaW4tbGVmdCAr
IGJvcmRlci1sZWZ0LXdpZHRoICsgcGFkZGluZy1sZWZ0ICsgd2lkdGggKyBwYWRkaW5nLXJpZ2h0
ICsgYm9yZGVyLXJpZ2h0LXdpZHRoICsgbWFyZ2luLXJpZ2h0ID0gd2lkdGggb2YgY29udGFpbmlu
ZyBibG9jawotICAgICAgICAgICAgQVNTRVJUKGRpc3BsYXlCb3gtPm1hcmdpbkxlZnQoKSArIGRp
c3BsYXlCb3gtPmJvcmRlckxlZnQoKSArIGRpc3BsYXlCb3gtPnBhZGRpbmdMZWZ0KCkgKyBkaXNw
bGF5Qm94LT53aWR0aCgpCi0gICAgICAgICAgICAgICAgKyBkaXNwbGF5Qm94LT5wYWRkaW5nUmln
aHQoKSArIGRpc3BsYXlCb3gtPmJvcmRlclJpZ2h0KCkgKyBkaXNwbGF5Qm94LT5tYXJnaW5SaWdo
dCgpID09IGNvbnRhaW5pbmdCbG9ja1NpemUud2lkdGgoKSk7CisgICAgICAgICAgICBBU1NFUlQo
ZGlzcGxheUJveC0+bWFyZ2luTGVmdCgpICsgZGlzcGxheUJveC0+Ym9yZGVyTGVmdCgpICsgZGlz
cGxheUJveC0+cGFkZGluZ0xlZnQoKSArIGRpc3BsYXlCb3gtPmNvbnRlbnRCb3hXaWR0aCgpCisg
ICAgICAgICAgICAgICAgKyBkaXNwbGF5Qm94LT5wYWRkaW5nUmlnaHQoKSArIGRpc3BsYXlCb3gt
PmJvcmRlclJpZ2h0KCkgKyBkaXNwbGF5Qm94LT5tYXJnaW5SaWdodCgpID09IGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDEwLjYuNCBBYnNvbHV0ZWx5IHBv
c2l0aW9uZWQsIG5vbi1yZXBsYWNlZCBlbGVtZW50cwogICAgICAgICBpZiAobGF5b3V0Qm94Lmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSkgewogICAgICAg
ICAgICAgLy8gdG9wICsgbWFyZ2luLXRvcCArIGJvcmRlci10b3Atd2lkdGggKyBwYWRkaW5nLXRv
cCArIGhlaWdodCArIHBhZGRpbmctYm90dG9tICsgYm9yZGVyLWJvdHRvbS13aWR0aCArIG1hcmdp
bi1ib3R0b20gKyBib3R0b20gPSBoZWlnaHQgb2YgY29udGFpbmluZyBibG9jawotICAgICAgICAg
ICAgQVNTRVJUKGRpc3BsYXlCb3gtPnRvcCgpICsgZGlzcGxheUJveC0+bWFyZ2luVG9wKCkgKyBk
aXNwbGF5Qm94LT5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gtPnBhZGRpbmdUb3AoKQotICAgICAg
ICAgICAgICAgICsgZGlzcGxheUJveC0+cGFkZGluZ0JvdHRvbSgpICsgZGlzcGxheUJveC0+Ym9y
ZGVyQm90dG9tKCkgKyBkaXNwbGF5Qm94LT5tYXJnaW5Cb3R0b20oKSA9PSBjb250YWluaW5nQmxv
Y2tTaXplLmhlaWdodCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChkaXNwbGF5Qm94LT50b3AoKSAr
IGRpc3BsYXlCb3gtPm1hcmdpblRvcCgpICsgZGlzcGxheUJveC0+Ym9yZGVyVG9wKCkgKyBkaXNw
bGF5Qm94LT5wYWRkaW5nVG9wKCkgKyBkaXNwbGF5Qm94LT5jb250ZW50Qm94SGVpZ2h0KCkKKyAg
ICAgICAgICAgICAgICArIGRpc3BsYXlCb3gtPnBhZGRpbmdCb3R0b20oKSArIGRpc3BsYXlCb3gt
PmJvcmRlckJvdHRvbSgpICsgZGlzcGxheUJveC0+bWFyZ2luQm90dG9tKCkgPT0gY29udGFpbmlu
Z0Jsb2NrSGVpZ2h0KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA2NDQzYzA5ZTM3
NGM0NTRlYjQwNmNmNGZmOTZlMDA5MTQzODc2MjNmLi5jNzY4NDM5OTVhZjU2NmE2ZWJlMzMzODll
YzQ5ZjhmMDc3YTNmOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpvdXQKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1
dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveCk7CiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayktPndpZHRoKCk7CisgICAg
YXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxh
eW91dEJveChjb250YWluaW5nQmxvY2spLT5jb250ZW50Qm94V2lkdGgoKTsKICAgICBhdXRvIGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24gPSBjb250YWluaW5nQmxvY2suc3R5bGUoKS5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCk7CiAgICAgCiAgICAgYXV0byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5sb2dpY2FsTGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC0zNDks
OSArMzQ5LDkgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpWZXJ0aWNhbEdlb21ldHJ5
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2YKIAogICAgIGF1dG8mIHN0eWxlID0g
bGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgZGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKLSAgICBhdXRvJiBjb250YWluaW5n
QmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwotICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFp
bmluZ0Jsb2NrKS0+d2lkdGgoKTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGxh
eW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChjb250YWluaW5nQmxvY2spLT5oZWln
aHQoKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0gKmxheW91dENvbnRl
eHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsK
KyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlC
b3guaGVpZ2h0KCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGNvbnRhaW5pbmdC
bG9ja0Rpc3BsYXlCb3gud2lkdGgoKTsKIAogICAgIGF1dG8gdG9wID0gY29tcHV0ZWRWYWx1ZUlm
Tm90QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBh
dXRvIGJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbEJvdHRvbSgp
LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC00MjMsNyArNDIzLDcgQEAgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpvdXQKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1
dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveCk7CiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayktPndpZHRoKCk7CisgICAg
YXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxh
eW91dEJveChjb250YWluaW5nQmxvY2spLT5jb250ZW50Qm94V2lkdGgoKTsKICAgICBhdXRvIGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24gPSBjb250YWluaW5nQmxvY2suc3R5bGUoKS5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCk7CiAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTUxMywxMCAr
NTEzLDEyIEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6SGVpZ2h0QW5kTWFyZ2luIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpCiAgICAgYXV0byYgc3R5bGUgPSBsYXlv
dXRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNv
bnRhaW5pbmdCbG9jaygpOwogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAq
bGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayk7Cisg
ICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94
LmNvbnRlbnRCb3hIZWlnaHQoKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gY29u
dGFpbmluZ0Jsb2NrRGlzcGxheUJveC5jb250ZW50Qm94V2lkdGgoKTsKIAotICAgIGF1dG8gaGVp
Z2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsSGVpZ2h0KCksIGNvbnRh
aW5pbmdCbG9ja0Rpc3BsYXlCb3guaGVpZ2h0KCkpOwotICAgIGF1dG8gbWFyZ2luVG9wID0gY29t
cHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5Ub3AoKSwgY29udGFpbmluZ0Jsb2NrRGlz
cGxheUJveC53aWR0aCgpKTsKLSAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gu
d2lkdGgoKSk7CisgICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxl
LmxvZ2ljYWxIZWlnaHQoKSwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKKyAgICBhdXRvIG1hcmdp
blRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luVG9wKCksIGNvbnRhaW5p
bmdCbG9ja1dpZHRoKTsKKyAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKIAogICAg
IC8vICMxCiAgICAgbWFyZ2luVG9wID0gbWFyZ2luVG9wLnZhbHVlX29yKDApOwpAQCAtNTM5LDEy
ICs1NDEsMTIgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW4KICAgICAvLyAyLiBJZiAnd2lkdGgn
IGlzIGNvbXB1dGVkIGFzICdhdXRvJywgdGhlIHVzZWQgdmFsdWUgaXMgdGhlICJzaHJpbmstdG8t
Zml0IiB3aWR0aC4KIAogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3guY29u
dGFpbmluZ0Jsb2NrKCk7Ci0gICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9ICps
YXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayktPmNvbnRlbnRCb3hXaWR0aCgpOwogCiAgICAgLy8g
IzEKICAgICBhdXRvIG1hcmdpbiA9IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdp
blZhbHVlKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiAgICAgICAvLyAjMgotICAgIGF1dG8g
d2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxX
aWR0aCgpLCBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LndpZHRoKCkpOworICAgIGF1dG8gd2lk
dGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxXaWR0
aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgaWYgKCF3aWR0aCkKICAgICAgICAgd2lk
dGggPSBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiAKQEAgLTYz
MSwxMCArNjMzLDEyIEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6SGVpZ2h0QW5kTWFy
Z2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lCiAKICAgICBhdXRvJiBzdHls
ZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVw
bGFjZWQoKTsKLSAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5p
bmdCbG9jaygpOwotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAqbGF5b3V0
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayk7Ci0gICAgYXV0
byBoZWlnaHQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxIZWlnaHQoKSwg
Y29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5oZWlnaHQoKSk7Ci0gICAgYXV0byB3aWR0aCA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9j
a0Rpc3BsYXlCb3gud2lkdGgoKSk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJv
eCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250
YWluaW5nQmxvY2soKSk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWlu
aW5nQmxvY2tEaXNwbGF5Qm94LmhlaWdodCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lk
dGggPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LndpZHRoKCk7CisKKyAgICBhdXRvIGhlaWdo
dCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbEhlaWdodCgpLCBjb250YWlu
aW5nQmxvY2tIZWlnaHQpOworICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAKICAgICBpZiAo
IWhlaWdodCAmJiAhd2lkdGggJiYgcmVwbGFjZWQtPmhhc0ludHJpbnNpY0hlaWdodCgpKSB7CiAg
ICAgICAgIC8vICMyCkBAIC02ODEsMjAgKzY4NSwyMSBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5l
UgogICAgIC8vICAgIElmIDMwMHB4IGlzIHRvbyB3aWRlIHRvIGZpdCB0aGUgZGV2aWNlLCBVQXMg
c2hvdWxkIHVzZSB0aGUgd2lkdGggb2YgdGhlIGxhcmdlc3QgcmVjdGFuZ2xlIHRoYXQgaGFzIGEg
MjoxIHJhdGlvIGFuZCBmaXRzIHRoZSBkZXZpY2UgaW5zdGVhZC4KIAogICAgIGF1dG8mIHN0eWxl
ID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gKmxheW91
dEJveC5jb250YWluaW5nQmxvY2soKTsKLSAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5
Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChjb250YWluaW5nQmxv
Y2spOworICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwor
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJv
eC5oZWlnaHQoKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gY29udGFpbmluZ0Js
b2NrRGlzcGxheUJveC53aWR0aCgpOwogCiAgICAgYXV0byBjb21wdXRlTWFyZ2luUmlnaHQgPSBb
Jl0oKSB7CiAgICAgICAgIGlmIChwcmVjb21wdXRlZE1hcmdpblJpZ2h0KQogICAgICAgICAgICAg
cmV0dXJuIHByZWNvbXB1dGVkTWFyZ2luUmlnaHQudmFsdWUoKTsKLSAgICAgICAgYXV0byBtYXJn
aW5SaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luUmlnaHQoKSwgY29u
dGFpbmluZ0Jsb2NrRGlzcGxheUJveC53aWR0aCgpKTsKKyAgICAgICAgYXV0byBtYXJnaW5SaWdo
dCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luUmlnaHQoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwogICAgICAgICByZXR1cm4gbWFyZ2luUmlnaHQudmFsdWVfb3IoTGF5b3V0
VW5pdCB7IDAgfSk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcHV0ZU1hcmdpbkxlZnQgPSBbJl0o
KSB7CiAgICAgICAgIGlmIChwcmVjb21wdXRlZE1hcmdpbkxlZnQpCiAgICAgICAgICAgICByZXR1
cm4gcHJlY29tcHV0ZWRNYXJnaW5MZWZ0LnZhbHVlKCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luTGVm
dCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luTGVmdCgpLCBjb250YWluaW5n
QmxvY2tEaXNwbGF5Qm94LndpZHRoKCkpOworICAgICAgICBhdXRvIG1hcmdpbkxlZnQgPSBjb21w
dXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkxlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lk
dGgpOwogICAgICAgICByZXR1cm4gbWFyZ2luTGVmdC52YWx1ZV9vcihMYXlvdXRVbml0IHsgMCB9
KTsKICAgICB9OwogCkBAIC03MDIsOCArNzA3LDggQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVIK
ICAgICBMYXlvdXRVbml0IG1hcmdpblJpZ2h0ID0gY29tcHV0ZU1hcmdpblJpZ2h0KCk7CiAKICAg
ICBhdXRvIHJlcGxhY2VkID0gbGF5b3V0Qm94LnJlcGxhY2VkKCk7Ci0gICAgYXV0byBoZWlnaHQg
PSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxIZWlnaHQoKSwgY29udGFpbmlu
Z0Jsb2NrRGlzcGxheUJveC5oZWlnaHQoKSk7Ci0gICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFs
dWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlC
b3gud2lkdGgoKSk7CisgICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0
eWxlLmxvZ2ljYWxIZWlnaHQoKSwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKKyAgICBhdXRvIHdp
ZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwogCiAgICAgQVNTRVJUKHJlcGxhY2VkKTsKIApAQCAtNzQ3LDcgKzc1
Miw3IEBAIHN0ZDo6b3B0aW9uYWw8RGlzcGxheTo6Qm94OjpFZGdlcz4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcoCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29u
dGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPndpZHRoKCk7CisgICAgYXV0byBjb250YWlu
aW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS0+Y29udGVudEJveFdpZHRoKCk7CiAgICAgTE9HX1dJ
VEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQYWRkaW5nXSAt
PiBsYXlvdXRCb3g6ICIgPDwgJmxheW91dEJveCk7CiAgICAgcmV0dXJuIERpc3BsYXk6OkJveDo6
RWRnZXMgewogICAgICAgICB7IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdMZWZ0KCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ1JpZ2h0KCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSB9LApAQCAtNzU4LDcgKzc2Myw3IEBAIHN0ZDo6b3B0aW9u
YWw8RGlzcGxheTo6Qm94OjpFZGdlcz4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21w
dXRlZFBhZGRpbmcoCiBEaXNwbGF5OjpCb3g6Okhvcml6b250YWxFZGdlcyBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVl
KGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94
KQogewogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byBjb250
YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS0+d2lkdGgoKTsKKyAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT5jb250ZW50Qm94V2lkdGgoKTsKIAogICAgIGF1dG8g
bWFyZ2luTGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luTGVmdCgpLCBj
b250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IDAgfSk7CiAgICAgYXV0
byBtYXJnaW5SaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luUmlnaHQo
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKExheW91dFVuaXQgeyAwIH0pOwpAQCAt
NzcwLDcgKzc3NSw3IEBAIERpc3BsYXk6OkJveDo6SG9yaXpvbnRhbEVkZ2VzIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRICiBEaXNwbGF5OjpCb3g6OlZl
cnRpY2FsRWRnZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxh
cHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4
dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3gu
c3R5bGUoKTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0
aCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPmNvbnRlbnRC
b3hXaWR0aCgpOwogCiAgICAgYXV0byBtYXJnaW5Ub3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLm1hcmdpblRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoTGF5b3V0
VW5pdCB7IDAgfSk7CiAgICAgYXV0byBtYXJnaW5Cb3R0b20gPSBjb21wdXRlZFZhbHVlSWZOb3RB
dXRvKHN0eWxlLm1hcmdpbkJvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3Io
TGF5b3V0VW5pdCB7IDAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAK
aW5kZXggOTMwOGIyMDE5Nzc0ODY4OTU1YWIwNTMxNDhiNzE5N2JhMzRlMDViYi4uOTczNzk5ODI0
NDc3NTNhOGUwMmY2NzEwMmZiNmFkMjI3M2RkN2ZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRDb250ZXh0LmNwcApAQCAtNTUsMjMgKzU1LDE1IEBAIHZvaWQgTGF5b3V0Q29udGV4dDo6
aW5pdGlhbGl6ZVJvb3QoY29uc3QgQ29udGFpbmVyJiByb290LCBjb25zdCBMYXlvdXRTaXplJiBj
b250CiAKICAgICBtX3Jvb3QgPSBtYWtlV2Vha1B0cihjb25zdF9jYXN0PENvbnRhaW5lciY+KHJv
b3QpKTsKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gY3JlYXRlRGlzcGxheUJveChyb290KTsKLSAg
ICAvLyBSb290IGlzIGFsd2F5cyBhdCAwIDAgd2l0aCBubyBtYXJnaW4gCi0gICAgZGlzcGxheUJv
eC5zZXRUb3BMZWZ0KHsgfSk7Ci0gICAgZGlzcGxheUJveC5zZXRTaXplKGNvbnRhaW5lclNpemUp
OwotICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOwotICAgIGRpc3BsYXlC
b3guc2V0VmVydGljYWxNYXJnaW4oeyB9KTsKIAotICAgIGF1dG8mIHN0eWxlID0gcm9vdC5zdHls
ZSgpOwogICAgIC8vIEZJWE1FOiBtX3Jvb3QgY291bGQgdmVyeSB3ZWxsIGJlIGEgZm9ybWF0dGlu
ZyBjb250ZXh0IHJvb3Qgd2l0aCBhbmNlc3RvcnMgYW5kIHJlc29sdmFibGUgYm9yZGVyIGFuZCBw
YWRkaW5nIChhcyBvcHBvc2VkIHRvIHRoZSB0b3Btb3N0IHJvb3QpCi0gICAgZGlzcGxheUJveC5z
ZXRCb3JkZXIoewotICAgICAgICB7IHN0eWxlLmJvcmRlckxlZnQoKS5ib3hNb2RlbFdpZHRoKCks
IHN0eWxlLmJvcmRlclJpZ2h0KCkuYm94TW9kZWxXaWR0aCgpIH0sCi0gICAgICAgIHsgc3R5bGUu
Ym9yZGVyVG9wKCkuYm94TW9kZWxXaWR0aCgpLCBzdHlsZS5ib3JkZXJCb3R0b20oKS5ib3hNb2Rl
bFdpZHRoKCkgfQotICAgIH0pOwotCi0gICAgZGlzcGxheUJveC5zZXRQYWRkaW5nKHsKLSAgICAg
ICAgeyB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nTGVmdCgpLCBjb250YWluZXJTaXplLndp
ZHRoKCkpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nUmlnaHQoKSwgY29udGFpbmVyU2l6
ZS53aWR0aCgpKSB9LAotICAgICAgICB7IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdUb3Ao
KSwgY29udGFpbmVyU2l6ZS53aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ0Jv
dHRvbSgpLCBjb250YWluZXJTaXplLndpZHRoKCkpIH0KLSAgICB9KTsKKyAgICBkaXNwbGF5Qm94
LnNldEhvcml6b250YWxNYXJnaW4oeyB9KTsKKyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFy
Z2luKHsgfSk7CisgICAgZGlzcGxheUJveC5zZXRCb3JkZXIoeyB9KTsKKyAgICBkaXNwbGF5Qm94
LnNldFBhZGRpbmcoeyB9KTsKKyAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoY29u
dGFpbmVyU2l6ZS5oZWlnaHQoKSk7CisgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgo
Y29udGFpbmVyU2l6ZS53aWR0aCgpKTsKKyAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoeyB9KTsK
IAogICAgIG1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxheW91dC5hZGQoJnJvb3QpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTBjYmE1MDFiOTI2NWY5ZDlk
YWZmMWNmZjBlMzhmOTljYzgyMjA0MS4uMzEyNWYyNDE0MzFkMzYxNDhkYTFmNjA4MjBhNTQyNTBm
NTliOWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xNzEsNyArMTcx
LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUluRmxvd0hlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250
ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25z
dAogewogICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gR2VvbWV0cnk6OmluRmxvd0hlaWdodEFu
ZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwotICAgIGRpc3BsYXlCb3guc2V0SGVp
Z2h0KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJv
eEhlaWdodChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0
aWNhbGx5KGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udG9wKTsKICAgICBkaXNwbGF5Qm94LnNldFZl
cnRpY2FsTWFyZ2luKGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOwogfQpAQCAtMTc5LDcgKzE3OSw3
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd0hlaWdodEFuZE1h
cmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVJbkZsb3dXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0
LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAog
ewogICAgIGF1dG8gd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJn
aW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKLSAgICBkaXNwbGF5Qm94LnNldFdpZHRoKHdp
ZHRoQW5kTWFyZ2luLndpZHRoKTsKKyAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aCh3
aWR0aEFuZE1hcmdpbi53aWR0aCk7CiAgICAgZGlzcGxheUJveC5tb3ZlSG9yaXpvbnRhbGx5KHdp
ZHRoQW5kTWFyZ2luLm1hcmdpbi5sZWZ0KTsKICAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxN
YXJnaW4od2lkdGhBbmRNYXJnaW4ubWFyZ2luKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA0NWRjYjU0M2Q0YmZjMDk3ZjFhYWU2Y2FhZDI5
YmY4Mzc5NWQ5YTFiLi4xZmYzNGYwZWExZTgxNmNmMzZkNjllNDZmY2JlOTZhMmZhYmZkNDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0xMjAs
NyArMTIwLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4g
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmkKICAgICAgICAgcmV0dXJuIHsgaGVp
Z2h0LCB7IG1hcmdpblRvcCwgbWFyZ2luQm90dG9tIH0gfTsKICAgICB9CiAKLSAgICBhdXRvIGlu
aXRpYWxDb250YWluaW5nQmxvY2tIZWlnaHQgPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS0+Y29udGVudEJveCgp
LmhlaWdodCgpOworICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGxheW91
dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGxh
eW91dEJveCkpLT5jb250ZW50Qm94SGVpZ2h0KCk7CiAgICAgLy8gU3RyZXRjaCBidXQgbmV2ZXIg
b3ZlcnN0cmV0Y2ggd2l0aCB0aGUgbWFyZ2lucy4KICAgICBpZiAoaGVpZ2h0ICsgbWFyZ2luVG9w
ICsgbWFyZ2luQm90dG9tIDwgaW5pdGlhbENvbnRhaW5pbmdCbG9ja0hlaWdodCkKICAgICAgICAg
aGVpZ2h0ID0gaW5pdGlhbENvbnRhaW5pbmdCbG9ja0hlaWdodCAtIG1hcmdpblRvcCAtIG1hcmdp
bkJvdHRvbTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OldpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbgogICAg
ICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgICAgICBhdXRvIHdpZHRo
ID0gcHJlY29tcHV0ZWRXaWR0aCA/IExlbmd0aCB7IHByZWNvbXB1dGVkV2lkdGgudmFsdWUoKSwg
Rml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBhdXRvKiBjb250YWluaW5n
QmxvY2sgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIGF1dG8gY29udGFp
bmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNv
bnRhaW5pbmdCbG9jayktPndpZHRoKCk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lk
dGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9j
ayktPmNvbnRlbnRCb3hXaWR0aCgpOwogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gKmxheW91
dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogCiAgICAgICAgIExh
eW91dFVuaXQgY29tcHV0ZWRXaWR0aFZhbHVlOwpAQCAtMjM0LDcgKzIzNCw3IEBAIEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluCiAgICAgICAgIHJldHVybiB3aWR0aEFuZE1hcmdpbjsKICAgICB9CiAK
LSAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpLT5j
b250ZW50Qm94KCkud2lkdGgoKTsKKyAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2tXaWR0
aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmlu
Z0Jsb2NrKGxheW91dEJveCkpLT5jb250ZW50Qm94V2lkdGgoKTsKICAgICBhdXRvIGhvcml6b250
YWxNYXJnaW5zID0gd2lkdGhBbmRNYXJnaW4ubWFyZ2luLmxlZnQgKyB3aWR0aEFuZE1hcmdpbi5t
YXJnaW4ucmlnaHQ7CiAgICAgLy8gU3RyZXRjaCBidXQgbmV2ZXIgb3ZlcnN0cmV0Y2ggd2l0aCB0
aGUgbWFyZ2lucy4KICAgICBpZiAod2lkdGhBbmRNYXJnaW4ud2lkdGggKyBob3Jpem9udGFsTWFy
Z2lucyA8IGluaXRpYWxDb250YWluaW5nQmxvY2tXaWR0aCkKQEAgLTI3MCwxMCArMjcwLDkgQEAg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpQb3NpdGlvbiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG8KICAgICAvLyBWZXJ0aWNhbCBtYXJnaW5zIGJldHdlZW4g
YWRqYWNlbnQgYmxvY2stbGV2ZWwgYm94ZXMgaW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQg
Y29sbGFwc2UuCiAgICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQsIGVhY2ggYm94
J3MgbGVmdCBvdXRlciBlZGdlIHRvdWNoZXMgdGhlIGxlZnQgZWRnZSBvZiB0aGUgY29udGFpbmlu
ZyBibG9jayAoZm9yIHJpZ2h0LXRvLWxlZnQgZm9ybWF0dGluZywgcmlnaHQgZWRnZXMgdG91Y2gp
LgogCi0gICAgYXV0byBjb250YWluaW5nQmxvY2tDb250ZW50Qm94ID0gbGF5b3V0Q29udGV4dC5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT5jb250
ZW50Qm94KCk7CiAgICAgLy8gU3RhcnQgZnJvbSB0aGUgdG9wIG9mIHRoZSBjb250YWluZXIncyBj
b250ZW50IGJveC4KLSAgICBhdXRvIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3gudG9w
KCk7Ci0gICAgYXV0byBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveC5sZWZ0KCk7Cisg
ICAgTGF5b3V0VW5pdCB0b3AgPSB7IH07CisgICAgTGF5b3V0VW5pdCBsZWZ0ID0geyB9OwogICAg
IGlmIChhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlvdXRCb3gucHJldmlvdXNJbkZs
b3dTaWJsaW5nKCkpIHsKICAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94ID0g
KmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqcHJldmlvdXNJbkZsb3dTaWJs
aW5nKTsKICAgICAgICAgdG9wID0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsg
cHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpOwpAQCAtMjk4LDggKzI5Nyw3
IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6UG9zaXRpb24gQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1BvCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3gu
c3R5bGUoKTsKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICps
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlz
cGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmlu
Z0Jsb2NrKTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gY29udGFpbmluZ0Jsb2Nr
RGlzcGxheUJveC53aWR0aCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlv
dXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKS0+Y29udGVu
dEJveFdpZHRoKCk7CiAKICAgICBhdXRvIHRvcCA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKICAgICBhdXRvIGJvdHRvbSA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5p
bmdCbG9ja1dpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5Qm94LmNwcAppbmRleCA4ODc1OGVkOGJmMWMxY2UzODY1Y2ZhMmZiMmRmM2QyMDM4YjE1
ZDBjLi41MDVkYTI3YjlmNmQzNWI1MjZkYmI2ZDM5N2EyYTZkNGQ4MzUwOWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCkBAIC01Miw2
MyArNTIsNDUgQEAgQm94OjpTdHlsZTo6U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQog
CiBCb3g6OlJlY3QgQm94OjptYXJnaW5Cb3goKSBjb25zdAogewotICAgIEFTU0VSVChtX2hhc1Zh
bGlkSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdp
bik7Ci0gICAgYXV0byBtYXJnaW5Cb3ggPSBib3JkZXJCb3goKTsKLQotICAgIG1hcmdpbkJveC5z
aGlmdExlZnRUbyhtYXJnaW5Cb3gubGVmdCgpIC0gbV9tYXJnaW4uaG9yaXpvbnRhbC5sZWZ0KTsK
LSAgICBtYXJnaW5Cb3guc2hpZnRUb3BUbyhtYXJnaW5Cb3gudG9wKCkgLSBtX21hcmdpbi52ZXJ0
aWNhbC50b3ApOwotICAgIG1hcmdpbkJveC5zaGlmdFJpZ2h0VG8obWFyZ2luQm94LnJpZ2h0KCkg
KyBtX21hcmdpbi5ob3Jpem9udGFsLnJpZ2h0KTsKLSAgICBtYXJnaW5Cb3guc2hpZnRCb3R0b21U
byhtYXJnaW5Cb3guYm90dG9tKCkgKyBtX21hcmdpbi52ZXJ0aWNhbC5ib3R0b20pOworICAgIGF1
dG8gYm9yZGVyQm94ID0gdGhpcy0+Ym9yZGVyQm94KCk7CiAKKyAgICBSZWN0IG1hcmdpbkJveDsK
KyAgICBtYXJnaW5Cb3guc2V0VG9wKGJvcmRlckJveC50b3AoKSAtIG1hcmdpblRvcCgpKTsKKyAg
ICBtYXJnaW5Cb3guc2V0TGVmdChib3JkZXJCb3gubGVmdCgpIC0gbWFyZ2luTGVmdCgpKTsKKyAg
ICBtYXJnaW5Cb3guc2V0SGVpZ2h0KGJvcmRlckJveC5oZWlnaHQoKSArIG1hcmdpblRvcCgpICsg
bWFyZ2luQm90dG9tKCkpOworICAgIG1hcmdpbkJveC5zZXRXaWR0aChib3JkZXJCb3gud2lkdGgo
KSArIG1hcmdpbkxlZnQoKSArIG1hcmdpblJpZ2h0KCkpOwogICAgIHJldHVybiBtYXJnaW5Cb3g7
CiB9CiAKIEJveDo6UmVjdCBCb3g6OmJvcmRlckJveCgpIGNvbnN0CiB7Ci0gICAgYXV0byByZWN0
ID0gbV9yZWN0LmNsb25lKCk7Ci0gICAgcmVjdC5zZXRUb3BMZWZ0KHsgfSk7Ci0KLSAgICBpZiAo
bV9zdHlsZS5ib3hTaXppbmcgPT0gQm94U2l6aW5nOjpCb3JkZXJCb3gpCi0gICAgICAgIHJldHVy
biByZWN0OwotCi0gICAgLy8gV2lkdGggaXMgY29udGVudCBib3guCi0gICAgQVNTRVJUKG1faGFz
VmFsaWRCb3JkZXIpOwotICAgIEFTU0VSVChtX2hhc1ZhbGlkUGFkZGluZyk7Ci0gICAgcmVjdC5l
eHBhbmQoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpICsgYm9y
ZGVyUmlnaHQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkg
KyBib3JkZXJCb3R0b20oKSk7Ci0gICAgcmV0dXJuIHJlY3Q7CisgICAgUmVjdCBib3JkZXJCb3g7
CisgICAgYm9yZGVyQm94LnNldFRvcExlZnQoeyB9KTsKKyAgICBib3JkZXJCb3guc2V0U2l6ZSh7
IHdpZHRoKCksIGhlaWdodCgpIH0pOworICAgIHJldHVybiBib3JkZXJCb3g7CiB9CiAKIEJveDo6
UmVjdCBCb3g6OnBhZGRpbmdCb3goKSBjb25zdAogewotICAgIEFTU0VSVChtX2hhc1ZhbGlkQm9y
ZGVyKTsKLSAgICBhdXRvIHBhZGRpbmdCb3ggPSBib3JkZXJCb3goKTsKLQotICAgIHBhZGRpbmdC
b3guc2hpZnRMZWZ0VG8ocGFkZGluZ0JveC5sZWZ0KCkgKyBtX2JvcmRlci5ob3Jpem9udGFsLmxl
ZnQpOwotICAgIHBhZGRpbmdCb3guc2hpZnRUb3BUbyhwYWRkaW5nQm94LnRvcCgpICsgbV9ib3Jk
ZXIudmVydGljYWwudG9wKTsKLSAgICBwYWRkaW5nQm94LnNoaWZ0UmlnaHRUbyhwYWRkaW5nQm94
LnJpZ2h0KCkgLSBtX2JvcmRlci5ob3Jpem9udGFsLnJpZ2h0KTsKLSAgICBwYWRkaW5nQm94LnNo
aWZ0Qm90dG9tVG8ocGFkZGluZ0JveC5ib3R0b20oKSAtIG1fYm9yZGVyLnZlcnRpY2FsLmJvdHRv
bSk7CisgICAgYXV0byBib3JkZXJCb3ggPSB0aGlzLT5ib3JkZXJCb3goKTsKIAorICAgIFJlY3Qg
cGFkZGluZ0JveDsKKyAgICBwYWRkaW5nQm94LnNldFRvcChib3JkZXJCb3gudG9wKCkgKyBib3Jk
ZXJUb3AoKSk7CisgICAgcGFkZGluZ0JveC5zZXRMZWZ0KGJvcmRlckJveC5sZWZ0KCkgKyBib3Jk
ZXJMZWZ0KCkpOworICAgIHBhZGRpbmdCb3guc2V0SGVpZ2h0KGJvcmRlckJveC5ib3R0b20oKSAt
IGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCkpOworICAgIHBhZGRpbmdCb3guc2V0V2lkdGgo
Ym9yZGVyQm94LndpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpKTsKICAgICBy
ZXR1cm4gcGFkZGluZ0JveDsKIH0KIAogQm94OjpSZWN0IEJveDo6Y29udGVudEJveCgpIGNvbnN0
CiB7Ci0gICAgaWYgKG1fc3R5bGUuYm94U2l6aW5nID09IEJveFNpemluZzo6Q29udGVudEJveCkg
ewotICAgICAgICBhdXRvIHJlY3QgPSBtX3JlY3QuY2xvbmUoKTsKLSAgICAgICAgcmVjdC5zZXRU
b3BMZWZ0KHsgfSk7Ci0gICAgICAgIHJldHVybiByZWN0OwotICAgIH0KLQotICAgIC8vIFdpZHRo
IGlzIGJvcmRlciBib3guCi0gICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKLSAgICBhdXRv
IGNvbnRlbnRCb3ggPSBwYWRkaW5nQm94KCk7Ci0KLSAgICBjb250ZW50Qm94LnNoaWZ0TGVmdFRv
KGNvbnRlbnRCb3gubGVmdCgpICsgbV9wYWRkaW5nLmhvcml6b250YWwubGVmdCk7Ci0gICAgY29u
dGVudEJveC5zaGlmdFRvcFRvKGNvbnRlbnRCb3gudG9wKCkgKyBtX3BhZGRpbmcudmVydGljYWwu
dG9wKTsKLSAgICBjb250ZW50Qm94LnNoaWZ0UmlnaHRUbyhjb250ZW50Qm94LnJpZ2h0KCkgLSBt
X3BhZGRpbmcuaG9yaXpvbnRhbC5yaWdodCk7Ci0gICAgY29udGVudEJveC5zaGlmdEJvdHRvbVRv
KGNvbnRlbnRCb3guYm90dG9tKCkgLSBtX3BhZGRpbmcudmVydGljYWwuYm90dG9tKTsKKyAgICBh
dXRvIHBhZGRpbmdCb3ggPSB0aGlzLT5wYWRkaW5nQm94KCk7CiAKKyAgICBSZWN0IGNvbnRlbnRC
b3g7CisgICAgY29udGVudEJveC5zZXRUb3AocGFkZGluZ0JveC50b3AoKSArIHBhZGRpbmdUb3Ao
KSk7CisgICAgY29udGVudEJveC5zZXRMZWZ0KHBhZGRpbmdCb3gubGVmdCgpICsgcGFkZGluZ0xl
ZnQoKSk7CisgICAgY29udGVudEJveC5zZXRXaWR0aChtX2NvbnRlbnRXaWR0aCk7CisgICAgY29u
dGVudEJveC5zZXRIZWlnaHQobV9jb250ZW50SGVpZ2h0KTsKICAgICByZXR1cm4gY29udGVudEJv
eDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94
LmgKaW5kZXggZWFjZDI2ZjRmMDQ0Y2ViNmEzMTc2NjdlMDk5MzMzMmNlMTI1MWRhZS4uMzU5Yzcy
ZDcwY2JlMThlMDk2MzY3YmM0ODUyYzc0MDU4NzI4YjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCkBAIC0xMTMsMTkgKzExMywxOCBAQCBw
dWJsaWM6CiAKICAgICB+Qm94KCk7CiAKLSAgICBSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3JlY3Q7IH0KKyAgICBMYXlvdXRVbml0IHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdC55
KCk7IH0KKyAgICBMYXlvdXRVbml0IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQueCgp
OyB9CisgICAgTGF5b3V0VW5pdCBib3R0b20oKSBjb25zdCB7IHJldHVybiB0b3AoKSArIGhlaWdo
dCgpOyB9CisgICAgTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxlZnQoKSArIHdp
ZHRoKCk7IH0KIAotICAgIExheW91dFVuaXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnRv
cCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmxlZnQo
KTsgfQotICAgIExheW91dFVuaXQgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRv
bSgpOyB9Ci0gICAgTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdo
dCgpOyB9CisgICAgTGF5b3V0UG9pbnQgdG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVm
dDsgfQorICAgIExheW91dFBvaW50IGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4geyByaWdo
dCgpLCBib3R0b20oKSB9OyB9CiAKLSAgICBMYXlvdXRQb2ludCB0b3BMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LnRvcExlZnQoKTsgfQotICAgIExheW91dFBvaW50IGJvdHRvbVJpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbVJpZ2h0KCk7IH0KLQotICAgIExheW91dFNpemUg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5zaXplKCk7IH0KLSAgICBMYXlvdXRVbml0IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KLSAgICBMYXlvdXRVbml0IGhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorICAgIExheW91dFNpemUg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgd2lkdGgoKSwgaGVpZ2h0KCkgfTsgfQorICAgIExheW91
dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgp
ICsgY29udGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKSArIGJvcmRlclJpZ2h0KCk7IH0K
KyAgICBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpICsgY29udGVudEJveEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVy
Qm90dG9tKCk7IH0KKyAgICBMYXlvdXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiB7IGxlZnQo
KSwgdG9wKCksIHdpZHRoKCksIGhlaWdodCgpIH07IH0KIAogICAgIExheW91dFVuaXQgbWFyZ2lu
VG9wKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Q7CkBAIC0xNDIs
NiArMTQxLDkgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgcGFkZGluZ0JvdHRvbSgpIGNvbnN0
OwogICAgIExheW91dFVuaXQgcGFkZGluZ1JpZ2h0KCkgY29uc3Q7CiAKKyAgICBMYXlvdXRVbml0
IGNvbnRlbnRCb3hIZWlnaHQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hXaWR0
aCgpIGNvbnN0OworCiAgICAgUmVjdCBtYXJnaW5Cb3goKSBjb25zdDsKICAgICBSZWN0IGJvcmRl
ckJveCgpIGNvbnN0OwogICAgIFJlY3QgcGFkZGluZ0JveCgpIGNvbnN0OwpAQCAtMTU2LDE0ICsx
NTgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgQm94U2l6aW5nIGJveFNpemluZyB7IEJveFNpemlu
Zzo6Q29udGVudEJveCB9OwogICAgIH07CiAKLSAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgTGF5
b3V0UG9pbnQmIHRvcExlZnQpIHsgbV9yZWN0LnNldFRvcExlZnQodG9wTGVmdCk7IH0KLSAgICB2
b2lkIHNldFRvcChMYXlvdXRVbml0IHRvcCkgeyBtX3JlY3Quc2V0VG9wKHRvcCk7IH0KLSAgICB2
b2lkIHNldExlZnQoTGF5b3V0VW5pdCBsZWZ0KSB7IG1fcmVjdC5zZXRMZWZ0KGxlZnQpOyB9Ci0g
ICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KExheW91dFVuaXQgb2Zmc2V0KSB7IG1fcmVjdC5tb3Zl
SG9yaXpvbnRhbGx5KG9mZnNldCk7IH0KLSAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KExheW91dFVu
aXQgb2Zmc2V0KSB7IG1fcmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOyB9Ci0gICAgdm9pZCBz
ZXRXaWR0aChMYXlvdXRVbml0IHdpZHRoKSB7IG1fcmVjdC5zZXRXaWR0aCh3aWR0aCk7IH0KLSAg
ICB2b2lkIHNldEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGhl
aWdodCk7IH0KLSAgICB2b2lkIHNldFNpemUoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3Jl
Y3Quc2V0U2l6ZShzaXplKTsgfQorICAgIHZvaWQgc2V0VG9wTGVmdChjb25zdCBMYXlvdXRQb2lu
dCYgdG9wTGVmdCkgeyBtX3RvcExlZnQgPSB0b3BMZWZ0OyB9CisgICAgdm9pZCBzZXRUb3AoTGF5
b3V0VW5pdCB0b3ApIHsgbV90b3BMZWZ0LnNldFkodG9wKTsgfQorICAgIHZvaWQgc2V0TGVmdChM
YXlvdXRVbml0IGxlZnQpIHsgbV90b3BMZWZ0LnNldFgobGVmdCk7IH0KKyAgICB2b2lkIG1vdmVI
b3Jpem9udGFsbHkoTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV90b3BMZWZ0Lm1vdmUob2Zmc2V0LCB7
IH0pOyB9CisgICAgdm9pZCBtb3ZlVmVydGljYWxseShMYXlvdXRVbml0IG9mZnNldCkgeyBtX3Rv
cExlZnQubW92ZSh7IH0sIG9mZnNldCk7IH0KKworICAgIHZvaWQgc2V0Q29udGVudEJveEhlaWdo
dChMYXlvdXRVbml0KTsKKyAgICB2b2lkIHNldENvbnRlbnRCb3hXaWR0aChMYXlvdXRVbml0KTsK
IAogICAgIHN0cnVjdCBIb3Jpem9udGFsRWRnZXMgewogICAgICAgICBMYXlvdXRVbml0IGxlZnQ7
CkBAIC0xOTUsMTEgKzE5NywxNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRIYXNWYWxpZEJv
cmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IHRydWU7IH0KICAgICB2b2lkIHNldEhhc1ZhbGlk
UGFkZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcgPSB0cnVlOyB9CisKKyAgICB2b2lkIHNldEhh
c1ZhbGlkQ29udGVudEhlaWdodCgpIHsgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQgPSB0cnVlOyB9
CisgICAgdm9pZCBzZXRIYXNWYWxpZENvbnRlbnRXaWR0aCgpIHsgbV9oYXNWYWxpZENvbnRlbnRX
aWR0aCA9IHRydWU7IH0KICNlbmRpZgogCiAgICAgY29uc3QgU3R5bGUgbV9zdHlsZTsKIAotICAg
IFJlY3QgbV9yZWN0OworICAgIExheW91dFBvaW50IG1fdG9wTGVmdDsKKyAgICBMYXlvdXRVbml0
IG1fY29udGVudFdpZHRoOworICAgIExheW91dFVuaXQgbV9jb250ZW50SGVpZ2h0OwogCiAgICAg
RWRnZXMgbV9tYXJnaW47CiAgICAgRWRnZXMgbV9ib3JkZXI7CkBAIC0yMTAsNiArMjE3LDggQEAg
cHJpdmF0ZToKICAgICBib29sIG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbiB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2hhc1ZhbGlkQm9yZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRQ
YWRkaW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmFsaWRDb250ZW50SGVpZ2h0IHsgZmFs
c2UgfTsKKyAgICBib29sIG1faGFzVmFsaWRDb250ZW50V2lkdGggeyBmYWxzZSB9OwogI2VuZGlm
CiB9OwogCkBAIC00MDIsNiArNDExLDM0IEBAIGlubGluZSBCb3g6OlJlY3Q6Om9wZXJhdG9yIExh
eW91dFJlY3QoKSBjb25zdAogICAgIHJldHVybiBtX3JlY3Q7CiB9CiAKK2lubGluZSB2b2lkIEJv
eDo6c2V0Q29udGVudEJveEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkKK3sgCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorICAgIHNldEhhc1ZhbGlkQ29udGVudEhlaWdodCgpOworI2VuZGlmCisgICAg
bV9jb250ZW50SGVpZ2h0ID0gaGVpZ2h0OworfQorCitpbmxpbmUgdm9pZCBCb3g6OnNldENvbnRl
bnRCb3hXaWR0aChMYXlvdXRVbml0IHdpZHRoKQoreyAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgc2V0SGFzVmFsaWRDb250ZW50V2lkdGgoKTsKKyNlbmRpZgorICAgIG1fY29udGVudFdpZHRo
ID0gd2lkdGg7Cit9CisKK2lubGluZSBMYXlvdXRVbml0IEJveDo6Y29udGVudEJveEhlaWdodCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRDb250ZW50SGVpZ2h0KTsKKyAgICByZXR1
cm4gbV9jb250ZW50SGVpZ2h0OworfQorCitpbmxpbmUgTGF5b3V0VW5pdCBCb3g6OmNvbnRlbnRC
b3hXaWR0aCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRDb250ZW50V2lkdGgpOwor
ICAgIHJldHVybiBtX2NvbnRlbnRXaWR0aDsKK30KKwogaW5saW5lIHZvaWQgQm94OjpzZXRIb3Jp
em9udGFsTWFyZ2luKEhvcml6b250YWxFZGdlcyBtYXJnaW4pCiB7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342891</attachid>
            <date>2018-06-16 14:46:50 -0700</date>
            <delta_ts>2018-06-17 09:37:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186744-20180616144649.patch</filename>
            <type>text/plain</type>
            <size>35290</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNlNTFiY2VjYzExMmVh
MjNmMWM0OTg4OGY5MTkxZDZiODA5MjU1ZC4uMDZiNDBjNDNlYTI1ZGI4ZWQ2YmZiNzU4MmFmZTNm
ZmMwYTc2YTBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTA2LTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gRGlzcGxheUJveCBB
UEkgc2hvdWxkIGJlIG1vcmUgY2xlYXIgYWJvdXQgaGVpZ2h0L3dpZHRoIHZzLiBjb250ZW50Qm94
SGVpZ2h0L3dpZHRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODY3NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEaXNwbGF5OjpCb3g6OmhlaWdodC93aWR0aCAtPiBib3JkZXIgYm94IHNpemUuCisgICAg
ICAgIERpc3BsYXk6OkJveDo6Y29udGVudEJveEhlaWdodC93aWR0aCAtPiBjb250ZW50IGJveCBz
aXplLgorICAgICAgICBEaXNwbGF5OjpCb3g6OnRvcC9sZWZ0L2JvdHRvbS9yaWdodCAtPiBib3Jk
ZXIgYm94IHBvc2l0aW9uIGluIHRoZSBjb250YWluaW5nIGJveCdzIGNvb3JkaW5hdGUgc3lzdGVt
LgorICAgICAgICBEaXNwbGF5OjpCb3g6Om1hcmdpbkJveC9ib3JkZXJCb3gvcGFkZGluZ0JveC9j
b250ZW50Qm94IC0+IHJlbGF0aXZlIHRvIGJvcmRlciBib3ggKGJvcmRlciBib3ggaXMgeyAwLCAw
IH0pCisgCisgICAgICAgIChUaGlzIHBhdGNoIGFsc28gcmVtb3ZlcyB0aGUgYm94LXNpemluZyBs
b2dpYyBmcm9tIERpc3BsYXk6OkJveC4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IHNob3Vs
ZCBzZXQgdGhlCisgICAgICAgIGNvcnJlY3QgY29udGVudEJveFNpemUvYm9yZGVyQm94U2l6ZSBi
YXNlZCBvbiB0aGUgQ1NTIHByb3BlcnR5LikKKworICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlRmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nV2lkdGhBbmRNYXJn
aW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxH
ZW9tZXRyeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0Ojp2YWxpZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNBZnRlckxheW91dCBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJl
cGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0
cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
bGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
Ojpjb21wdXRlZFBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUpOgorICAgICAgICAq
IGxheW91dC9MYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5
b3V0Q29udGV4dDo6aW5pdGlhbGl6ZVJvb3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbkZsb3dIZWlnaHRBbmRNYXJnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlSW5GbG93V2lkdGhBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAqIGxheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
Rmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBv
c2l0aW9uKToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Om1hcmdpbkJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmJvcmRlckJveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OnBhZGRpbmdCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Qm94Ojpjb250ZW50Qm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojp0b3Ag
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpsZWZ0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6Ym90dG9tIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6cmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94Ojp0b3BMZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6Ym90dG9tUmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpz
aXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6d2lkdGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpoZWlnaHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6c2V0VG9wTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6OnNldFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldExlZnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojptb3ZlSG9yaXpvbnRhbGx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6bW92ZVZlcnRpY2FsbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94OjpzZXRIYXNWYWxpZENvbnRlbnRIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRIYXNWYWxpZENvbnRlbnRXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldENvbnRlbnRCb3hIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRDb250ZW50Qm94V2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94Ojpjb250ZW50Qm94SGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6Y29udGVudEJveFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0V2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6Qm94OjpzZXRIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Qm94OjpzZXRTaXplKTogRGVsZXRlZC4KKwogMjAxOC0wNi0xNSAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEZpeCBzdGF0aWMgcG9zaXRp
b24gbGVmdC90b3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IDJmOTViYWI4NWJiMDNmMTRkNjA2MDEwYjI5YzBjYmRkMmM5ZDM3MDIuLjQzYmEyN2E1
YmVmNDVkMmNjMzhiNTg3NDc1NDk5OGE2NWI3YTBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBGb3JtYXR0aW5nQ29u
dGV4dDo6fkZvcm1hdHRpbmdDb250ZXh0KCkKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVGbG9hdGluZ0hlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBj
b25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAogewog
ICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gR2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0QW5kTWFy
Z2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7Ci0gICAgZGlzcGxheUJveC5zZXRIZWlnaHQo
aGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7CisgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVp
Z2h0KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwogICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2Fs
bHkoaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi50b3ApOwogICAgIGRpc3BsYXlCb3guc2V0VmVydGlj
YWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7CiB9CkBAIC02Miw3ICs2Miw3IEBAIHZv
aWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdGluZ0hlaWdodEFuZE1hcmdpbihMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250CiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxv
YXRpbmdXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBC
b3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAogewogICAgIGF1
dG8gd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihsYXlv
dXRDb250ZXh0LCBsYXlvdXRCb3gpOwotICAgIGRpc3BsYXlCb3guc2V0V2lkdGgod2lkdGhBbmRN
YXJnaW4ud2lkdGgpOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKHdpZHRoQW5k
TWFyZ2luLndpZHRoKTsKICAgICBkaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHkod2lkdGhBbmRN
YXJnaW4ubWFyZ2luLmxlZnQpOwogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih3
aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwogfQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEZvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRl
eHQmIGxheW91dAogewogICAgIGF1dG8gaG9yaXpvbnRhbEdlb21ldHJ5ID0gR2VvbWV0cnk6Om91
dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogICAg
IGRpc3BsYXlCb3guc2V0TGVmdChob3Jpem9udGFsR2VvbWV0cnkubGVmdCk7Ci0gICAgZGlzcGxh
eUJveC5zZXRXaWR0aChob3Jpem9udGFsR2VvbWV0cnkud2lkdGhBbmRNYXJnaW4ud2lkdGgpOwor
ICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGhvcml6b250YWxHZW9tZXRyeS53aWR0
aEFuZE1hcmdpbi53aWR0aCk7CiAgICAgQVNTRVJUKGhvcml6b250YWxHZW9tZXRyeS5sZWZ0ICsg
aG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLndpZHRoID09IGhvcml6b250YWxHZW9t
ZXRyeS5yaWdodCk7CiAgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6b250
YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwogfQpAQCAtODAsNyArODAsNyBAQCB2
b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShM
YXlvdXRDb250ZXh0JiBsYXlvdXRDbwogewogICAgIGF1dG8gdmVydGljYWxHZW9tZXRyeSA9IEdl
b21ldHJ5OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGxheW91dENvbnRleHQsIGxheW91dEJv
eCk7CiAgICAgZGlzcGxheUJveC5zZXRUb3AodmVydGljYWxHZW9tZXRyeS50b3ApOwotICAgIGRp
c3BsYXlCb3guc2V0SGVpZ2h0KHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLmhlaWdo
dCk7CisgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KHZlcnRpY2FsR2VvbWV0cnku
aGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7CiAgICAgQVNTRVJUKHZlcnRpY2FsR2VvbWV0cnkudG9w
ICsgdmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID09IHZlcnRpY2FsR2Vv
bWV0cnkuYm90dG9tKTsKICAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2Fs
R2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7CiB9CkBAIC0xNDQsOSArMTQ0LDkgQEAg
dm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6dmFsaWRhdGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJM
YXlvdXQoY29uc3QgTGF5b3V0Q29udGUKICAgICBmb3IgKGF1dG8mIGxheW91dEJveCA6IGRlc2Nl
bmRhbnRzT2ZUeXBlPEJveD4oZm9ybWF0dGluZ0NvbnRleHRSb290KSkgewogICAgICAgICBpZiAo
JmxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSAhPSAmZm9ybWF0dGluZ0NvbnRleHRS
b290KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8qIGNvbnRhaW5pbmdCbG9j
ayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgQVNTRVJUKGNvbnRhaW5p
bmdCbG9jayk7Ci0gICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrU2l6ZSA9IGxheW91dENvbnRl
eHQuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKS0+c2l6ZSgpOworICAg
ICAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICAg
ICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94
LmNvbnRlbnRCb3hIZWlnaHQoKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9
IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3guY29udGVudEJveFdpZHRoKCk7CiAgICAgICAgIGF1
dG8qIGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5
b3V0Qm94KTsKICAgICAgICAgQVNTRVJUKGRpc3BsYXlCb3gpOwogCkBAIC0xNTQsMTUgKzE1NCwx
NSBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdlb21ldHJ5Q29uc3RyYWludHNB
ZnRlckxheW91dChjb25zdCBMYXlvdXRDb250ZQogICAgICAgICAvLyAxMC4zLjcgQWJzb2x1dGVs
eSBwb3NpdGlvbmVkLCBub24tcmVwbGFjZWQgZWxlbWVudHMKICAgICAgICAgaWYgKChsYXlvdXRC
b3guaXNCbG9ja0xldmVsQm94KCkgfHwgbGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpIHsKICAgICAgICAgICAgIC8vIG1hcmdpbi1sZWZ0
ICsgYm9yZGVyLWxlZnQtd2lkdGggKyBwYWRkaW5nLWxlZnQgKyB3aWR0aCArIHBhZGRpbmctcmln
aHQgKyBib3JkZXItcmlnaHQtd2lkdGggKyBtYXJnaW4tcmlnaHQgPSB3aWR0aCBvZiBjb250YWlu
aW5nIGJsb2NrCi0gICAgICAgICAgICBBU1NFUlQoZGlzcGxheUJveC0+bWFyZ2luTGVmdCgpICsg
ZGlzcGxheUJveC0+Ym9yZGVyTGVmdCgpICsgZGlzcGxheUJveC0+cGFkZGluZ0xlZnQoKSArIGRp
c3BsYXlCb3gtPndpZHRoKCkKLSAgICAgICAgICAgICAgICArIGRpc3BsYXlCb3gtPnBhZGRpbmdS
aWdodCgpICsgZGlzcGxheUJveC0+Ym9yZGVyUmlnaHQoKSArIGRpc3BsYXlCb3gtPm1hcmdpblJp
Z2h0KCkgPT0gY29udGFpbmluZ0Jsb2NrU2l6ZS53aWR0aCgpKTsKKyAgICAgICAgICAgIEFTU0VS
VChkaXNwbGF5Qm94LT5tYXJnaW5MZWZ0KCkgKyBkaXNwbGF5Qm94LT5ib3JkZXJMZWZ0KCkgKyBk
aXNwbGF5Qm94LT5wYWRkaW5nTGVmdCgpICsgZGlzcGxheUJveC0+Y29udGVudEJveFdpZHRoKCkK
KyAgICAgICAgICAgICAgICArIGRpc3BsYXlCb3gtPnBhZGRpbmdSaWdodCgpICsgZGlzcGxheUJv
eC0+Ym9yZGVyUmlnaHQoKSArIGRpc3BsYXlCb3gtPm1hcmdpblJpZ2h0KCkgPT0gY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gMTAuNi40IEFic29sdXRlbHkg
cG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAgICAgIGlmIChsYXlvdXRCb3gu
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNlZCgpKSB7CiAgICAg
ICAgICAgICAvLyB0b3AgKyBtYXJnaW4tdG9wICsgYm9yZGVyLXRvcC13aWR0aCArIHBhZGRpbmct
dG9wICsgaGVpZ2h0ICsgcGFkZGluZy1ib3R0b20gKyBib3JkZXItYm90dG9tLXdpZHRoICsgbWFy
Z2luLWJvdHRvbSArIGJvdHRvbSA9IGhlaWdodCBvZiBjb250YWluaW5nIGJsb2NrCi0gICAgICAg
ICAgICBBU1NFUlQoZGlzcGxheUJveC0+dG9wKCkgKyBkaXNwbGF5Qm94LT5tYXJnaW5Ub3AoKSAr
IGRpc3BsYXlCb3gtPmJvcmRlclRvcCgpICsgZGlzcGxheUJveC0+cGFkZGluZ1RvcCgpCi0gICAg
ICAgICAgICAgICAgKyBkaXNwbGF5Qm94LT5wYWRkaW5nQm90dG9tKCkgKyBkaXNwbGF5Qm94LT5i
b3JkZXJCb3R0b20oKSArIGRpc3BsYXlCb3gtPm1hcmdpbkJvdHRvbSgpID09IGNvbnRhaW5pbmdC
bG9ja1NpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgQVNTRVJUKGRpc3BsYXlCb3gtPnRvcCgp
ICsgZGlzcGxheUJveC0+bWFyZ2luVG9wKCkgKyBkaXNwbGF5Qm94LT5ib3JkZXJUb3AoKSArIGRp
c3BsYXlCb3gtPnBhZGRpbmdUb3AoKSArIGRpc3BsYXlCb3gtPmNvbnRlbnRCb3hIZWlnaHQoKQor
ICAgICAgICAgICAgICAgICsgZGlzcGxheUJveC0+cGFkZGluZ0JvdHRvbSgpICsgZGlzcGxheUJv
eC0+Ym9yZGVyQm90dG9tKCkgKyBkaXNwbGF5Qm94LT5tYXJnaW5Cb3R0b20oKSA9PSBjb250YWlu
aW5nQmxvY2tIZWlnaHQpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDY0NDNjMDll
Mzc0YzQ1NGViNDA2Y2Y0ZmY5NmUwMDkxNDM4NzYyM2YuLmM3Njg0Mzk5NWFmNTY2YTZlYmUzMzM4
OWVjNDlmOGYwNzdhM2Y4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Okhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dAogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAg
YXV0byYgZGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KTsKICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250
ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKS0+d2lkdGgoKTsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayktPmNvbnRlbnRCb3hXaWR0aCgpOwogICAgIGF1dG8g
aXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKTsKICAgICAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTM0
OSw5ICszNDksOSBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OlZlcnRpY2FsR2VvbWV0
cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZgogCiAgICAgYXV0byYgc3R5bGUg
PSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gKmxheW91dENvbnRl
eHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwotICAgIGF1dG8mIGNvbnRhaW5p
bmdCbG9jayA9ICpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgYXV0byBjb250YWlu
aW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChjb250
YWluaW5nQmxvY2spLT53aWR0aCgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0g
bGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayktPmhl
aWdodCgpOworICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAqbGF5b3V0Q29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkp
OworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxh
eUJveC5oZWlnaHQoKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gY29udGFpbmlu
Z0Jsb2NrRGlzcGxheUJveC53aWR0aCgpOwogCiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAg
IGF1dG8gYm90dG9tID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9t
KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Okhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dAogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAg
YXV0byYgZGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KTsKICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250
ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKS0+d2lkdGgoKTsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayktPmNvbnRlbnRCb3hXaWR0aCgpOwogICAgIGF1dG8g
aXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKTsKIAogICAgIGF1dG8gbGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubG9naWNhbExlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwpAQCAtNTEzLDEw
ICs1MTMsMTIgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4g
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGkKICAgICBhdXRvJiBzdHlsZSA9IGxh
eW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9
ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsK
KyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlC
b3guY29udGVudEJveEhlaWdodCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBj
b250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwogCi0gICAgYXV0byBo
ZWlnaHQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxIZWlnaHQoKSwgY29u
dGFpbmluZ0Jsb2NrRGlzcGxheUJveC5oZWlnaHQoKSk7Ci0gICAgYXV0byBtYXJnaW5Ub3AgPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblRvcCgpLCBjb250YWluaW5nQmxvY2tE
aXNwbGF5Qm94LndpZHRoKCkpOwotICAgIGF1dG8gbWFyZ2luQm90dG9tID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5Cb3R0b20oKSwgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJv
eC53aWR0aCgpKTsKKyAgICBhdXRvIGhlaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubG9naWNhbEhlaWdodCgpLCBjb250YWluaW5nQmxvY2tIZWlnaHQpOworICAgIGF1dG8gbWFy
Z2luVG9wID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5Ub3AoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gbWFyZ2luQm90dG9tID0gY29tcHV0ZWRWYWx1ZUlm
Tm90QXV0byhzdHlsZS5tYXJnaW5Cb3R0b20oKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogCiAg
ICAgLy8gIzEKICAgICBtYXJnaW5Ub3AgPSBtYXJnaW5Ub3AudmFsdWVfb3IoMCk7CkBAIC01Mzks
MTIgKzU0MSwxMiBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbgogICAgIC8vIDIuIElmICd3aWR0
aCcgaXMgY29tcHV0ZWQgYXMgJ2F1dG8nLCB0aGUgdXNlZCB2YWx1ZSBpcyB0aGUgInNocmluay10
by1maXQiIHdpZHRoLgogCiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5j
b250YWluaW5nQmxvY2soKTsKLSAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0g
KmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChjb250YWluaW5nQmxvY2spOwor
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKS0+Y29udGVudEJveFdpZHRoKCk7CiAKICAgICAv
LyAjMQogICAgIGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFy
Z2luVmFsdWUobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKICAgICAgIC8vICMyCi0gICAgYXV0
byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9naWNh
bFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gud2lkdGgoKSk7CisgICAgYXV0byB3
aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbFdp
ZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBpZiAoIXdpZHRoKQogICAgICAgICB3
aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIApAQCAt
NjMxLDEwICs2MzMsMTIgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRN
YXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmUKIAogICAgIGF1dG8mIHN0
eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byByZXBsYWNlZCA9IGxheW91dEJveC5y
ZXBsYWNlZCgpOwotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCk7Ci0gICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9ICpsYXlv
dXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsKLSAgICBh
dXRvIGhlaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbEhlaWdodCgp
LCBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmhlaWdodCgpKTsKLSAgICBhdXRvIHdpZHRoID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmluZ0Js
b2NrRGlzcGxheUJveC53aWR0aCgpKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5
Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNv
bnRhaW5pbmdCbG9jaygpKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnRh
aW5pbmdCbG9ja0Rpc3BsYXlCb3guaGVpZ2h0KCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tX
aWR0aCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gud2lkdGgoKTsKKworICAgIGF1dG8gaGVp
Z2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsSGVpZ2h0KCksIGNvbnRh
aW5pbmdCbG9ja0hlaWdodCk7CisgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKIAogICAgIGlm
ICghaGVpZ2h0ICYmICF3aWR0aCAmJiByZXBsYWNlZC0+aGFzSW50cmluc2ljSGVpZ2h0KCkpIHsK
ICAgICAgICAgLy8gIzIKQEAgLTY4MSwyMCArNjg1LDIxIEBAIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojppbmxp
bmVSCiAgICAgLy8gICAgSWYgMzAwcHggaXMgdG9vIHdpZGUgdG8gZml0IHRoZSBkZXZpY2UsIFVB
cyBzaG91bGQgdXNlIHRoZSB3aWR0aCBvZiB0aGUgbGFyZ2VzdCByZWN0YW5nbGUgdGhhdCBoYXMg
YSAyOjEgcmF0aW8gYW5kIGZpdHMgdGhlIGRldmljZSBpbnN0ZWFkLgogCiAgICAgYXV0byYgc3R5
bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3Bs
YXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdC
bG9jayk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9ICpsYXlvdXRDb250
ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7
CisgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tEaXNwbGF5
Qm94LmhlaWdodCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5n
QmxvY2tEaXNwbGF5Qm94LndpZHRoKCk7CiAKICAgICBhdXRvIGNvbXB1dGVNYXJnaW5SaWdodCA9
IFsmXSgpIHsKICAgICAgICAgaWYgKHByZWNvbXB1dGVkTWFyZ2luUmlnaHQpCiAgICAgICAgICAg
ICByZXR1cm4gcHJlY29tcHV0ZWRNYXJnaW5SaWdodC52YWx1ZSgpOwotICAgICAgICBhdXRvIG1h
cmdpblJpZ2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5SaWdodCgpLCBj
b250YWluaW5nQmxvY2tEaXNwbGF5Qm94LndpZHRoKCkpOworICAgICAgICBhdXRvIG1hcmdpblJp
Z2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5SaWdodCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7CiAgICAgICAgIHJldHVybiBtYXJnaW5SaWdodC52YWx1ZV9vcihMYXlv
dXRVbml0IHsgMCB9KTsKICAgICB9OwogCiAgICAgYXV0byBjb21wdXRlTWFyZ2luTGVmdCA9IFsm
XSgpIHsKICAgICAgICAgaWYgKHByZWNvbXB1dGVkTWFyZ2luTGVmdCkKICAgICAgICAgICAgIHJl
dHVybiBwcmVjb21wdXRlZE1hcmdpbkxlZnQudmFsdWUoKTsKLSAgICAgICAgYXV0byBtYXJnaW5M
ZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5MZWZ0KCksIGNvbnRhaW5p
bmdCbG9ja0Rpc3BsYXlCb3gud2lkdGgoKSk7CisgICAgICAgIGF1dG8gbWFyZ2luTGVmdCA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luTGVmdCgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCk7CiAgICAgICAgIHJldHVybiBtYXJnaW5MZWZ0LnZhbHVlX29yKExheW91dFVuaXQgeyAw
IH0pOwogICAgIH07CiAKQEAgLTcwMiw4ICs3MDcsOCBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5l
UgogICAgIExheW91dFVuaXQgbWFyZ2luUmlnaHQgPSBjb21wdXRlTWFyZ2luUmlnaHQoKTsKIAog
ICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsKLSAgICBhdXRvIGhlaWdo
dCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbEhlaWdodCgpLCBjb250YWlu
aW5nQmxvY2tEaXNwbGF5Qm94LmhlaWdodCgpKTsKLSAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRW
YWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrRGlzcGxh
eUJveC53aWR0aCgpKTsKKyAgICBhdXRvIGhlaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8o
c3R5bGUubG9naWNhbEhlaWdodCgpLCBjb250YWluaW5nQmxvY2tIZWlnaHQpOworICAgIGF1dG8g
d2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCk7CiAKICAgICBBU1NFUlQocmVwbGFjZWQpOwogCkBAIC03NDcsNyAr
NzUyLDcgQEAgc3RkOjpvcHRpb25hbDxEaXNwbGF5OjpCb3g6OkVkZ2VzPiBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZygKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byBj
b250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS0+d2lkdGgoKTsKKyAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCps
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT5jb250ZW50Qm94V2lkdGgoKTsKICAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1BhZGRpbmdd
IC0+IGxheW91dEJveDogIiA8PCAmbGF5b3V0Qm94KTsKICAgICByZXR1cm4gRGlzcGxheTo6Qm94
OjpFZGdlcyB7CiAgICAgICAgIHsgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ0xlZnQoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5nUmlnaHQo
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpIH0sCkBAIC03NTgsNyArNzYzLDcgQEAgc3RkOjpvcHRp
b25hbDxEaXNwbGF5OjpCb3g6OkVkZ2VzPiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkUGFkZGluZygKIERpc3BsYXk6OkJveDo6SG9yaXpvbnRhbEVkZ2VzIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFs
dWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRC
b3gpCiB7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICBhdXRvIGNv
bnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0aCgpOworICAgIGF1dG8gY29udGFp
bmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKSktPmNvbnRlbnRCb3hXaWR0aCgpOwogCiAgICAgYXV0
byBtYXJnaW5MZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5MZWZ0KCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcihMYXlvdXRVbml0IHsgMCB9KTsKICAgICBh
dXRvIG1hcmdpblJpZ2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5SaWdo
dCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IDAgfSk7CkBA
IC03NzAsNyArNzc1LDcgQEAgRGlzcGxheTo6Qm94OjpIb3Jpem9udGFsRWRnZXMgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEgKIERpc3BsYXk6OkJveDo6
VmVydGljYWxFZGdlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29s
bGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250
ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPndp
ZHRoKCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS0+Y29udGVu
dEJveFdpZHRoKCk7CiAKICAgICBhdXRvIG1hcmdpblRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubWFyZ2luVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9vcihMYXlv
dXRVbml0IHsgMCB9KTsKICAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5v
dEF1dG8oc3R5bGUubWFyZ2luQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9v
cihMYXlvdXRVbml0IHsgMCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNw
cAppbmRleCA5MzA4YjIwMTk3NzQ4Njg5NTVhYjA1MzE0OGI3MTk3YmEzNGUwNWJiLi45NzM3OTk4
MjQ0Nzc1M2E4ZTAyZjY3MTAyZmI2YWQyMjczZGQ3ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dENvbnRleHQuY3BwCkBAIC01NSwyMyArNTUsMTUgQEAgdm9pZCBMYXlvdXRDb250ZXh0
Ojppbml0aWFsaXplUm9vdChjb25zdCBDb250YWluZXImIHJvb3QsIGNvbnN0IExheW91dFNpemUm
IGNvbnQKIAogICAgIG1fcm9vdCA9IG1ha2VXZWFrUHRyKGNvbnN0X2Nhc3Q8Q29udGFpbmVyJj4o
cm9vdCkpOwogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBjcmVhdGVEaXNwbGF5Qm94KHJvb3QpOwot
ICAgIC8vIFJvb3QgaXMgYWx3YXlzIGF0IDAgMCB3aXRoIG5vIG1hcmdpbiAKLSAgICBkaXNwbGF5
Qm94LnNldFRvcExlZnQoeyB9KTsKLSAgICBkaXNwbGF5Qm94LnNldFNpemUoY29udGFpbmVyU2l6
ZSk7Ci0gICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHsgfSk7Ci0gICAgZGlzcGxh
eUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IH0pOwogCi0gICAgYXV0byYgc3R5bGUgPSByb290LnN0
eWxlKCk7CiAgICAgLy8gRklYTUU6IG1fcm9vdCBjb3VsZCB2ZXJ5IHdlbGwgYmUgYSBmb3JtYXR0
aW5nIGNvbnRleHQgcm9vdCB3aXRoIGFuY2VzdG9ycyBhbmQgcmVzb2x2YWJsZSBib3JkZXIgYW5k
IHBhZGRpbmcgKGFzIG9wcG9zZWQgdG8gdGhlIHRvcG1vc3Qgcm9vdCkKLSAgICBkaXNwbGF5Qm94
LnNldEJvcmRlcih7Ci0gICAgICAgIHsgc3R5bGUuYm9yZGVyTGVmdCgpLmJveE1vZGVsV2lkdGgo
KSwgc3R5bGUuYm9yZGVyUmlnaHQoKS5ib3hNb2RlbFdpZHRoKCkgfSwKLSAgICAgICAgeyBzdHls
ZS5ib3JkZXJUb3AoKS5ib3hNb2RlbFdpZHRoKCksIHN0eWxlLmJvcmRlckJvdHRvbSgpLmJveE1v
ZGVsV2lkdGgoKSB9Ci0gICAgfSk7Ci0KLSAgICBkaXNwbGF5Qm94LnNldFBhZGRpbmcoewotICAg
ICAgICB7IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdMZWZ0KCksIGNvbnRhaW5lclNpemUu
d2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLnBhZGRpbmdSaWdodCgpLCBjb250YWluZXJT
aXplLndpZHRoKCkpIH0sCi0gICAgICAgIHsgdmFsdWVGb3JMZW5ndGgoc3R5bGUucGFkZGluZ1Rv
cCgpLCBjb250YWluZXJTaXplLndpZHRoKCkpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5wYWRkaW5n
Qm90dG9tKCksIGNvbnRhaW5lclNpemUud2lkdGgoKSkgfQotICAgIH0pOworICAgIGRpc3BsYXlC
b3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOworICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxN
YXJnaW4oeyB9KTsKKyAgICBkaXNwbGF5Qm94LnNldEJvcmRlcih7IH0pOworICAgIGRpc3BsYXlC
b3guc2V0UGFkZGluZyh7IH0pOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChj
b250YWluZXJTaXplLmhlaWdodCgpKTsKKyAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0
aChjb250YWluZXJTaXplLndpZHRoKCkpOworICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdCh7IH0p
OwogCiAgICAgbV9mb3JtYXR0aW5nQ29udGV4dFJvb3RMaXN0Rm9yTGF5b3V0LmFkZCgmcm9vdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhMGNiYTUwMWI5MjY1Zjlk
OWRhZmYxY2ZmMGUzOGY5OWNjODIyMDQxLi4zMTI1ZjI0MTQzMWQzNjE0OGRhMWY2MDgyMGE1NDI1
MGY1OWI5YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE3MSw3ICsx
NzEsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJn
aW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlSW5GbG93SGVpZ2h0QW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNv
bnN0CiB7CiAgICAgYXV0byBoZWlnaHRBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5GbG93SGVpZ2h0
QW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7Ci0gICAgZGlzcGxheUJveC5zZXRI
ZWlnaHQoaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7CisgICAgZGlzcGxheUJveC5zZXRDb250ZW50
Qm94SGVpZ2h0KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwogICAgIGRpc3BsYXlCb3gubW92ZVZl
cnRpY2FsbHkoaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi50b3ApOwogICAgIGRpc3BsYXlCb3guc2V0
VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7CiB9CkBAIC0xNzksNyArMTc5
LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93SGVpZ2h0QW5k
TWFyZ2luKExheW91dENvbnRleHQmIGxheW91dEMKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUluRmxvd1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRl
eHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0
CiB7CiAgICAgYXV0byB3aWR0aEFuZE1hcmdpbiA9IEdlb21ldHJ5OjppbkZsb3dXaWR0aEFuZE1h
cmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwotICAgIGRpc3BsYXlCb3guc2V0V2lkdGgo
d2lkdGhBbmRNYXJnaW4ud2lkdGgpOworICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRo
KHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKICAgICBkaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHko
d2lkdGhBbmRNYXJnaW4ubWFyZ2luLmxlZnQpOwogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRh
bE1hcmdpbih3aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDQ1ZGNiNTQzZDRiZmMwOTdmMWFhZTZjYWFk
MjliZjgzNzk1ZDlhMWIuLjFmZjM0ZjBlYTFlODE2Y2YzNmQ2OWU0NmZjYmU5NmEyZmFiZmQ0NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTEy
MCw3ICsxMjAsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OkhlaWdodEFuZE1hcmdp
biBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aQogICAgICAgICByZXR1cm4geyBo
ZWlnaHQsIHsgbWFyZ2luVG9wLCBtYXJnaW5Cb3R0b20gfSB9OwogICAgIH0KIAotICAgIGF1dG8g
aW5pdGlhbENvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZv
ckxheW91dEJveChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpLT5jb250ZW50Qm94
KCkuaGVpZ2h0KCk7CisgICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gbGF5
b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2so
bGF5b3V0Qm94KSktPmNvbnRlbnRCb3hIZWlnaHQoKTsKICAgICAvLyBTdHJldGNoIGJ1dCBuZXZl
ciBvdmVyc3RyZXRjaCB3aXRoIHRoZSBtYXJnaW5zLgogICAgIGlmIChoZWlnaHQgKyBtYXJnaW5U
b3AgKyBtYXJnaW5Cb3R0b20gPCBpbml0aWFsQ29udGFpbmluZ0Jsb2NrSGVpZ2h0KQogICAgICAg
ICBoZWlnaHQgPSBpbml0aWFsQ29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gbWFyZ2luVG9wIC0gbWFy
Z2luQm90dG9tOwpAQCAtMTU4LDcgKzE1OCw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluCiAg
ICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgICAgIGF1dG8gd2lk
dGggPSBwcmVjb21wdXRlZFdpZHRoID8gTGVuZ3RoIHsgcHJlY29tcHV0ZWRXaWR0aC52YWx1ZSgp
LCBGaXhlZCB9IDogc3R5bGUubG9naWNhbFdpZHRoKCk7CiAgICAgICAgIGF1dG8qIGNvbnRhaW5p
bmdCbG9jayA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgYXV0byBjb250
YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgq
Y29udGFpbmluZ0Jsb2NrKS0+d2lkdGgoKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tX
aWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Js
b2NrKS0+Y29udGVudEJveFdpZHRoKCk7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5
b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKICAgICAgICAg
TGF5b3V0VW5pdCBjb21wdXRlZFdpZHRoVmFsdWU7CkBAIC0yMzQsNyArMjM0LDcgQEAgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW4KICAgICAgICAgcmV0dXJuIHdpZHRoQW5kTWFyZ2luOwogICAgIH0K
IAotICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSkt
PmNvbnRlbnRCb3goKS53aWR0aCgpOworICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dp
ZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWlu
aW5nQmxvY2sobGF5b3V0Qm94KSktPmNvbnRlbnRCb3hXaWR0aCgpOwogICAgIGF1dG8gaG9yaXpv
bnRhbE1hcmdpbnMgPSB3aWR0aEFuZE1hcmdpbi5tYXJnaW4ubGVmdCArIHdpZHRoQW5kTWFyZ2lu
Lm1hcmdpbi5yaWdodDsKICAgICAvLyBTdHJldGNoIGJ1dCBuZXZlciBvdmVyc3RyZXRjaCB3aXRo
IHRoZSBtYXJnaW5zLgogICAgIGlmICh3aWR0aEFuZE1hcmdpbi53aWR0aCArIGhvcml6b250YWxN
YXJnaW5zIDwgaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dpZHRoKQpAQCAtMjcwLDEwICsyNzAsOSBA
QCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OlBvc2l0aW9uIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQbwogICAgIC8vIFZlcnRpY2FsIG1hcmdpbnMgYmV0d2Vl
biBhZGphY2VudCBibG9jay1sZXZlbCBib3hlcyBpbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4
dCBjb2xsYXBzZS4KICAgICAvLyBJbiBhIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCwgZWFjaCBi
b3gncyBsZWZ0IG91dGVyIGVkZ2UgdG91Y2hlcyB0aGUgbGVmdCBlZGdlIG9mIHRoZSBjb250YWlu
aW5nIGJsb2NrIChmb3IgcmlnaHQtdG8tbGVmdCBmb3JtYXR0aW5nLCByaWdodCBlZGdlcyB0b3Vj
aCkuCiAKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3ggPSBsYXlvdXRDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPmNv
bnRlbnRCb3goKTsKICAgICAvLyBTdGFydCBmcm9tIHRoZSB0b3Agb2YgdGhlIGNvbnRhaW5lcidz
IGNvbnRlbnQgYm94LgotICAgIGF1dG8gdG9wID0gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveC50
b3AoKTsKLSAgICBhdXRvIGxlZnQgPSBjb250YWluaW5nQmxvY2tDb250ZW50Qm94LmxlZnQoKTsK
KyAgICBMYXlvdXRVbml0IHRvcCA9IHsgfTsKKyAgICBMYXlvdXRVbml0IGxlZnQgPSB7IH07CiAg
ICAgaWYgKGF1dG8qIHByZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0lu
Rmxvd1NpYmxpbmcoKSkgewogICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gg
PSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1Np
YmxpbmcpOwogICAgICAgICB0b3AgPSBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3guYm90dG9tKCkg
KyBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQm90dG9tKCk7CkBAIC0yOTgsOCArMjk3
LDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpQb3NpdGlvbiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG8KICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOwogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0g
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKLSAgICBhdXRvJiBjb250YWluaW5nQmxvY2tE
aXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChjb250YWlu
aW5nQmxvY2spOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5nQmxv
Y2tEaXNwbGF5Qm94LndpZHRoKCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxh
eW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChjb250YWluaW5nQmxvY2spLT5jb250
ZW50Qm94V2lkdGgoKTsKIAogICAgIGF1dG8gdG9wID0gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3AoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5Ojpjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxCb3R0b20oKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlCb3guY3BwCmluZGV4IDg4NzU4ZWQ4YmYxYzFjZTM4NjVjZmEyZmIyZGYzZDIwMzhi
MTVkMGMuLjUwNWRhMjdiOWY2ZDM1YjUyNmRiYjZkMzk3YTJhNmQ0ZDgzNTA5YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKQEAgLTUy
LDYzICs1Miw0NSBAQCBCb3g6OlN0eWxlOjpTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiAKIEJveDo6UmVjdCBCb3g6Om1hcmdpbkJveCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faGFz
VmFsaWRIb3Jpem9udGFsTWFyZ2luKTsKLSAgICBBU1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFy
Z2luKTsKLSAgICBhdXRvIG1hcmdpbkJveCA9IGJvcmRlckJveCgpOwotCi0gICAgbWFyZ2luQm94
LnNoaWZ0TGVmdFRvKG1hcmdpbkJveC5sZWZ0KCkgLSBtX21hcmdpbi5ob3Jpem9udGFsLmxlZnQp
OwotICAgIG1hcmdpbkJveC5zaGlmdFRvcFRvKG1hcmdpbkJveC50b3AoKSAtIG1fbWFyZ2luLnZl
cnRpY2FsLnRvcCk7Ci0gICAgbWFyZ2luQm94LnNoaWZ0UmlnaHRUbyhtYXJnaW5Cb3gucmlnaHQo
KSArIG1fbWFyZ2luLmhvcml6b250YWwucmlnaHQpOwotICAgIG1hcmdpbkJveC5zaGlmdEJvdHRv
bVRvKG1hcmdpbkJveC5ib3R0b20oKSArIG1fbWFyZ2luLnZlcnRpY2FsLmJvdHRvbSk7CisgICAg
YXV0byBib3JkZXJCb3ggPSB0aGlzLT5ib3JkZXJCb3goKTsKIAorICAgIFJlY3QgbWFyZ2luQm94
OworICAgIG1hcmdpbkJveC5zZXRUb3AoYm9yZGVyQm94LnRvcCgpIC0gbWFyZ2luVG9wKCkpOwor
ICAgIG1hcmdpbkJveC5zZXRMZWZ0KGJvcmRlckJveC5sZWZ0KCkgLSBtYXJnaW5MZWZ0KCkpOwor
ICAgIG1hcmdpbkJveC5zZXRIZWlnaHQoYm9yZGVyQm94LmhlaWdodCgpICsgbWFyZ2luVG9wKCkg
KyBtYXJnaW5Cb3R0b20oKSk7CisgICAgbWFyZ2luQm94LnNldFdpZHRoKGJvcmRlckJveC53aWR0
aCgpICsgbWFyZ2luTGVmdCgpICsgbWFyZ2luUmlnaHQoKSk7CiAgICAgcmV0dXJuIG1hcmdpbkJv
eDsKIH0KIAogQm94OjpSZWN0IEJveDo6Ym9yZGVyQm94KCkgY29uc3QKIHsKLSAgICBhdXRvIHJl
Y3QgPSBtX3JlY3QuY2xvbmUoKTsKLSAgICByZWN0LnNldFRvcExlZnQoeyB9KTsKLQotICAgIGlm
IChtX3N0eWxlLmJveFNpemluZyA9PSBCb3hTaXppbmc6OkJvcmRlckJveCkKLSAgICAgICAgcmV0
dXJuIHJlY3Q7Ci0KLSAgICAvLyBXaWR0aCBpcyBjb250ZW50IGJveC4KLSAgICBBU1NFUlQobV9o
YXNWYWxpZEJvcmRlcik7Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKLSAgICByZWN0
LmV4cGFuZChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBi
b3JkZXJSaWdodCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0b20o
KSArIGJvcmRlckJvdHRvbSgpKTsKLSAgICByZXR1cm4gcmVjdDsKKyAgICBSZWN0IGJvcmRlckJv
eDsKKyAgICBib3JkZXJCb3guc2V0VG9wTGVmdCh7IH0pOworICAgIGJvcmRlckJveC5zZXRTaXpl
KHsgd2lkdGgoKSwgaGVpZ2h0KCkgfSk7CisgICAgcmV0dXJuIGJvcmRlckJveDsKIH0KIAogQm94
OjpSZWN0IEJveDo6cGFkZGluZ0JveCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRC
b3JkZXIpOwotICAgIGF1dG8gcGFkZGluZ0JveCA9IGJvcmRlckJveCgpOwotCi0gICAgcGFkZGlu
Z0JveC5zaGlmdExlZnRUbyhwYWRkaW5nQm94LmxlZnQoKSArIG1fYm9yZGVyLmhvcml6b250YWwu
bGVmdCk7Ci0gICAgcGFkZGluZ0JveC5zaGlmdFRvcFRvKHBhZGRpbmdCb3gudG9wKCkgKyBtX2Jv
cmRlci52ZXJ0aWNhbC50b3ApOwotICAgIHBhZGRpbmdCb3guc2hpZnRSaWdodFRvKHBhZGRpbmdC
b3gucmlnaHQoKSAtIG1fYm9yZGVyLmhvcml6b250YWwucmlnaHQpOwotICAgIHBhZGRpbmdCb3gu
c2hpZnRCb3R0b21UbyhwYWRkaW5nQm94LmJvdHRvbSgpIC0gbV9ib3JkZXIudmVydGljYWwuYm90
dG9tKTsKKyAgICBhdXRvIGJvcmRlckJveCA9IHRoaXMtPmJvcmRlckJveCgpOwogCisgICAgUmVj
dCBwYWRkaW5nQm94OworICAgIHBhZGRpbmdCb3guc2V0VG9wKGJvcmRlckJveC50b3AoKSArIGJv
cmRlclRvcCgpKTsKKyAgICBwYWRkaW5nQm94LnNldExlZnQoYm9yZGVyQm94LmxlZnQoKSArIGJv
cmRlckxlZnQoKSk7CisgICAgcGFkZGluZ0JveC5zZXRIZWlnaHQoYm9yZGVyQm94LmJvdHRvbSgp
IC0gYm9yZGVyVG9wKCkgLSBib3JkZXJCb3R0b20oKSk7CisgICAgcGFkZGluZ0JveC5zZXRXaWR0
aChib3JkZXJCb3gud2lkdGgoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkpOwogICAg
IHJldHVybiBwYWRkaW5nQm94OwogfQogCiBCb3g6OlJlY3QgQm94Ojpjb250ZW50Qm94KCkgY29u
c3QKIHsKLSAgICBpZiAobV9zdHlsZS5ib3hTaXppbmcgPT0gQm94U2l6aW5nOjpDb250ZW50Qm94
KSB7Ci0gICAgICAgIGF1dG8gcmVjdCA9IG1fcmVjdC5jbG9uZSgpOwotICAgICAgICByZWN0LnNl
dFRvcExlZnQoeyB9KTsKLSAgICAgICAgcmV0dXJuIHJlY3Q7Ci0gICAgfQotCi0gICAgLy8gV2lk
dGggaXMgYm9yZGVyIGJveC4KLSAgICBBU1NFUlQobV9oYXNWYWxpZFBhZGRpbmcpOwotICAgIGF1
dG8gY29udGVudEJveCA9IHBhZGRpbmdCb3goKTsKLQotICAgIGNvbnRlbnRCb3guc2hpZnRMZWZ0
VG8oY29udGVudEJveC5sZWZ0KCkgKyBtX3BhZGRpbmcuaG9yaXpvbnRhbC5sZWZ0KTsKLSAgICBj
b250ZW50Qm94LnNoaWZ0VG9wVG8oY29udGVudEJveC50b3AoKSArIG1fcGFkZGluZy52ZXJ0aWNh
bC50b3ApOwotICAgIGNvbnRlbnRCb3guc2hpZnRSaWdodFRvKGNvbnRlbnRCb3gucmlnaHQoKSAt
IG1fcGFkZGluZy5ob3Jpem9udGFsLnJpZ2h0KTsKLSAgICBjb250ZW50Qm94LnNoaWZ0Qm90dG9t
VG8oY29udGVudEJveC5ib3R0b20oKSAtIG1fcGFkZGluZy52ZXJ0aWNhbC5ib3R0b20pOworICAg
IGF1dG8gcGFkZGluZ0JveCA9IHRoaXMtPnBhZGRpbmdCb3goKTsKIAorICAgIFJlY3QgY29udGVu
dEJveDsKKyAgICBjb250ZW50Qm94LnNldFRvcChwYWRkaW5nQm94LnRvcCgpICsgcGFkZGluZ1Rv
cCgpKTsKKyAgICBjb250ZW50Qm94LnNldExlZnQocGFkZGluZ0JveC5sZWZ0KCkgKyBwYWRkaW5n
TGVmdCgpKTsKKyAgICBjb250ZW50Qm94LnNldFdpZHRoKG1fY29udGVudFdpZHRoKTsKKyAgICBj
b250ZW50Qm94LnNldEhlaWdodChtX2NvbnRlbnRIZWlnaHQpOwogICAgIHJldHVybiBjb250ZW50
Qm94OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlC
b3guaAppbmRleCBlYWNkMjZmNGYwNDRjZWI2YTMxNzY2N2UwOTkzMzMyY2UxMjUxZGFlLi4zNTlj
NzJkNzBjYmUxOGUwOTYzNjdiYzQ4NTJjNzQwNTg3MjhiNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKQEAgLTExMywxOSArMTEzLDE4IEBA
IHB1YmxpYzoKIAogICAgIH5Cb3goKTsKIAotICAgIFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjdDsgfQorICAgIExheW91dFVuaXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0
LnkoKTsgfQorICAgIExheW91dFVuaXQgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdC54
KCk7IH0KKyAgICBMYXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHRvcCgpICsgaGVp
Z2h0KCk7IH0KKyAgICBMYXlvdXRVbml0IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGVmdCgpICsg
d2lkdGgoKTsgfQogCi0gICAgTGF5b3V0VW5pdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qu
dG9wKCk7IH0KLSAgICBMYXlvdXRVbml0IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QubGVm
dCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90
dG9tKCk7IH0KLSAgICBMYXlvdXRVbml0IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJp
Z2h0KCk7IH0KKyAgICBMYXlvdXRQb2ludCB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BM
ZWZ0OyB9CisgICAgTGF5b3V0UG9pbnQgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiB7IHJp
Z2h0KCksIGJvdHRvbSgpIH07IH0KIAotICAgIExheW91dFBvaW50IHRvcExlZnQoKSBjb25zdCB7
IHJldHVybiBtX3JlY3QudG9wTGVmdCgpOyB9Ci0gICAgTGF5b3V0UG9pbnQgYm90dG9tUmlnaHQo
KSBjb25zdCB7IHJldHVybiBtX3JlY3QuYm90dG9tUmlnaHQoKTsgfQotCi0gICAgTGF5b3V0U2l6
ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnNpemUoKTsgfQotICAgIExheW91dFVuaXQg
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQotICAgIExheW91dFVuaXQg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CisgICAgTGF5b3V0U2l6
ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyB3aWR0aCgpLCBoZWlnaHQoKSB9OyB9CisgICAgTGF5
b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0
KCkgKyBjb250ZW50Qm94V2lkdGgoKSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyUmlnaHQoKTsg
fQorICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkgKyBjb250ZW50Qm94SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCkgKyBib3Jk
ZXJCb3R0b20oKTsgfQorICAgIExheW91dFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIHsgbGVm
dCgpLCB0b3AoKSwgd2lkdGgoKSwgaGVpZ2h0KCkgfTsgfQogCiAgICAgTGF5b3V0VW5pdCBtYXJn
aW5Ub3AoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdDsKQEAgLTE0
Miw2ICsxNDEsOSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm90dG9tKCkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBwYWRkaW5nUmlnaHQoKSBjb25zdDsKIAorICAgIExheW91dFVu
aXQgY29udGVudEJveEhlaWdodCgpIGNvbnN0OworICAgIExheW91dFVuaXQgY29udGVudEJveFdp
ZHRoKCkgY29uc3Q7CisKICAgICBSZWN0IG1hcmdpbkJveCgpIGNvbnN0OwogICAgIFJlY3QgYm9y
ZGVyQm94KCkgY29uc3Q7CiAgICAgUmVjdCBwYWRkaW5nQm94KCkgY29uc3Q7CkBAIC0xNTYsMTQg
KzE1OCwxNCBAQCBwcml2YXRlOgogICAgICAgICBCb3hTaXppbmcgYm94U2l6aW5nIHsgQm94U2l6
aW5nOjpDb250ZW50Qm94IH07CiAgICAgfTsKIAotICAgIHZvaWQgc2V0VG9wTGVmdChjb25zdCBM
YXlvdXRQb2ludCYgdG9wTGVmdCkgeyBtX3JlY3Quc2V0VG9wTGVmdCh0b3BMZWZ0KTsgfQotICAg
IHZvaWQgc2V0VG9wKExheW91dFVuaXQgdG9wKSB7IG1fcmVjdC5zZXRUb3AodG9wKTsgfQotICAg
IHZvaWQgc2V0TGVmdChMYXlvdXRVbml0IGxlZnQpIHsgbV9yZWN0LnNldExlZnQobGVmdCk7IH0K
LSAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV9yZWN0Lm1v
dmVIb3Jpem9udGFsbHkob2Zmc2V0KTsgfQotICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoTGF5b3V0
VW5pdCBvZmZzZXQpIHsgbV9yZWN0Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7IH0KLSAgICB2b2lk
IHNldFdpZHRoKExheW91dFVuaXQgd2lkdGgpIHsgbV9yZWN0LnNldFdpZHRoKHdpZHRoKTsgfQot
ICAgIHZvaWQgc2V0SGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KSB7IG1fcmVjdC5zZXRIZWlnaHQo
aGVpZ2h0KTsgfQotICAgIHZvaWQgc2V0U2l6ZShjb25zdCBMYXlvdXRTaXplJiBzaXplKSB7IG1f
cmVjdC5zZXRTaXplKHNpemUpOyB9CisgICAgdm9pZCBzZXRUb3BMZWZ0KGNvbnN0IExheW91dFBv
aW50JiB0b3BMZWZ0KSB7IG1fdG9wTGVmdCA9IHRvcExlZnQ7IH0KKyAgICB2b2lkIHNldFRvcChM
YXlvdXRVbml0IHRvcCkgeyBtX3RvcExlZnQuc2V0WSh0b3ApOyB9CisgICAgdm9pZCBzZXRMZWZ0
KExheW91dFVuaXQgbGVmdCkgeyBtX3RvcExlZnQuc2V0WChsZWZ0KTsgfQorICAgIHZvaWQgbW92
ZUhvcml6b250YWxseShMYXlvdXRVbml0IG9mZnNldCkgeyBtX3RvcExlZnQubW92ZShvZmZzZXQs
IHsgfSk7IH0KKyAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KExheW91dFVuaXQgb2Zmc2V0KSB7IG1f
dG9wTGVmdC5tb3ZlKHsgfSwgb2Zmc2V0KTsgfQorCisgICAgdm9pZCBzZXRDb250ZW50Qm94SGVp
Z2h0KExheW91dFVuaXQpOworICAgIHZvaWQgc2V0Q29udGVudEJveFdpZHRoKExheW91dFVuaXQp
OwogCiAgICAgc3RydWN0IEhvcml6b250YWxFZGdlcyB7CiAgICAgICAgIExheW91dFVuaXQgbGVm
dDsKQEAgLTE5NSwxMSArMTk3LDE2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEhhc1ZhbGlk
Qm9yZGVyKCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0SGFzVmFs
aWRQYWRkaW5nKCkgeyBtX2hhc1ZhbGlkUGFkZGluZyA9IHRydWU7IH0KKworICAgIHZvaWQgc2V0
SGFzVmFsaWRDb250ZW50SGVpZ2h0KCkgeyBtX2hhc1ZhbGlkQ29udGVudEhlaWdodCA9IHRydWU7
IH0KKyAgICB2b2lkIHNldEhhc1ZhbGlkQ29udGVudFdpZHRoKCkgeyBtX2hhc1ZhbGlkQ29udGVu
dFdpZHRoID0gdHJ1ZTsgfQogI2VuZGlmCiAKICAgICBjb25zdCBTdHlsZSBtX3N0eWxlOwogCi0g
ICAgUmVjdCBtX3JlY3Q7CisgICAgTGF5b3V0UG9pbnQgbV90b3BMZWZ0OworICAgIExheW91dFVu
aXQgbV9jb250ZW50V2lkdGg7CisgICAgTGF5b3V0VW5pdCBtX2NvbnRlbnRIZWlnaHQ7CiAKICAg
ICBFZGdlcyBtX21hcmdpbjsKICAgICBFZGdlcyBtX2JvcmRlcjsKQEAgLTIxMCw2ICsyMTcsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faGFzVmFsaWRCb3JkZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxp
ZFBhZGRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRXaWR0aCB7IGZhbHNlIH07CiAjZW5k
aWYKIH07CiAKQEAgLTQwMiw2ICs0MTEsMzQgQEAgaW5saW5lIEJveDo6UmVjdDo6b3BlcmF0b3Ig
TGF5b3V0UmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVjdDsKIH0KIAoraW5saW5lIHZvaWQg
Qm94OjpzZXRDb250ZW50Qm94SGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KQoreyAKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgc2V0SGFzVmFsaWRDb250ZW50SGVpZ2h0KCk7CisjZW5kaWYKKyAg
ICBtX2NvbnRlbnRIZWlnaHQgPSBoZWlnaHQ7Cit9CisKK2lubGluZSB2b2lkIEJveDo6c2V0Q29u
dGVudEJveFdpZHRoKExheW91dFVuaXQgd2lkdGgpCit7IAorI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICBzZXRIYXNWYWxpZENvbnRlbnRXaWR0aCgpOworI2VuZGlmCisgICAgbV9jb250ZW50V2lk
dGggPSB3aWR0aDsKK30KKworaW5saW5lIExheW91dFVuaXQgQm94Ojpjb250ZW50Qm94SGVpZ2h0
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZENvbnRlbnRIZWlnaHQpOworICAgIHJl
dHVybiBtX2NvbnRlbnRIZWlnaHQ7Cit9CisKK2lubGluZSBMYXlvdXRVbml0IEJveDo6Y29udGVu
dEJveFdpZHRoKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZENvbnRlbnRXaWR0aCk7
CisgICAgcmV0dXJuIG1fY29udGVudFdpZHRoOworfQorCiBpbmxpbmUgdm9pZCBCb3g6OnNldEhv
cml6b250YWxNYXJnaW4oSG9yaXpvbnRhbEVkZ2VzIG1hcmdpbikKIHsKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>