<?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>201933</bug_id>
          
          <creation_ts>2019-09-18 12:04:47 -0700</creation_ts>
          <short_desc>[LFC] Introduce UsedVerticalValues::Constraints</short_desc>
          <delta_ts>2019-09-18 14:48:11 -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>
          
          <blocked>201795</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572001</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-18 12:04:47 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572003</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-18 12:05:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/55487485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572007</commentid>
    <comment_count>2</comment_count>
      <attachid>379059</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-18 12:07:25 -0700</bug_when>
    <thetext>Created attachment 379059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572016</commentid>
    <comment_count>3</comment_count>
      <attachid>379059</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-18 12:17:10 -0700</bug_when>
    <thetext>Comment on attachment 379059
Patch

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

&gt; Source/WebCore/layout/LayoutUnits.h:197
&gt; +    explicit UsedVerticalValues(Constraints constraints)
&gt; +        : constraints(constraints)
&gt; +    {
&gt; +    }
&gt; +
&gt; +    explicit UsedVerticalValues(Constraints constraints, Optional&lt;LayoutUnit&gt; height)
&gt; +        : constraints(constraints)
&gt; +        , height(height)
&gt; +    {
&gt; +    }

You could just have one of these :

UsedVerticalValues(Constraints constraints, Optional&lt;LayoutUnit&gt; height = { })</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572018</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-18 12:18:04 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 379059 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379059&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/LayoutUnits.h:197
&gt; &gt; +    explicit UsedVerticalValues(Constraints constraints)
&gt; &gt; +        : constraints(constraints)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    explicit UsedVerticalValues(Constraints constraints, Optional&lt;LayoutUnit&gt; height)
&gt; &gt; +        : constraints(constraints)
&gt; &gt; +        , height(height)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; You could just have one of these :
&gt; 
&gt; UsedVerticalValues(Constraints constraints, Optional&lt;LayoutUnit&gt; height = {
&gt; })
Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572081</commentid>
    <comment_count>5</comment_count>
      <attachid>379072</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-18 14:26:29 -0700</bug_when>
    <thetext>Created attachment 379072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572096</commentid>
    <comment_count>6</comment_count>
      <attachid>379072</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-18 14:48:10 -0700</bug_when>
    <thetext>Comment on attachment 379072
Patch

Clearing flags on attachment: 379072

Committed r250056: &lt;https://trac.webkit.org/changeset/250056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572097</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-18 14:48:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379059</attachid>
            <date>2019-09-18 12:07:25 -0700</date>
            <delta_ts>2019-09-18 14:26:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201933-20190918120724.patch</filename>
            <type>text/plain</type>
            <size>29135</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcxM2QxZjY5YTZkMWU4
ZGRmNWJkZTU1NmZjMGMyMmUwZGMwZWY1OS4uNDRiNmY1MWNkOThiNjUzMmM2NWRhODMyNTlmNmRl
ZTU5MGE0MDdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTA5LTE4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gSW50cm9kdWNlIFVz
ZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTkzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU0
ODc0ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyBob2xkcyB0aGUgY29uc3RyYWludCB2YWx1
ZXMgKChvcHRpb25hbCljb250YWluaW5nIGJsb2NrIGhlaWdodCBhbmQgY29udGVudGJveCB0b3Ap
IGZvciBhIHBhcnRpY3VsYXIgYm94IGdlb21ldHJ5IGNvbXB1dGF0aW9uLiAKKyAgICAgICAgVGhp
cyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdXNpbmcgY29uc3RyYWludCB2YWx1ZXMgaW5zdGVhZCBv
ZiBxdWVyeWluZyB0aGUgZGlzcGxheSB0cmVlIGZvciBjb250YWluaW5nIGJsb2NrIGdlb21ldHJ5
IGluZm9ybWF0aW9uLgorICAgICAgICBTZWUgd2Via2l0Lm9yZy9iLzIwMTc5NQorCisgICAgICAg
ICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6b3V0T2ZGbG93SG9yaXpvbnRhbENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6b3V0T2ZGbG93VmVydGljYWxDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21l
dHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
b3V0T2ZGbG93Q29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBs
YWNlZFZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvTGF5b3V0VW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkVmVy
dGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzOjpDb25zdHJhaW50cyk6CisgICAgICAgICogbGF5b3V0
L0xheW91dFVuaXRzLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlVzZWRWZXJ0aWNhbFZh
bHVlczo6Q29uc3RyYWludHM6OkNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VXNlZFZlcnRpY2FsVmFsdWVzOjpVc2VkVmVydGljYWxWYWx1ZXMpOgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNW
ZXJ0aWNhbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
c3RhdGljVmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbiBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojppbmxp
bmVCbG9ja0hlaWdodEFuZE1hcmdpbiBjb25zdCk6CisKIDIwMTktMDktMTggIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBBZGQgY29udGVudGJveCBsZWZ0
IGNvbnN0cmFpbnQgdG8gVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAwYjViNzg0MTU3OTEw
NTdkNzkxN2JmY2RmMGJmODVhNjdhYmQxY2Y1Li5iYTE1M2VmYTU4YzY4ZDBjYjc3OGViODBjM2Jm
ZDIzYjhiYzVlZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5jcHAKQEAgLTQzLDExICs0MywxNiBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEZvcm1hdHRpbmdDb250ZXh0KTsKIAotc3RhdGljIFVzZWRIb3Jp
em9udGFsVmFsdWVzOjpDb25zdHJhaW50cyBvdXRPZkZsb3dDb25zdHJhaW50cyhjb25zdCBEaXNw
bGF5OjpCb3gmIGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5KQorc3RhdGljIFVzZWRIb3Jpem9udGFs
VmFsdWVzOjpDb25zdHJhaW50cyBvdXRPZkZsb3dIb3Jpem9udGFsQ29uc3RyYWludHMoY29uc3Qg
RGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSkKIHsKICAgICByZXR1cm4gVXNl
ZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnku
cGFkZGluZ0JveExlZnQoKSwgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRo
KCkgfTsKIH0KIAorc3RhdGljIFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgb3V0T2ZG
bG93VmVydGljYWxDb25zdHJhaW50cyhjb25zdCBEaXNwbGF5OjpCb3gmIGNvbnRhaW5pbmdCbG9j
a0dlb21ldHJ5KQoreworICAgIHJldHVybiBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRz
IHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFRvcCgpLCBjb250YWluaW5nQmxv
Y2tHZW9tZXRyeS5wYWRkaW5nQm94SGVpZ2h0KCkgfTsKK30KKwogRm9ybWF0dGluZ0NvbnRleHQ6
OkZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290
LCBGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6IG1fcm9vdChtYWtlV2Vh
a1B0cihmb3JtYXR0aW5nQ29udGV4dFJvb3QpKQogICAgICwgbV9mb3JtYXR0aW5nU3RhdGUoZm9y
bWF0dGluZ1N0YXRlKQpAQCAtNzMsMTEgKzc4LDEwIEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gp
CiB7CiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgPSBnZW9tZXRyeUZvckJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoID0gY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCk7Ci0gICAgYXV0
byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5n
Qm94SGVpZ2h0KCk7CiAKICAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZFdpZHRoKSB7Ci0gICAgICAgIGF1dG8gdXNlZEhvcml6b250YWxWYWx1ZXMgPSBVc2Vk
SG9yaXpvbnRhbFZhbHVlcyB7IG91dE9mRmxvd0NvbnN0cmFpbnRzKGNvbnRhaW5pbmdCbG9ja0dl
b21ldHJ5KSwgdXNlZFdpZHRoLCB7IH0gfTsKLSAgICAgICAgYXV0byB1c2VkVmVydGljYWxWYWx1
ZXMgPSBVc2VkVmVydGljYWxWYWx1ZXMgeyBjb250YWluaW5nQmxvY2tIZWlnaHQsIHsgfSB9Owor
ICAgICAgICBhdXRvIHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMg
eyBvdXRPZkZsb3dIb3Jpem9udGFsQ29uc3RyYWludHMoY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkp
LCB1c2VkV2lkdGgsIHsgfSB9OworICAgICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9IFVz
ZWRWZXJ0aWNhbFZhbHVlcyB7IG91dE9mRmxvd1ZlcnRpY2FsQ29uc3RyYWludHMoY29udGFpbmlu
Z0Jsb2NrR2VvbWV0cnkpLCB7IH0gfTsKICAgICAgICAgcmV0dXJuIGdlb21ldHJ5KCkub3V0T2ZG
bG93SG9yaXpvbnRhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVz
ZWRWZXJ0aWNhbFZhbHVlcyk7CiAgICAgfTsKIApAQCAtMTA5LDE5ICsxMTMsMTkgQEAgdm9pZCBG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgPSBnZW9t
ZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKICAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5LnBhZGRpbmdCb3hIZWln
aHQoKTsKIAotICAgIGF1dG8gdXNlZFZlcnRpY2FsVmFsdWVzRm9ySGVpZ2h0ID0gVXNlZFZlcnRp
Y2FsVmFsdWVzIHsgY29udGFpbmluZ0Jsb2NrSGVpZ2h0LCB7IH0gfTsKLSAgICBhdXRvIHVzZWRI
b3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBvdXRPZkZsb3dDb25zdHJh
aW50cyhjb250YWluaW5nQmxvY2tHZW9tZXRyeSkgfTsKKyAgICBhdXRvIHVzZWRWZXJ0aWNhbFZh
bHVlc0ZvckhlaWdodCA9IFVzZWRWZXJ0aWNhbFZhbHVlcyB7IG91dE9mRmxvd1ZlcnRpY2FsQ29u
c3RyYWludHMoY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpLCB7IH0gfTsKKyAgICBhdXRvIHVzZWRI
b3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBvdXRPZkZsb3dIb3Jpem9u
dGFsQ29uc3RyYWludHMoY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpIH07CiAKICAgICBhdXRvIHZl
cnRpY2FsR2VvbWV0cnkgPSBjb21wdXRlKHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGlj
YWxWYWx1ZXNGb3JIZWlnaHQpOwogICAgIGlmIChhdXRvIG1heEhlaWdodCA9IGdlb21ldHJ5KCku
Y29tcHV0ZWRNYXhIZWlnaHQobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tIZWlnaHQpKSB7Ci0g
ICAgICAgIGF1dG8gdXNlZFZhbHVlc0Zvck1heEhlaWdodCA9IFVzZWRWZXJ0aWNhbFZhbHVlcyB7
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCwgbWF4SGVpZ2h0IH07CisgICAgICAgIGF1dG8gdXNlZFZh
bHVlc0Zvck1heEhlaWdodCA9IFVzZWRWZXJ0aWNhbFZhbHVlcyB7IG91dE9mRmxvd1ZlcnRpY2Fs
Q29uc3RyYWludHMoY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpLCBtYXhIZWlnaHQgfTsKICAgICAg
ICAgYXV0byBtYXhWZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZSh1c2VkSG9yaXpvbnRhbFZhbHVl
cywgdXNlZFZhbHVlc0Zvck1heEhlaWdodCk7CiAgICAgICAgIGlmICh2ZXJ0aWNhbEdlb21ldHJ5
LmhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPiBtYXhWZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1h
cmdpbi5oZWlnaHQpCiAgICAgICAgICAgICB2ZXJ0aWNhbEdlb21ldHJ5ID0gbWF4VmVydGljYWxH
ZW9tZXRyeTsKICAgICB9CiAKICAgICBpZiAoYXV0byBtaW5IZWlnaHQgPSBnZW9tZXRyeSgpLmNv
bXB1dGVkTWluSGVpZ2h0KGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KSkgewotICAg
ICAgICBhdXRvIHVzZWRWYWx1ZXNGb3JNaW5IZWlnaHQgPSBVc2VkVmVydGljYWxWYWx1ZXMgeyBj
b250YWluaW5nQmxvY2tIZWlnaHQsIG1pbkhlaWdodCB9OworICAgICAgICBhdXRvIHVzZWRWYWx1
ZXNGb3JNaW5IZWlnaHQgPSBVc2VkVmVydGljYWxWYWx1ZXMgeyBvdXRPZkZsb3dWZXJ0aWNhbENv
bnN0cmFpbnRzKGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5KSwgbWluSGVpZ2h0IH07CiAgICAgICAg
IGF1dG8gbWluVmVydGljYWxHZW9tZXRyeSA9IGNvbXB1dGUodXNlZEhvcml6b250YWxWYWx1ZXMs
IHVzZWRWYWx1ZXNGb3JNaW5IZWlnaHQpOwogICAgICAgICBpZiAodmVydGljYWxHZW9tZXRyeS5o
ZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDwgbWluVmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJn
aW4uaGVpZ2h0KQogICAgICAgICAgICAgdmVydGljYWxHZW9tZXRyeSA9IG1pblZlcnRpY2FsR2Vv
bWV0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDA2
ZTQ2ZjY1NDlmY2QxMDI0MTk0OGFlNTE5MGU0NmM5OGZlNzIxNTQuLmU2ZGJmOWQ3Njg5OTRhODgy
NjUwODcxYzU3NjFkNmFiMTFkZDE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIFdp
ZHRoQW5kTWFyZ2luIGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gm
LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyk7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmKSBjb25zdDsKKyAg
ICAgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRp
b25lZChjb25zdCBCb3gmLCBVc2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwogICAgICAgICBMYXlv
dXRVbml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29u
c3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IEZv
cm1hdHRpbmdDb250ZXh0JiBtX2Zvcm1hdHRpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGI0YzNiODFh
MWFiOTg5ZDAxNjFmYWQ0YzRlYzdhMGUyZmNiNzgwY2IuLjkzOTU1Y2U4MmZhNjdhMTYwNjgwM2Fi
MjZhNTQ3YzhjZjgzZDc1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBPcHRpb25hbDxM
YXlvdXRVbml0PiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTWluSGVpZ2h0
KGNvbnN0IEJveCYgbAogICAgIHJldHVybiB7IExheW91dFVuaXQgeyB9IH07CiB9CiAKLUxheW91
dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
Rm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK0xheW91
dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
Rm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZFZlcnRpY2Fs
VmFsdWVzIHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKIApAQCAtMjE0LDggKzIxNCw3IEBAIExheW91dFVu
aXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9y
T3V0T2ZGbG93UG9zaXRpCiAgICAgICAgIEFTU0VSVCghY29udGFpbmVyLT5pc1Bvc2l0aW9uZWQo
KSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7CiAgICAgfQogICAgIC8vIE1vdmUg
dGhlIHN0YXRpYyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgcGFkZGluZyBib3guIFRoaXMgaXMg
dmVyeSBzcGVjaWZpYyB0byBhYm9sdXRlbHkgcG9zaXRpb25lZCBib3hlcy4KLSAgICBhdXRvIHBh
ZGRpbmdCb3hUb3AgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChjb250YWluaW5n
QmxvY2spLnBhZGRpbmdCb3hUb3AoKTsKLSAgICByZXR1cm4gdG9wIC0gcGFkZGluZ0JveFRvcDsK
KyAgICByZXR1cm4gdG9wIC0gdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRC
b3hUb3A7CiB9CiAKIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0
aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QK
QEAgLTI2OSw3ICsyNjgsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6c2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdSbwogVmVydGljYWxHZW9t
ZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVy
dGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMg
dXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1
ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwotICAgIEFTU0VSVCh1c2VkVmVydGljYWxWYWx1
ZXMuY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKKyAgICBBU1NFUlQodXNlZFZlcnRpY2FsVmFsdWVz
LmNvbnN0cmFpbnRzLmhlaWdodCk7CiAKICAgICAvLyAxMC42LjQgQWJzb2x1dGVseSBwb3NpdGlv
bmVkLCBub24tcmVwbGFjZWQgZWxlbWVudHMKICAgICAvLwpAQCAtMjk4LDcgKzI5Nyw3IEBAIFZl
cnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25S
ZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlz
LT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxl
KCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZv
ckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gKnVzZWRW
ZXJ0aWNhbFZhbHVlcy5jb250YWluaW5nQmxvY2tIZWlnaHQ7CisgICAgYXV0byBjb250YWluaW5n
QmxvY2tIZWlnaHQgPSAqdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmhlaWdodDsKICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3Ry
YWludHMud2lkdGg7CiAKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC0zMTYsNyArMzE1LDcg
QEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKICAgICB9OwogCiAgICAgaWYgKCF0b3AgJiYgIWhl
aWdodCAmJiAhYm90dG9tKQotICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9y
T3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gpOworICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNh
bFZhbHVlcyk7CiAKICAgICBpZiAodG9wICYmIGhlaWdodCAmJiBib3R0b20pIHsKICAgICAgICAg
aWYgKCFjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSAmJiAhY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbi5hZnRlcikgewpAQCAtMzQ1LDcgKzM0NCw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0
CiAKICAgICBpZiAoIXRvcCAmJiAhYm90dG9tICYmIGhlaWdodCkgewogICAgICAgICAvLyAjMgot
ICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25l
ZChsYXlvdXRCb3gpOworICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0
T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7CiAgICAgICAg
IHVzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFs
dWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CiAgICAg
ICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2Fs
TWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBjb250ZW50SGVpZ2h0KCkg
KyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVy
KTsKICAgICB9CkBAIC0zODEsNyArMzgwLDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKIAog
ICAgIC8vIEZvciBvdXQtb2YtZmxvdyBlbGVtZW50cyB0aGUgY29udGFpbmluZyBibG9jayBpcyBm
b3JtZWQgYnkgdGhlIHBhZGRpbmcgZWRnZSBvZiB0aGUgYW5jZXN0b3IuCiAgICAgLy8gQXQgdGhp
cyBwb2ludCB0aGUgcG9zaXRpb25lZCB2YWx1ZSBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0g
b2YgdGhlIHBhZGRpbmcgYm94LiBMZXQncyBjb252ZXJ0IGl0IHRvIGJvcmRlciBib3ggY29vcmRp
bmF0ZSBzeXN0ZW0uCi0gICAgYXV0byBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdl
ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250YWluaW5n
QmxvY2soKSkucGFkZGluZ0JveFRvcCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUGFkZGlu
Z1ZlcnRpY2FsRWRnZSA9IHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5jb250ZW50Qm94
VG9wOwogICAgICp0b3AgKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKICAg
ICAqYm90dG9tICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2U7CiAKQEAgLTU0
MCw3ICs1MzksNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogVmVydGljYWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9t
ZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6
b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBsYXlv
dXRCb3gucmVwbGFjZWQoKSk7Ci0gICAgQVNTRVJUKHVzZWRWZXJ0aWNhbFZhbHVlcy5jb250YWlu
aW5nQmxvY2tIZWlnaHQpOworICAgIEFTU0VSVCh1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWlu
dHMuaGVpZ2h0KTsKIAogICAgIC8vIDEwLjYuNSBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIHJlcGxh
Y2VkIGVsZW1lbnRzCiAgICAgLy8KQEAgLTU1NSw3ICs1NTQsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdl
b21ldHJ5KAogICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0Nv
bnRleHQoKTsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
KTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp1c2VkVmVydGljYWxWYWx1ZXMu
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0OworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0g
KnVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5oZWlnaHQ7CiAgICAgYXV0byBjb250YWlu
aW5nQmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLndpZHRoOwog
CiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3Ao
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwpAQCAtNTcxLDcgKzU3MCw3IEBAIFZlcnRpY2FsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoCiAKICAgICBpZiAoIXRvcCAmJiAhYm90dG9tKSB7CiAgICAgICAgIC8vICMx
Ci0gICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlv
bmVkKGxheW91dEJveCk7CisgICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JP
dXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dEJveCwgdXNlZFZlcnRpY2FsVmFsdWVzKTsKICAgICB9
CiAKICAgICBpZiAoIWJvdHRvbSkgewpAQCAtNjA3LDcgKzYwNiw3IEBAIFZlcnRpY2FsR2VvbWV0
cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2Fs
R2VvbWV0cnkoCiAKICAgICAvLyBGb3Igb3V0LW9mLWZsb3cgZWxlbWVudHMgdGhlIGNvbnRhaW5p
bmcgYmxvY2sgaXMgZm9ybWVkIGJ5IHRoZSBwYWRkaW5nIGVkZ2Ugb2YgdGhlIGFuY2VzdG9yLgog
ICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBvc2l0aW9uZWQgdmFsdWUgaXMgaW4gdGhlIGNvb3Jk
aW5hdGUgc3lzdGVtIG9mIHRoZSBwYWRkaW5nIGJveC4gTGV0J3MgY29udmVydCBpdCB0byBib3Jk
ZXIgYm94IGNvb3JkaW5hdGUgc3lzdGVtLgotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUGFkZGlu
Z1ZlcnRpY2FsRWRnZSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpLnBhZGRpbmdCb3hUb3AoKTsKKyAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWlu
dHMuY29udGVudEJveFRvcDsKICAgICAqdG9wICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0
aWNhbEVkZ2U7CiAgICAgKmJvdHRvbSArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxF
ZGdlOwogCkBAIC04NTgsNyArODU3LDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QKICAgICBh
dXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlv
dXRCb3gucmVwbGFjZWQoKTsKIAotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2FsVmFsdWVz
LmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVp
Z2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNhbFZhbHVl
cy5jb250YWluaW5nQmxvY2tIZWlnaHQpOworICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2Fs
VmFsdWVzLmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1
dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNh
bFZhbHVlcy5jb25zdHJhaW50cy5oZWlnaHQpOwogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gIXVz
ZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQgJiYgaXNIZWlnaHRBdXRvKGxheW91dEJveCk7CiAgICAg
YXV0byB3aWR0aElzQXV0byA9IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpOwogCkBAIC05
MjcsNyArOTI2LDcgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEIKIAogICAgIGF1dG8gd2lkdGgg
PSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gTGVu
Z3RoIHsgdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxl
LmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBoZWlnaHRJ
c0F1dG8gPSBpc0hlaWdodEF1dG8obGF5b3V0Qm94KTsKLSAgICBhdXRvIGhlaWdodCA9IGNvbXB1
dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNh
bFZhbHVlcyA/IHVzZWRWZXJ0aWNhbFZhbHVlcy0+Y29udGFpbmluZ0Jsb2NrSGVpZ2h0IDogV1RG
OjpudWxsb3B0KTsKKyAgICBhdXRvIGhlaWdodCA9IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0
Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNhbFZhbHVlcyA/IHVzZWRWZXJ0aWNh
bFZhbHVlcy0+Y29uc3RyYWludHMuaGVpZ2h0IDogV1RGOjpudWxsb3B0KTsKIAogICAgIGlmICgh
d2lkdGggJiYgaGVpZ2h0SXNBdXRvICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5zaWNXaWR0aCgpKSB7
CiAgICAgICAgIC8vICMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmNwcAppbmRleCA2
OWEzZjMzOGQ5NTU1ZWVlNDRhNGZkZDE3YTE1ZWY4ZmNiZTNiMWZiLi40ZTQyZjdkOTM5YWQ5ODlj
MWNiZDQ4YmI3MTg3ZjE5NTgyNTQ1MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0VW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0
cy5jcHAKQEAgLTM5LDYgKzM5LDExIEBAIFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50
czo6Q29uc3RyYWludHMoY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvCiB7CiB9CiAK
K1VzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHM6OkNvbnN0cmFpbnRzKGNvbnN0IERpc3Bs
YXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCisgICAgOiBjb250ZW50Qm94VG9wKGNv
bnRhaW5pbmdCbG9ja0dlb21ldHJ5LmNvbnRlbnRCb3hUb3AoKSkKK3sKK30KKwogfQogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IDA5YzdjN2M2YzlhOGNkYjA4
Mzg2NTAwYTZjODBhOTllYTEwZjYxY2YuLjg1NjMzNzA1MzUzZDk1ZDkzZWMzYjE5ZTc3MzJkNTQz
ZTQzNjk0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBAIC0xNzMsNyArMTcz
LDMwIEBAIHN0cnVjdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7CiB9OwogCiBzdHJ1Y3QgVXNlZFZl
cnRpY2FsVmFsdWVzIHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tI
ZWlnaHQ7CisgICAgc3RydWN0IENvbnN0cmFpbnRzIHsKKyAgICAgICAgZXhwbGljaXQgQ29uc3Ry
YWludHMoY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSk7CisgICAg
ICAgIGV4cGxpY2l0IENvbnN0cmFpbnRzKExheW91dFVuaXQgY29udGVudEJveFRvcCwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gdmVydGljYWxDb25zdHJhaW50ID0gV1RGOjpudWxsb3B0KQorICAgICAg
ICAgICAgOiBjb250ZW50Qm94VG9wKGNvbnRlbnRCb3hUb3ApCisgICAgICAgICAgICAsIGhlaWdo
dCh2ZXJ0aWNhbENvbnN0cmFpbnQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIExh
eW91dFVuaXQgY29udGVudEJveFRvcDsKKyAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVp
Z2h0OworICAgIH07CisKKyAgICBleHBsaWNpdCBVc2VkVmVydGljYWxWYWx1ZXMoQ29uc3RyYWlu
dHMgY29uc3RyYWludHMpCisgICAgICAgIDogY29uc3RyYWludHMoY29uc3RyYWludHMpCisgICAg
eworICAgIH0KKworICAgIGV4cGxpY2l0IFVzZWRWZXJ0aWNhbFZhbHVlcyhDb25zdHJhaW50cyBj
b25zdHJhaW50cywgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KQorICAgICAgICA6IGNvbnN0
cmFpbnRzKGNvbnN0cmFpbnRzKQorICAgICAgICAsIGhlaWdodChoZWlnaHQpCisgICAgeworICAg
IH0KKworICAgIENvbnN0cmFpbnRzIGNvbnN0cmFpbnRzOwogICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGhlaWdodDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGQz
ZmVlYzcyNmU4MzY3OTRhYmNkMjQ3ODk4ZTVhYmViZTQxOWU2MTAuLmUyNzdhMDM0NTg0YzZiYzkz
OWYxN2Y1OWVkYjJmZjg4ZjhmZDE2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cApAQCAtMjEyLDcgKzIxMiw4IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VJ
bkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4oY29uc3QgQm94JiBsYXlvdXRCb3gpCiAKIHZvaWQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3Qg
RmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
ewotICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlCb3gobGF5b3V0Qm94KS5zZXRUb3AoZ2Vv
bWV0cnkoKS5zdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxheW91dEJveCkpOworICAgIGF1dG8gdXNl
ZFZlcnRpY2FsVmFsdWVzID0gVXNlZFZlcnRpY2FsVmFsdWVzIHsgVXNlZFZlcnRpY2FsVmFsdWVz
OjpDb25zdHJhaW50cyB7IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2Nr
KCkpIH0gfTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5Qm94KGxheW91dEJveCkuc2V0
VG9wKGdlb21ldHJ5KCkuc3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gsIHVzZWRWZXJ0
aWNhbFZhbHVlcykpOwogICAgIGlmIChsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKQogICAgICAg
ICBjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoZmxvYXRpbmdD
b250ZXh0LCBsYXlvdXRCb3gpOwogICAgIGVsc2UgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0Zv
cm1hdHRpbmdDb250ZXh0KCkpCkBAIC0zOTIsOSArMzkzLDEwIEBAIHZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBP
cHRpb25hCiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1h
cmdpbihjb25zdCBCb3gmIGxheW91dEJveCkKIHsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tH
ZW9tZXRyeSA9IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwog
ICAgIGF1dG8gY29tcHV0ZSA9IFsmXShhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcykgLT4gSGVpZ2h0
QW5kTWFyZ2luIHsKIAotICAgICAgICBhdXRvIHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhv
cml6b250YWxWYWx1ZXMgeyBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMgeyBnZW9t
ZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKSB9IH07CisgICAgICAgIGF1
dG8gdXNlZEhvcml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IFVzZWRIb3Jp
em9udGFsVmFsdWVzOjpDb25zdHJhaW50cyB7IGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5IH0gfTsK
ICAgICAgICAgaWYgKGxheW91dEJveC5pc0luRmxvdygpKQogICAgICAgICAgICAgcmV0dXJuIGdl
b21ldHJ5KCkuaW5GbG93SGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxW
YWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7CiAKQEAgLTQwNSwxMCArNDA3LDExIEBAIHZvaWQg
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gm
IGxheW91dEJveCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9OwogCi0gICAgYXV0byBoZWln
aHRBbmRNYXJnaW4gPSBjb21wdXRlKFVzZWRWZXJ0aWNhbFZhbHVlcyB7IH0pOworICAgIGF1dG8g
dmVydGljYWxDb25zdHJhaW50cyA9IFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBj
b250YWluaW5nQmxvY2tHZW9tZXRyeSB9OworICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gY29t
cHV0ZShVc2VkVmVydGljYWxWYWx1ZXMgeyB2ZXJ0aWNhbENvbnN0cmFpbnRzIH0pOwogICAgIGlm
IChhdXRvIG1heEhlaWdodCA9IGdlb21ldHJ5KCkuY29tcHV0ZWRNYXhIZWlnaHQobGF5b3V0Qm94
KSkgewogICAgICAgICBpZiAoaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA+ICptYXhIZWlnaHQpIHsK
LSAgICAgICAgICAgIGF1dG8gbWF4SGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0ZShVc2VkVmVydGlj
YWxWYWx1ZXMgeyB7IH0sICptYXhIZWlnaHQgfSk7CisgICAgICAgICAgICBhdXRvIG1heEhlaWdo
dEFuZE1hcmdpbiA9IGNvbXB1dGUoVXNlZFZlcnRpY2FsVmFsdWVzIHsgdmVydGljYWxDb25zdHJh
aW50cywgbWF4SGVpZ2h0IH0pOwogICAgICAgICAgICAgLy8gVXNlZCBoZWlnaHQgc2hvdWxkIHJl
bWFpbiB0aGUgc2FtZS4KICAgICAgICAgICAgIEFTU0VSVCgobGF5b3V0U3RhdGUoKS5pblF1aXJr
c01vZGUoKSAmJiAobGF5b3V0Qm94LmlzQm9keUJveCgpIHx8IGxheW91dEJveC5pc0RvY3VtZW50
Qm94KCkpKSB8fCBtYXhIZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID09ICptYXhIZWlnaHQpOwogICAg
ICAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0geyAqbWF4SGVpZ2h0LCBtYXhIZWlnaHRBbmRNYXJn
aW4ubm9uQ29sbGFwc2VkTWFyZ2luIH07CkBAIC00MTcsNyArNDIwLDcgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogCiAgICAgaWYgKGF1dG8gbWluSGVpZ2h0ID0gZ2VvbWV0cnkoKS5jb21wdXRlZE1pbkhl
aWdodChsYXlvdXRCb3gpKSB7CiAgICAgICAgIGlmIChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDwg
Km1pbkhlaWdodCkgewotICAgICAgICAgICAgYXV0byBtaW5IZWlnaHRBbmRNYXJnaW4gPSBjb21w
dXRlKFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHsgfSwgKm1pbkhlaWdodCB9KTsKKyAgICAgICAgICAg
IGF1dG8gbWluSGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0ZShVc2VkVmVydGljYWxWYWx1ZXMgeyB2
ZXJ0aWNhbENvbnN0cmFpbnRzLCBtaW5IZWlnaHQgfSk7CiAgICAgICAgICAgICAvLyBVc2VkIGhl
aWdodCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgogICAgICAgICAgICAgQVNTRVJUKChsYXlvdXRT
dGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIChsYXlvdXRCb3guaXNCb2R5Qm94KCkgfHwgbGF5b3V0
Qm94LmlzRG9jdW1lbnRCb3goKSkpIHx8IG1pbkhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPT0gKm1p
bkhlaWdodCk7CiAgICAgICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSB7ICptaW5IZWlnaHQsIG1p
bkhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4gfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmgKaW5kZXggNTU1ZmE4ZTU0ZjkyOTg1ZDAxMDJhOTNhNGMwMzcxYTUwMjg2Yjc4ZS4u
M2UxODE0ODVhNTM1OTU2OWY0NjRlMWZiYjViOTdiZGEzODgzMzFjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmgKQEAgLTc4LDggKzc4LDggQEAgcHJpdmF0ZToKICAgICAgICAgSGVpZ2h0
QW5kTWFyZ2luIGluRmxvd0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRh
bFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKTsKICAgICAgICAgV2lkdGhBbmRNYXJnaW4gaW5G
bG93V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpOwogCi0g
ICAgICAgIFBvaW50IHN0YXRpY1Bvc2l0aW9uKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFs
dWVzKSBjb25zdDsKLSAgICAgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNv
bnN0IEJveCYpIGNvbnN0OworICAgICAgICBQb2ludCBzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gm
LCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdDsKKyAgICAg
ICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYsIFVzZWRWZXJ0
aWNhbFZhbHVlcykgY29uc3Q7CiAgICAgICAgIExheW91dFVuaXQgc3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdDsKIAogICAgICAg
ICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29u
c3QgQm94Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAK
aW5kZXggZjYxMzE0MDZlZDU4ZGM0NjM0ZmI2OGUzNGEzMDExY2U5Mjk1ZDQwZC4uNzhjN2I3OTgz
YWRjMGFhNWU0NDdmM2RiNjk5NjExZjJjZGNmZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIFdpZHRoQW5kTWFy
Z2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKGNvCiAgICAgcmV0dXJuIHsgKnVzZWRWYWx1ZXMud2lkdGgsIG5vblJlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbiwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5jb21w
dXRlZE1hcmdpbiB9OwogfQogCi1MYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dAorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVy
dGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZFZlcnRpY2FsVmFsdWVzIHVz
ZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIv
Q1NTMjIvdmlzdXJlbi5odG1sI2Jsb2NrLWZvcm1hdHRpbmcKICAgICAvLyBJbiBhIGJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dCwgYm94ZXMgYXJlIGxhaWQgb3V0IG9uZSBhZnRlciB0aGUgb3RoZXIs
IHZlcnRpY2FsbHksIGJlZ2lubmluZyBhdCB0aGUgdG9wIG9mIGEgY29udGFpbmluZyBibG9jay4K
QEAgLTIzMSw3ICsyMzEsNyBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNvbnN0IEJveCYgbAogICAgICAgICBhdXRv
JiBwcmV2aW91c0luRmxvd0JveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveCgqcHJldmlvdXNJbkZsb3dTaWJsaW5nKTsKICAgICAgICAgcmV0dXJuIHByZXZpb3Vz
SW5GbG93Qm94R2VvbWV0cnkuYm90dG9tKCkgKyBwcmV2aW91c0luRmxvd0JveEdlb21ldHJ5Lm1h
cmdpbkFmdGVyKCk7CiAgICAgfQotICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21l
dHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRlbnRCb3hUb3AoKTsK
KyAgICByZXR1cm4gdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRCb3hUb3A7
CiB9CiAKIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRp
Y0hvcml6b250YWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxW
YWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0CkBAIC0yNDEsOSArMjQxLDkgQEAgTGF5
b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRh
bFBvc2l0aW9uKGNvbnN0IEJveCYKICAgICByZXR1cm4gdXNlZEhvcml6b250YWxWYWx1ZXMuY29u
c3RyYWludHMuY29udGVudEJveExlZnQgKyBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9y
Qm94KGxheW91dEJveCkubWFyZ2luU3RhcnQoKTsKIH0KIAotUG9pbnQgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBV
c2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QKK1BvaW50IEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gm
IGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMsIFVz
ZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHsgc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1
ZXMpLCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxheW91dEJveCkgfTsKKyAgICByZXR1cm4geyBz
dGF0aWNIb3Jpem9udGFsUG9zaXRpb24obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyks
IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb24obGF5b3V0Qm94LCB1c2VkVmVydGljYWxWYWx1ZXMpIH07
CiB9CiAKIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRh
bFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzIHVzZWRWZXJ0
aWNhbFZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA1NDk3
NGZhNzVkMmQyOWU4NTdlYTZjNGNlMjNhMjkwMjBlOWFkOTJmLi40MTVjZTg3Y2JmYTdjMDdhNzY2
MmViMjIzOTQ4MDIzODRmMTYyODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCkBAIC0yMTAsMTMgKzIxMCwxNSBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIbwogdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gm
IGxheW91dEJveCkKIHsKICAgICBIZWlnaHRBbmRNYXJnaW4gaGVpZ2h0QW5kTWFyZ2luOwotICAg
IGF1dG8gdXNlZEhvcml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IFVzZWRI
b3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50cyB7IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCkpIH0gfTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tHZW9tZXRy
eSA9IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgIGF1
dG8gdXNlZEhvcml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IFVzZWRIb3Jp
em9udGFsVmFsdWVzOjpDb25zdHJhaW50cyB7IGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5IH0gfTsK
KyAgICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9IFVzZWRWZXJ0aWNhbFZhbHVlcyB7IFVzZWRW
ZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBjb250YWluaW5nQmxvY2tHZW9tZXRyeSB9IH07
CiAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICBoZWln
aHRBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJv
eCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHsgfSk7CisgICAgICAgIGhlaWdodEFuZE1hcmdpbiA9
IGdlb21ldHJ5KCkuZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpv
bnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKICAgICBlbHNlIGlmIChsYXlvdXRCb3gu
aXNJbmxpbmVCbG9ja0JveCgpKQotICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSBnZW9tZXRyeSgp
LmlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1
ZXMpOworICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmlubGluZUJsb2NrSGVp
Z2h0QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNh
bFZhbHVlcyk7CiAgICAgZWxzZSBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIGhl
aWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4o
bGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgeyB9KTsKKyAgICAgICAgaGVpZ2h0QW5k
TWFyZ2luID0gZ2VvbWV0cnkoKS5pbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRC
b3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMpOwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oCmluZGV4IDA3ZjhiZjdjZjJiNTgxNTZiZTYwNTM2NTIyMTVjMTczMTY3ZDcyNTguLmI0
YmNlMWEzMmFlNWZjNDk4NDk1YTI4MDIyYzJkYzJkZjcyZWI1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAgY2xhc3Mg
R2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEhlaWdodEFuZE1hcmdpbiBpbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihj
b25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3Q7CisgICAgICAgIEhlaWdodEFu
ZE1hcmdpbiBpbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpv
bnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdDsKICAgICAgICAgV2lkdGhBbmRN
YXJnaW4gaW5saW5lQmxvY2tXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRh
bFZhbHVlcyk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA0Njc1Y2MyMmIwYjU2NDgxN2IyMWZmZDVmYzIzZmEz
NjkzN2Y3YWFmLi5mOTQxMTMxZTE2NTZmMzViNWUzYzk4YTAzMTI2N2E1NjFiNTE1ZDIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNjMs
MTcgKzYzLDE3IEBAIFdpZHRoQW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5saW5lQmxvY2tXaWR0aEFuZE1hcmdpbihjb25zCiAgICAgcmV0dXJuIFdpZHRoQW5k
TWFyZ2luIHsgKndpZHRoLCB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9y
KDBfbHUpLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMF9sdSkgfSwgY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luIH07CiB9CiAKLUhlaWdodEFuZE1hcmdpbiBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVl
cykgY29uc3QKK0hlaWdodEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2Vk
SG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVz
IHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5G
bG93KCkpOwogCiAgICAgLy8gMTAuNi4yIElubGluZSByZXBsYWNlZCBlbGVtZW50cywgYmxvY2st
bGV2ZWwgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3csICdpbmxpbmUtYmxvY2snIHJl
cGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93IGFuZCBmbG9hdGluZyByZXBsYWNlZCBlbGVt
ZW50cwogICAgIGlmIChsYXlvdXRCb3gucmVwbGFjZWQoKSkKLSAgICAgICAgcmV0dXJuIGlubGlu
ZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMs
IHsgfSk7CisgICAgICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlv
dXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMpOwogCiAgICAg
Ly8gMTAuNi42IENvbXBsaWNhdGVkIGNhc2VzCiAgICAgLy8gLSAnSW5saW5lLWJsb2NrJywgbm9u
LXJlcGxhY2VkIGVsZW1lbnRzLgotICAgIHJldHVybiBjb21wbGljYXRlZENhc2VzKGxheW91dEJv
eCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHsgfSk7CisgICAgcmV0dXJuIGNvbXBsaWNhdGVkQ2Fz
ZXMobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKTsK
IH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379072</attachid>
            <date>2019-09-18 14:26:29 -0700</date>
            <delta_ts>2019-09-18 14:48:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201933-20190918142629.patch</filename>
            <type>text/plain</type>
            <size>29031</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUzMWFkOGFjMjM3ZDVh
NGFjNGMyODlhNzI1M2MwMzJhZGI1MmE4MC4uZTUyNmVmNmM4MjIxZGVkZDQ4MGJhNTJiNmMwMjhi
YjU5YjcwNDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTA5LTE4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gSW50cm9kdWNlIFVz
ZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTkzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU0
ODc0ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAg
VXNlZFZlcnRpY2FsVmFsdWVzOjpDb25zdHJhaW50cyBob2xkcyB0aGUgY29uc3RyYWludCB2YWx1
ZXMgKChvcHRpb25hbCljb250YWluaW5nIGJsb2NrIGhlaWdodCBhbmQgY29udGVudGJveCB0b3Ap
IGZvciBhIHBhcnRpY3VsYXIgYm94IGdlb21ldHJ5IGNvbXB1dGF0aW9uLiAKKyAgICAgICAgVGhp
cyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdXNpbmcgY29uc3RyYWludCB2YWx1ZXMgaW5zdGVhZCBv
ZiBxdWVyeWluZyB0aGUgZGlzcGxheSB0cmVlIGZvciBjb250YWluaW5nIGJsb2NrIGdlb21ldHJ5
IGluZm9ybWF0aW9uLgorICAgICAgICBTZWUgd2Via2l0Lm9yZy9iLzIwMTc5NQorCisgICAgICAg
ICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6b3V0T2ZGbG93SG9yaXpvbnRhbENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6b3V0T2ZGbG93VmVydGljYWxDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21l
dHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
b3V0T2ZGbG93Q29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBs
YWNlZFZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvTGF5b3V0VW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkVmVy
dGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzOjpDb25zdHJhaW50cyk6CisgICAgICAgICogbGF5b3V0
L0xheW91dFVuaXRzLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlVzZWRWZXJ0aWNhbFZh
bHVlczo6Q29uc3RyYWludHM6OkNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VXNlZFZlcnRpY2FsVmFsdWVzOjpVc2VkVmVydGljYWxWYWx1ZXMpOgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNW
ZXJ0aWNhbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
c3RhdGljVmVydGljYWxQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbiBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojppbmxp
bmVCbG9ja0hlaWdodEFuZE1hcmdpbiBjb25zdCk6CisKIDIwMTktMDktMTggIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBBZGQgY29udGVudGJveCBsZWZ0
IGNvbnN0cmFpbnQgdG8gVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAwYjViNzg0MTU3OTEw
NTdkNzkxN2JmY2RmMGJmODVhNjdhYmQxY2Y1Li5iYTE1M2VmYTU4YzY4ZDBjYjc3OGViODBjM2Jm
ZDIzYjhiYzVlZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5jcHAKQEAgLTQzLDExICs0MywxNiBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEZvcm1hdHRpbmdDb250ZXh0KTsKIAotc3RhdGljIFVzZWRIb3Jp
em9udGFsVmFsdWVzOjpDb25zdHJhaW50cyBvdXRPZkZsb3dDb25zdHJhaW50cyhjb25zdCBEaXNw
bGF5OjpCb3gmIGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5KQorc3RhdGljIFVzZWRIb3Jpem9udGFs
VmFsdWVzOjpDb25zdHJhaW50cyBvdXRPZkZsb3dIb3Jpem9udGFsQ29uc3RyYWludHMoY29uc3Qg
RGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSkKIHsKICAgICByZXR1cm4gVXNl
ZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnku
cGFkZGluZ0JveExlZnQoKSwgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRo
KCkgfTsKIH0KIAorc3RhdGljIFVzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHMgb3V0T2ZG
bG93VmVydGljYWxDb25zdHJhaW50cyhjb25zdCBEaXNwbGF5OjpCb3gmIGNvbnRhaW5pbmdCbG9j
a0dlb21ldHJ5KQoreworICAgIHJldHVybiBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRz
IHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFRvcCgpLCBjb250YWluaW5nQmxv
Y2tHZW9tZXRyeS5wYWRkaW5nQm94SGVpZ2h0KCkgfTsKK30KKwogRm9ybWF0dGluZ0NvbnRleHQ6
OkZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290
LCBGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6IG1fcm9vdChtYWtlV2Vh
a1B0cihmb3JtYXR0aW5nQ29udGV4dFJvb3QpKQogICAgICwgbV9mb3JtYXR0aW5nU3RhdGUoZm9y
bWF0dGluZ1N0YXRlKQpAQCAtNzMsMTEgKzc4LDEwIEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gp
CiB7CiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgPSBnZW9tZXRyeUZvckJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoID0gY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCk7Ci0gICAgYXV0
byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5n
Qm94SGVpZ2h0KCk7CiAKICAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZFdpZHRoKSB7Ci0gICAgICAgIGF1dG8gdXNlZEhvcml6b250YWxWYWx1ZXMgPSBVc2Vk
SG9yaXpvbnRhbFZhbHVlcyB7IG91dE9mRmxvd0NvbnN0cmFpbnRzKGNvbnRhaW5pbmdCbG9ja0dl
b21ldHJ5KSwgdXNlZFdpZHRoLCB7IH0gfTsKLSAgICAgICAgYXV0byB1c2VkVmVydGljYWxWYWx1
ZXMgPSBVc2VkVmVydGljYWxWYWx1ZXMgeyBjb250YWluaW5nQmxvY2tIZWlnaHQsIHsgfSB9Owor
ICAgICAgICBhdXRvIHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMg
eyBvdXRPZkZsb3dIb3Jpem9udGFsQ29uc3RyYWludHMoY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkp
LCB1c2VkV2lkdGgsIHsgfSB9OworICAgICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9IFVz
ZWRWZXJ0aWNhbFZhbHVlcyB7IG91dE9mRmxvd1ZlcnRpY2FsQ29uc3RyYWludHMoY29udGFpbmlu
Z0Jsb2NrR2VvbWV0cnkpLCB7IH0gfTsKICAgICAgICAgcmV0dXJuIGdlb21ldHJ5KCkub3V0T2ZG
bG93SG9yaXpvbnRhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVz
ZWRWZXJ0aWNhbFZhbHVlcyk7CiAgICAgfTsKIApAQCAtMTA5LDE5ICsxMTMsMTkgQEAgdm9pZCBG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCiAgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgPSBnZW9t
ZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKICAgICBhdXRvIGNvbnRh
aW5pbmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5LnBhZGRpbmdCb3hIZWln
aHQoKTsKIAotICAgIGF1dG8gdXNlZFZlcnRpY2FsVmFsdWVzRm9ySGVpZ2h0ID0gVXNlZFZlcnRp
Y2FsVmFsdWVzIHsgY29udGFpbmluZ0Jsb2NrSGVpZ2h0LCB7IH0gfTsKLSAgICBhdXRvIHVzZWRI
b3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBvdXRPZkZsb3dDb25zdHJh
aW50cyhjb250YWluaW5nQmxvY2tHZW9tZXRyeSkgfTsKKyAgICBhdXRvIHVzZWRWZXJ0aWNhbFZh
bHVlc0ZvckhlaWdodCA9IFVzZWRWZXJ0aWNhbFZhbHVlcyB7IG91dE9mRmxvd1ZlcnRpY2FsQ29u
c3RyYWludHMoY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpLCB7IH0gfTsKKyAgICBhdXRvIHVzZWRI
b3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMgeyBvdXRPZkZsb3dIb3Jpem9u
dGFsQ29uc3RyYWludHMoY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpIH07CiAKICAgICBhdXRvIHZl
cnRpY2FsR2VvbWV0cnkgPSBjb21wdXRlKHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGlj
YWxWYWx1ZXNGb3JIZWlnaHQpOwogICAgIGlmIChhdXRvIG1heEhlaWdodCA9IGdlb21ldHJ5KCku
Y29tcHV0ZWRNYXhIZWlnaHQobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tIZWlnaHQpKSB7Ci0g
ICAgICAgIGF1dG8gdXNlZFZhbHVlc0Zvck1heEhlaWdodCA9IFVzZWRWZXJ0aWNhbFZhbHVlcyB7
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCwgbWF4SGVpZ2h0IH07CisgICAgICAgIGF1dG8gdXNlZFZh
bHVlc0Zvck1heEhlaWdodCA9IFVzZWRWZXJ0aWNhbFZhbHVlcyB7IG91dE9mRmxvd1ZlcnRpY2Fs
Q29uc3RyYWludHMoY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpLCBtYXhIZWlnaHQgfTsKICAgICAg
ICAgYXV0byBtYXhWZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZSh1c2VkSG9yaXpvbnRhbFZhbHVl
cywgdXNlZFZhbHVlc0Zvck1heEhlaWdodCk7CiAgICAgICAgIGlmICh2ZXJ0aWNhbEdlb21ldHJ5
LmhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPiBtYXhWZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1h
cmdpbi5oZWlnaHQpCiAgICAgICAgICAgICB2ZXJ0aWNhbEdlb21ldHJ5ID0gbWF4VmVydGljYWxH
ZW9tZXRyeTsKICAgICB9CiAKICAgICBpZiAoYXV0byBtaW5IZWlnaHQgPSBnZW9tZXRyeSgpLmNv
bXB1dGVkTWluSGVpZ2h0KGxheW91dEJveCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KSkgewotICAg
ICAgICBhdXRvIHVzZWRWYWx1ZXNGb3JNaW5IZWlnaHQgPSBVc2VkVmVydGljYWxWYWx1ZXMgeyBj
b250YWluaW5nQmxvY2tIZWlnaHQsIG1pbkhlaWdodCB9OworICAgICAgICBhdXRvIHVzZWRWYWx1
ZXNGb3JNaW5IZWlnaHQgPSBVc2VkVmVydGljYWxWYWx1ZXMgeyBvdXRPZkZsb3dWZXJ0aWNhbENv
bnN0cmFpbnRzKGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5KSwgbWluSGVpZ2h0IH07CiAgICAgICAg
IGF1dG8gbWluVmVydGljYWxHZW9tZXRyeSA9IGNvbXB1dGUodXNlZEhvcml6b250YWxWYWx1ZXMs
IHVzZWRWYWx1ZXNGb3JNaW5IZWlnaHQpOwogICAgICAgICBpZiAodmVydGljYWxHZW9tZXRyeS5o
ZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDwgbWluVmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJn
aW4uaGVpZ2h0KQogICAgICAgICAgICAgdmVydGljYWxHZW9tZXRyeSA9IG1pblZlcnRpY2FsR2Vv
bWV0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDA2
ZTQ2ZjY1NDlmY2QxMDI0MTk0OGFlNTE5MGU0NmM5OGZlNzIxNTQuLmU2ZGJmOWQ3Njg5OTRhODgy
NjUwODcxYzU3NjFkNmFiMTFkZDE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIFdp
ZHRoQW5kTWFyZ2luIGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gm
LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyk7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmKSBjb25zdDsKKyAg
ICAgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRp
b25lZChjb25zdCBCb3gmLCBVc2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwogICAgICAgICBMYXlv
dXRVbml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29u
c3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IEZv
cm1hdHRpbmdDb250ZXh0JiBtX2Zvcm1hdHRpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGI0YzNiODFh
MWFiOTg5ZDAxNjFmYWQ0YzRlYzdhMGUyZmNiNzgwY2IuLjkzOTU1Y2U4MmZhNjdhMTYwNjgwM2Fi
MjZhNTQ3YzhjZjgzZDc1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBPcHRpb25hbDxM
YXlvdXRVbml0PiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTWluSGVpZ2h0
KGNvbnN0IEJveCYgbAogICAgIHJldHVybiB7IExheW91dFVuaXQgeyB9IH07CiB9CiAKLUxheW91
dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
Rm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK0xheW91
dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9u
Rm9yT3V0T2ZGbG93UG9zaXRpb25lZChjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZFZlcnRpY2Fs
VmFsdWVzIHVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKIApAQCAtMjE0LDggKzIxNCw3IEBAIExheW91dFVu
aXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9y
T3V0T2ZGbG93UG9zaXRpCiAgICAgICAgIEFTU0VSVCghY29udGFpbmVyLT5pc1Bvc2l0aW9uZWQo
KSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7CiAgICAgfQogICAgIC8vIE1vdmUg
dGhlIHN0YXRpYyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgcGFkZGluZyBib3guIFRoaXMgaXMg
dmVyeSBzcGVjaWZpYyB0byBhYm9sdXRlbHkgcG9zaXRpb25lZCBib3hlcy4KLSAgICBhdXRvIHBh
ZGRpbmdCb3hUb3AgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChjb250YWluaW5n
QmxvY2spLnBhZGRpbmdCb3hUb3AoKTsKLSAgICByZXR1cm4gdG9wIC0gcGFkZGluZ0JveFRvcDsK
KyAgICByZXR1cm4gdG9wIC0gdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRC
b3hUb3A7CiB9CiAKIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0
aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3QK
QEAgLTI2OSw3ICsyNjgsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6c2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdSbwogVmVydGljYWxHZW9t
ZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVy
dGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMg
dXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1
ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwotICAgIEFTU0VSVCh1c2VkVmVydGljYWxWYWx1
ZXMuY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKKyAgICBBU1NFUlQodXNlZFZlcnRpY2FsVmFsdWVz
LmNvbnN0cmFpbnRzLmhlaWdodCk7CiAKICAgICAvLyAxMC42LjQgQWJzb2x1dGVseSBwb3NpdGlv
bmVkLCBub24tcmVwbGFjZWQgZWxlbWVudHMKICAgICAvLwpAQCAtMjk4LDcgKzI5Nyw3IEBAIFZl
cnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25S
ZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlz
LT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxl
KCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZv
ckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gKnVzZWRW
ZXJ0aWNhbFZhbHVlcy5jb250YWluaW5nQmxvY2tIZWlnaHQ7CisgICAgYXV0byBjb250YWluaW5n
QmxvY2tIZWlnaHQgPSAqdXNlZFZlcnRpY2FsVmFsdWVzLmNvbnN0cmFpbnRzLmhlaWdodDsKICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZEhvcml6b250YWxWYWx1ZXMuY29uc3Ry
YWludHMud2lkdGg7CiAKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CkBAIC0zMTYsNyArMzE1LDcg
QEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKICAgICB9OwogCiAgICAgaWYgKCF0b3AgJiYgIWhl
aWdodCAmJiAhYm90dG9tKQotICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9y
T3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gpOworICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNh
bFZhbHVlcyk7CiAKICAgICBpZiAodG9wICYmIGhlaWdodCAmJiBib3R0b20pIHsKICAgICAgICAg
aWYgKCFjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSAmJiAhY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbi5hZnRlcikgewpAQCAtMzQ1LDcgKzM0NCw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0
CiAKICAgICBpZiAoIXRvcCAmJiAhYm90dG9tICYmIGhlaWdodCkgewogICAgICAgICAvLyAjMgot
ICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25l
ZChsYXlvdXRCb3gpOworICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0
T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7CiAgICAgICAg
IHVzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFs
dWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CiAgICAg
ICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2Fs
TWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBjb250ZW50SGVpZ2h0KCkg
KyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVy
KTsKICAgICB9CkBAIC0zODEsNyArMzgwLDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKIAog
ICAgIC8vIEZvciBvdXQtb2YtZmxvdyBlbGVtZW50cyB0aGUgY29udGFpbmluZyBibG9jayBpcyBm
b3JtZWQgYnkgdGhlIHBhZGRpbmcgZWRnZSBvZiB0aGUgYW5jZXN0b3IuCiAgICAgLy8gQXQgdGhp
cyBwb2ludCB0aGUgcG9zaXRpb25lZCB2YWx1ZSBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0g
b2YgdGhlIHBhZGRpbmcgYm94LiBMZXQncyBjb252ZXJ0IGl0IHRvIGJvcmRlciBib3ggY29vcmRp
bmF0ZSBzeXN0ZW0uCi0gICAgYXV0byBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdl
ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250YWluaW5n
QmxvY2soKSkucGFkZGluZ0JveFRvcCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUGFkZGlu
Z1ZlcnRpY2FsRWRnZSA9IHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5jb250ZW50Qm94
VG9wOwogICAgICp0b3AgKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKICAg
ICAqYm90dG9tICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2U7CiAKQEAgLTU0
MCw3ICs1MzksNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogVmVydGljYWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9t
ZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6
b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBsYXlv
dXRCb3gucmVwbGFjZWQoKSk7Ci0gICAgQVNTRVJUKHVzZWRWZXJ0aWNhbFZhbHVlcy5jb250YWlu
aW5nQmxvY2tIZWlnaHQpOworICAgIEFTU0VSVCh1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWlu
dHMuaGVpZ2h0KTsKIAogICAgIC8vIDEwLjYuNSBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIHJlcGxh
Y2VkIGVsZW1lbnRzCiAgICAgLy8KQEAgLTU1NSw3ICs1NTQsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdl
b21ldHJ5KAogICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0Nv
bnRleHQoKTsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
KTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp1c2VkVmVydGljYWxWYWx1ZXMu
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0OworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0g
KnVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5oZWlnaHQ7CiAgICAgYXV0byBjb250YWlu
aW5nQmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFsdWVzLmNvbnN0cmFpbnRzLndpZHRoOwog
CiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3Ao
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwpAQCAtNTcxLDcgKzU3MCw3IEBAIFZlcnRpY2FsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoCiAKICAgICBpZiAoIXRvcCAmJiAhYm90dG9tKSB7CiAgICAgICAgIC8vICMx
Ci0gICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlv
bmVkKGxheW91dEJveCk7CisgICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JP
dXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dEJveCwgdXNlZFZlcnRpY2FsVmFsdWVzKTsKICAgICB9
CiAKICAgICBpZiAoIWJvdHRvbSkgewpAQCAtNjA3LDcgKzYwNiw3IEBAIFZlcnRpY2FsR2VvbWV0
cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2Fs
R2VvbWV0cnkoCiAKICAgICAvLyBGb3Igb3V0LW9mLWZsb3cgZWxlbWVudHMgdGhlIGNvbnRhaW5p
bmcgYmxvY2sgaXMgZm9ybWVkIGJ5IHRoZSBwYWRkaW5nIGVkZ2Ugb2YgdGhlIGFuY2VzdG9yLgog
ICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBvc2l0aW9uZWQgdmFsdWUgaXMgaW4gdGhlIGNvb3Jk
aW5hdGUgc3lzdGVtIG9mIHRoZSBwYWRkaW5nIGJveC4gTGV0J3MgY29udmVydCBpdCB0byBib3Jk
ZXIgYm94IGNvb3JkaW5hdGUgc3lzdGVtLgotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUGFkZGlu
Z1ZlcnRpY2FsRWRnZSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpLnBhZGRpbmdCb3hUb3AoKTsKKyAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkVmVydGljYWxWYWx1ZXMuY29uc3RyYWlu
dHMuY29udGVudEJveFRvcDsKICAgICAqdG9wICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0
aWNhbEVkZ2U7CiAgICAgKmJvdHRvbSArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxF
ZGdlOwogCkBAIC04NTgsNyArODU3LDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QKICAgICBh
dXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlv
dXRCb3gucmVwbGFjZWQoKTsKIAotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2FsVmFsdWVz
LmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVp
Z2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNhbFZhbHVl
cy5jb250YWluaW5nQmxvY2tIZWlnaHQpOworICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2Fs
VmFsdWVzLmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1
dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNh
bFZhbHVlcy5jb25zdHJhaW50cy5oZWlnaHQpOwogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gIXVz
ZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQgJiYgaXNIZWlnaHRBdXRvKGxheW91dEJveCk7CiAgICAg
YXV0byB3aWR0aElzQXV0byA9IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpOwogCkBAIC05
MjcsNyArOTI2LDcgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IEIKIAogICAgIGF1dG8gd2lkdGgg
PSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gTGVu
Z3RoIHsgdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxl
LmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBoZWlnaHRJ
c0F1dG8gPSBpc0hlaWdodEF1dG8obGF5b3V0Qm94KTsKLSAgICBhdXRvIGhlaWdodCA9IGNvbXB1
dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNh
bFZhbHVlcyA/IHVzZWRWZXJ0aWNhbFZhbHVlcy0+Y29udGFpbmluZ0Jsb2NrSGVpZ2h0IDogV1RG
OjpudWxsb3B0KTsKKyAgICBhdXRvIGhlaWdodCA9IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0
Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIHVzZWRWZXJ0aWNhbFZhbHVlcyA/IHVzZWRWZXJ0aWNh
bFZhbHVlcy0+Y29uc3RyYWludHMuaGVpZ2h0IDogV1RGOjpudWxsb3B0KTsKIAogICAgIGlmICgh
d2lkdGggJiYgaGVpZ2h0SXNBdXRvICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5zaWNXaWR0aCgpKSB7
CiAgICAgICAgIC8vICMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmNwcAppbmRleCA2
OWEzZjMzOGQ5NTU1ZWVlNDRhNGZkZDE3YTE1ZWY4ZmNiZTNiMWZiLi40ZTQyZjdkOTM5YWQ5ODlj
MWNiZDQ4YmI3MTg3ZjE5NTgyNTQ1MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0VW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0
cy5jcHAKQEAgLTM5LDYgKzM5LDExIEBAIFVzZWRIb3Jpem9udGFsVmFsdWVzOjpDb25zdHJhaW50
czo6Q29uc3RyYWludHMoY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvCiB7CiB9CiAK
K1VzZWRWZXJ0aWNhbFZhbHVlczo6Q29uc3RyYWludHM6OkNvbnN0cmFpbnRzKGNvbnN0IERpc3Bs
YXk6OkJveCYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkpCisgICAgOiBjb250ZW50Qm94VG9wKGNv
bnRhaW5pbmdCbG9ja0dlb21ldHJ5LmNvbnRlbnRCb3hUb3AoKSkKK3sKK30KKwogfQogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IDA5YzdjN2M2YzlhOGNkYjA4
Mzg2NTAwYTZjODBhOTllYTEwZjYxY2YuLmQ1MTBlMTUwMGE4OTE5NTQ5MWE1YzE2NWNjYmI0M2Mz
ODg2Mzc5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBAIC0xNzMsNyArMTcz
LDI1IEBAIHN0cnVjdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7CiB9OwogCiBzdHJ1Y3QgVXNlZFZl
cnRpY2FsVmFsdWVzIHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tI
ZWlnaHQ7CisgICAgc3RydWN0IENvbnN0cmFpbnRzIHsKKyAgICAgICAgZXhwbGljaXQgQ29uc3Ry
YWludHMoY29uc3QgRGlzcGxheTo6Qm94JiBjb250YWluaW5nQmxvY2tHZW9tZXRyeSk7CisgICAg
ICAgIGV4cGxpY2l0IENvbnN0cmFpbnRzKExheW91dFVuaXQgY29udGVudEJveFRvcCwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gdmVydGljYWxDb25zdHJhaW50ID0gV1RGOjpudWxsb3B0KQorICAgICAg
ICAgICAgOiBjb250ZW50Qm94VG9wKGNvbnRlbnRCb3hUb3ApCisgICAgICAgICAgICAsIGhlaWdo
dCh2ZXJ0aWNhbENvbnN0cmFpbnQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIExh
eW91dFVuaXQgY29udGVudEJveFRvcDsKKyAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVp
Z2h0OworICAgIH07CisKKyAgICBleHBsaWNpdCBVc2VkVmVydGljYWxWYWx1ZXMoQ29uc3RyYWlu
dHMgY29uc3RyYWludHMsIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCA9IHsgfSkKKyAgICAg
ICAgOiBjb25zdHJhaW50cyhjb25zdHJhaW50cykKKyAgICAgICAgLCBoZWlnaHQoaGVpZ2h0KQor
ICAgIHsKKyAgICB9CisKKyAgICBDb25zdHJhaW50cyBjb25zdHJhaW50czsKICAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBoZWlnaHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cAppbmRleCBkM2ZlZWM3MjZlODM2Nzk0YWJjZDI0Nzg5OGU1YWJlYmU0MTllNjEwLi5lMjc3YTAz
NDU4NGM2YmM5MzlmMTdmNTllZGIyZmY4OGY4ZmQxNjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5jcHAKQEAgLTIxMiw3ICsyMTIsOCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENoaWxkcmVuKGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
CiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNWZXJ0aWNhbFBvc2l0
aW9uKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKLSAgICBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5Qm94KGxheW91dEJveCku
c2V0VG9wKGdlb21ldHJ5KCkuc3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gpKTsKKyAg
ICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9IFVzZWRWZXJ0aWNhbFZhbHVlcyB7IFVzZWRWZXJ0
aWNhbFZhbHVlczo6Q29uc3RyYWludHMgeyBnZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpKSB9IH07CisgICAgZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUJveChsYXlv
dXRCb3gpLnNldFRvcChnZW9tZXRyeSgpLnN0YXRpY1ZlcnRpY2FsUG9zaXRpb24obGF5b3V0Qm94
LCB1c2VkVmVydGljYWxWYWx1ZXMpKTsKICAgICBpZiAobGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIo
KSkKICAgICAgICAgY29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENsZWFy
KGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94KTsKICAgICBlbHNlIGlmIChsYXlvdXRCb3guZXN0
YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQpAQCAtMzkyLDkgKzM5MywxMCBAQCB2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxh
eW91dEJveCwgT3B0aW9uYQogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVI
ZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CisgICAgYXV0byYgY29udGFp
bmluZ0Jsb2NrR2VvbWV0cnkgPSBnZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdC
bG9jaygpKTsKICAgICBhdXRvIGNvbXB1dGUgPSBbJl0oYXV0byB1c2VkVmVydGljYWxWYWx1ZXMp
IC0+IEhlaWdodEFuZE1hcmdpbiB7CiAKLSAgICAgICAgYXV0byB1c2VkSG9yaXpvbnRhbFZhbHVl
cyA9IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgVXNlZEhvcml6b250YWxWYWx1ZXM6OkNvbnN0cmFp
bnRzIHsgZ2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkgfSB9Owor
ICAgICAgICBhdXRvIHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMg
eyBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMgeyBjb250YWluaW5nQmxvY2tHZW9t
ZXRyeSB9IH07CiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbkZsb3coKSkKICAgICAgICAgICAg
IHJldHVybiBnZW9tZXRyeSgpLmluRmxvd0hlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRI
b3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMpOwogCkBAIC00MDUsMTAgKzQwNywx
MSBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4o
Y29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfTsKIAotICAg
IGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0ZShVc2VkVmVydGljYWxWYWx1ZXMgeyB9KTsK
KyAgICBhdXRvIHZlcnRpY2FsQ29uc3RyYWludHMgPSBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0
cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgfTsKKyAgICBhdXRvIGhlaWdodEFuZE1h
cmdpbiA9IGNvbXB1dGUoVXNlZFZlcnRpY2FsVmFsdWVzIHsgdmVydGljYWxDb25zdHJhaW50cyB9
KTsKICAgICBpZiAoYXV0byBtYXhIZWlnaHQgPSBnZW9tZXRyeSgpLmNvbXB1dGVkTWF4SGVpZ2h0
KGxheW91dEJveCkpIHsKICAgICAgICAgaWYgKGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPiAqbWF4
SGVpZ2h0KSB7Ci0gICAgICAgICAgICBhdXRvIG1heEhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUo
VXNlZFZlcnRpY2FsVmFsdWVzIHsgeyB9LCAqbWF4SGVpZ2h0IH0pOworICAgICAgICAgICAgYXV0
byBtYXhIZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHZlcnRp
Y2FsQ29uc3RyYWludHMsIG1heEhlaWdodCB9KTsKICAgICAgICAgICAgIC8vIFVzZWQgaGVpZ2h0
IHNob3VsZCByZW1haW4gdGhlIHNhbWUuCiAgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0YXRl
KCkuaW5RdWlya3NNb2RlKCkgJiYgKGxheW91dEJveC5pc0JvZHlCb3goKSB8fCBsYXlvdXRCb3gu
aXNEb2N1bWVudEJveCgpKSkgfHwgbWF4SGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA9PSAqbWF4SGVp
Z2h0KTsKICAgICAgICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IHsgKm1heEhlaWdodCwgbWF4SGVp
Z2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbiB9OwpAQCAtNDE3LDcgKzQyMCw3IEBAIHZv
aWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBC
b3gmIGxheW91dEJveCkKIAogICAgIGlmIChhdXRvIG1pbkhlaWdodCA9IGdlb21ldHJ5KCkuY29t
cHV0ZWRNaW5IZWlnaHQobGF5b3V0Qm94KSkgewogICAgICAgICBpZiAoaGVpZ2h0QW5kTWFyZ2lu
LmhlaWdodCA8ICptaW5IZWlnaHQpIHsKLSAgICAgICAgICAgIGF1dG8gbWluSGVpZ2h0QW5kTWFy
Z2luID0gY29tcHV0ZShVc2VkVmVydGljYWxWYWx1ZXMgeyB7IH0sICptaW5IZWlnaHQgfSk7Cisg
ICAgICAgICAgICBhdXRvIG1pbkhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUoVXNlZFZlcnRpY2Fs
VmFsdWVzIHsgdmVydGljYWxDb25zdHJhaW50cywgbWluSGVpZ2h0IH0pOwogICAgICAgICAgICAg
Ly8gVXNlZCBoZWlnaHQgc2hvdWxkIHJlbWFpbiB0aGUgc2FtZS4KICAgICAgICAgICAgIEFTU0VS
VCgobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiAobGF5b3V0Qm94LmlzQm9keUJveCgp
IHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpKSB8fCBtaW5IZWlnaHRBbmRNYXJnaW4uaGVp
Z2h0ID09ICptaW5IZWlnaHQpOwogICAgICAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0geyAqbWlu
SGVpZ2h0LCBtaW5IZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDU1NWZhOGU1NGY5Mjk4NWQwMTAyYTkzYTRjMDM3MWE1
MDI4NmI3OGUuLjNlMTgxNDg1YTUzNTk1NjlmNDY0ZTFmYmI1Yjk3YmRhMzg4MzMxYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03OCw4ICs3OCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIEhlaWdodEFuZE1hcmdpbiBpbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgVXNl
ZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyk7CiAgICAgICAgIFdpZHRoQW5k
TWFyZ2luIGluRmxvd1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFs
dWVzKTsKIAotICAgICAgICBQb2ludCBzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmLCBVc2VkSG9y
aXpvbnRhbFZhbHVlcykgY29uc3Q7Ci0gICAgICAgIExheW91dFVuaXQgc3RhdGljVmVydGljYWxQ
b3NpdGlvbihjb25zdCBCb3gmKSBjb25zdDsKKyAgICAgICAgUG9pbnQgc3RhdGljUG9zaXRpb24o
Y29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcykgY29u
c3Q7CisgICAgICAgIExheW91dFVuaXQgc3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gm
LCBVc2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY0hv
cml6b250YWxQb3NpdGlvbihjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcykgY29uc3Q7
CiAKICAgICAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzKGNvbnN0IEJveCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCmluZGV4IGY2MTMxNDA2ZWQ1OGRjNDYzNGZiNjhlMzRhMzAxMWNlOTI5NWQ0MGQu
Ljc4YzdiNzk4M2FkYzBhYTVlNDQ3ZjNkYjY5OTYxMWYyY2RjZmQ4OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBX
aWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVw
bGFjZWRXaWR0aEFuZE1hcmdpbihjbwogICAgIHJldHVybiB7ICp1c2VkVmFsdWVzLndpZHRoLCBu
b25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4sIG5vblJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4uY29tcHV0ZWRNYXJnaW4gfTsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGxheW91
dEJveCkgY29uc3QKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRWZXJ0aWNh
bFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL0NTUzIyL3Zpc3VyZW4uaHRtbCNibG9jay1mb3JtYXR0aW5nCiAgICAgLy8gSW4g
YSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQsIGJveGVzIGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIg
dGhlIG90aGVyLCB2ZXJ0aWNhbGx5LCBiZWdpbm5pbmcgYXQgdGhlIHRvcCBvZiBhIGNvbnRhaW5p
bmcgYmxvY2suCkBAIC0yMzEsNyArMjMxLDcgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6c3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmIGwKICAg
ICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0
KCkuZ2VvbWV0cnlGb3JCb3goKnByZXZpb3VzSW5GbG93U2libGluZyk7CiAgICAgICAgIHJldHVy
biBwcmV2aW91c0luRmxvd0JveEdlb21ldHJ5LmJvdHRvbSgpICsgcHJldmlvdXNJbkZsb3dCb3hH
ZW9tZXRyeS5tYXJnaW5BZnRlcigpOwogICAgIH0KLSAgICByZXR1cm4gZm9ybWF0dGluZ0NvbnRl
eHQoKS5nZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50
Qm94VG9wKCk7CisgICAgcmV0dXJuIHVzZWRWZXJ0aWNhbFZhbHVlcy5jb25zdHJhaW50cy5jb250
ZW50Qm94VG9wOwogfQogCiBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb24oY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRI
b3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVzKSBjb25zdApAQCAtMjQxLDkgKzI0
MSw5IEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRp
Y0hvcml6b250YWxQb3NpdGlvbihjb25zdCBCb3gmCiAgICAgcmV0dXJuIHVzZWRIb3Jpem9udGFs
VmFsdWVzLmNvbnN0cmFpbnRzLmNvbnRlbnRCb3hMZWZ0ICsgZm9ybWF0dGluZ0NvbnRleHQoKS5n
ZW9tZXRyeUZvckJveChsYXlvdXRCb3gpLm1hcmdpblN0YXJ0KCk7CiB9CiAKLVBvaW50IEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbihjb25zdCBCb3gmIGxh
eW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0
CitQb2ludCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24o
Y29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFs
VmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdAogewot
ICAgIHJldHVybiB7IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbihsYXlvdXRCb3gsIHVzZWRIb3Jp
em9udGFsVmFsdWVzKSwgc3RhdGljVmVydGljYWxQb3NpdGlvbihsYXlvdXRCb3gpIH07CisgICAg
cmV0dXJuIHsgc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uKGxheW91dEJveCwgdXNlZEhvcml6b250
YWxWYWx1ZXMpLCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGxheW91dEJveCwgdXNlZFZlcnRpY2Fs
VmFsdWVzKSB9OwogfQogCiBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNl
ZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVl
cyB1c2VkVmVydGljYWxWYWx1ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAK
aW5kZXggNTQ5NzRmYTc1ZDJkMjllODU3ZWE2YzRjZTIzYTI5MDIwZTlhZDkyZi4uNDE1Y2U4N2Ni
ZmE3YzA3YTc2NjJlYjIyMzk0ODAyMzg0ZjE2MjgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMjEwLDEzICsyMTAsMTUgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2Vk
SG8KIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4o
Y29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1h
cmdpbjsKLSAgICBhdXRvIHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1
ZXMgeyBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMgeyBnZW9tZXRyeUZvckJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKSB9IH07CisgICAgYXV0byYgY29udGFpbmluZ0Js
b2NrR2VvbWV0cnkgPSBnZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygp
KTsKKyAgICBhdXRvIHVzZWRIb3Jpem9udGFsVmFsdWVzID0gVXNlZEhvcml6b250YWxWYWx1ZXMg
eyBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMgeyBjb250YWluaW5nQmxvY2tHZW9t
ZXRyeSB9IH07CisgICAgYXV0byB1c2VkVmVydGljYWxWYWx1ZXMgPSBVc2VkVmVydGljYWxWYWx1
ZXMgeyBVc2VkVmVydGljYWxWYWx1ZXM6OkNvbnN0cmFpbnRzIHsgY29udGFpbmluZ0Jsb2NrR2Vv
bWV0cnkgfSB9OwogICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAg
ICAgICAgaGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5mbG9hdGluZ0hlaWdodEFuZE1hcmdp
bihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB7IH0pOworICAgICAgICBoZWlnaHRB
bmRNYXJnaW4gPSBnZW9tZXRyeSgpLmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJveCwg
dXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7CiAgICAgZWxzZSBpZiAo
bGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKLSAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0g
Z2VvbWV0cnkoKS5pbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jp
em9udGFsVmFsdWVzKTsKKyAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5pbmxp
bmVCbG9ja0hlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1
c2VkVmVydGljYWxWYWx1ZXMpOwogICAgIGVsc2UgaWYgKGxheW91dEJveC5yZXBsYWNlZCgpKQot
ICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSBnZW9tZXRyeSgpLmlubGluZVJlcGxhY2VkSGVpZ2h0
QW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHsgfSk7CisgICAgICAg
IGhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKTsK
ICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaAppbmRleCAwN2Y4YmY3Y2YyYjU4MTU2YmU2MDUzNjUyMjE1YzE3MzE2
N2Q3MjU4Li5iNGJjZTFhMzJhZTVmYzQ5ODQ5NWEyODAyMmMyZGMyZGY3MmViNWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGNsYXNzIEdlb21ldHJ5IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7
CiAgICAgcHVibGljOgotICAgICAgICBIZWlnaHRBbmRNYXJnaW4gaW5saW5lQmxvY2tIZWlnaHRB
bmRNYXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpIGNvbnN0OworICAgICAg
ICBIZWlnaHRBbmRNYXJnaW4gaW5saW5lQmxvY2tIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94Jiwg
VXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CiAgICAgICAg
IFdpZHRoQW5kTWFyZ2luIGlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgVXNl
ZEhvcml6b250YWxWYWx1ZXMpOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggNDY3NWNjMjJiMGI1NjQ4MTdiMjFm
ZmQ1ZmMyM2ZhMzY5MzdmN2FhZi4uZjk0MTEzMWUxNjU2ZjM1YjVlM2M5OGEwMzEyNjdhNTYxYjUx
NWQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKQEAgLTYzLDE3ICs2MywxNyBAQCBXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4oY29ucwogICAgIHJldHVy
biBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3Rh
cnQudmFsdWVPcigwX2x1KSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBf
bHUpIH0sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9OwogfQogCi1IZWlnaHRBbmRNYXJnaW4g
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1h
cmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6
b250YWxWYWx1ZXMpIGNvbnN0CitIZWlnaHRBbmRNYXJnaW4gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91
dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0
aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91
dEJveC5pc0luRmxvdygpKTsKIAogICAgIC8vIDEwLjYuMiBJbmxpbmUgcmVwbGFjZWQgZWxlbWVu
dHMsIGJsb2NrLWxldmVsIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93LCAnaW5saW5l
LWJsb2NrJyByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdyBhbmQgZmxvYXRpbmcgcmVw
bGFjZWQgZWxlbWVudHMKICAgICBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJl
dHVybiBpbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRCb3gsIHVzZWRIb3Jpem9u
dGFsVmFsdWVzLCB7IH0pOworICAgICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVz
KTsKIAogICAgIC8vIDEwLjYuNiBDb21wbGljYXRlZCBjYXNlcwogICAgIC8vIC0gJ0lubGluZS1i
bG9jaycsIG5vbi1yZXBsYWNlZCBlbGVtZW50cy4KLSAgICByZXR1cm4gY29tcGxpY2F0ZWRDYXNl
cyhsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB7IH0pOworICAgIHJldHVybiBjb21w
bGljYXRlZENhc2VzKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNh
bFZhbHVlcyk7CiB9CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>