<?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>13494</bug_id>
          
          <creation_ts>2007-04-25 16:25:47 -0700</creation_ts>
          <short_desc>[S60] widget menu implementation</short_desc>
          <delta_ts>2008-04-09 11:39:44 -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>New Bugs</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>S60 Emulator</rep_platform>
          <op_sys>S60 3rd edition</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sornalatha Rathnasamy">sornalatha.rathnasamy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>12436</commentid>
    <comment_count>0</comment_count>
    <who name="Sornalatha Rathnasamy">sornalatha.rathnasamy</who>
    <bug_when>2007-04-25 16:25:47 -0700</bug_when>
    <thetext>widget menu implementation, setpref key changes, open application changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12433</commentid>
    <comment_count>1</comment_count>
      <attachid>14190</attachid>
    <who name="Sornalatha Rathnasamy">sornalatha.rathnasamy</who>
    <bug_when>2007-04-25 16:40:03 -0700</bug_when>
    <thetext>Created attachment 14190
widget menu api patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12414</commentid>
    <comment_count>2</comment_count>
      <attachid>14190</attachid>
    <who name="alan">zalan</who>
    <bug_when>2007-04-25 17:44:53 -0700</bug_when>
    <thetext>Comment on attachment 14190
widget menu api patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12415</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2007-04-25 17:45:20 -0700</bug_when>
    <thetext>r21101 -&gt;3.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11964</commentid>
    <comment_count>4</comment_count>
      <attachid>14233</attachid>
    <who name="Sornalatha Rathnasamy">sornalatha.rathnasamy</who>
    <bug_when>2007-04-27 12:15:39 -0700</bug_when>
    <thetext>Created attachment 14233
patch for code review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11966</commentid>
    <comment_count>5</comment_count>
      <attachid>14233</attachid>
    <who name="alan">zalan</who>
    <bug_when>2007-04-27 12:43:54 -0700</bug_when>
    <thetext>Comment on attachment 14233
patch for code review

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11967</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2007-04-27 12:44:17 -0700</bug_when>
    <thetext>r21150 -&gt; ccb</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76993</commentid>
    <comment_count>7</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2008-04-09 11:39:44 -0700</bug_when>
    <thetext>Bulk closing of all s60 platform bugs. 

Sorry for the noise!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14190</attachid>
            <date>2007-04-25 16:40:03 -0700</date>
            <delta_ts>2007-04-25 17:44:53 -0700</delta_ts>
            <desc>widget menu api patch</desc>
            <filename>widget.patch</filename>
            <type>text/plain</type>
            <size>102109</size>
            <attacher name="Sornalatha Rathnasamy">sornalatha.rathnasamy</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2UuaAkocmV2aXNpb24gMjA5MDEpDQorKysgV2ViQ29y
ZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzUzLDYgKzc1Myw4
IEBADQogDQogI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgdmlydHVhbCB2b2lkKiBj
cmVhdGVXaWRnZXRPYmplY3Qodm9pZCogZXhlYykgPSAwOw0KKyAgICB2aXJ0dWFsIHZvaWQqIGNy
ZWF0ZVdpZGdldE1lbnVPYmplY3Qodm9pZCogZXhlYykgPSAwOw0KKyAgICB2aXJ0dWFsIHZvaWQq
IGNyZWF0ZVdpZGdldE1lbnVJdGVtT2JqZWN0KHZvaWQqIGV4ZWMpID0gMDsNCiAjZW5kaWYgLy9S
RF9CUk9XU0VSX1dJREdFVFMNCiB9Ow0KIA0KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTAxKQ0KKysrIFdlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDI0IEBADQorcmF0aG5hc2Es
IHJldmlld2VkIGJ5IHpidWp0YXMNCisgREVTQzogd2lkZXQgbWVudSBhcGkgaW1wbGVtZW50YXRp
b24NCisgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0OTQNCisNCisg
ICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRA0KKw0KKyAgICAg
ICAgKiBDaGFuZ2VMb2c6DQorICAgICAgICAqIGJyaWRnZS9XZWJDb3JlQnJpZGdlLmg6DQorICAg
ICAgICAqIGtodG1sL2VjbWEva2pzX3dpbmRvdy5jcHA6DQorICAgICAgICAoV2luZG93OjpXaW5k
b3cpOg0KKyAgICAgICAgKFdpbmRvdzo6bWFyayk6DQorICAgICAgICAoV2luZG93OjpnZXQpOg0K
KyAgICAgICAgKiBraHRtbC9lY21hL2tqc193aW5kb3cuaDoNCisgICAgICAgIChLSlM6OldpbmRv
dzo6KToNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93Lmx1dC5oOg0KKyAgICAgICAg
KEtKUzo6KTogICAgIA0KKyAgICAgICAgKiBrd3EvS1dRS0hUTUxQYXJ0LmNwcDoNCisgICAgICAg
IChLV1FLSFRNTFBhcnQ6OmNyZWF0ZVdpZGdldE1lbnVPYmplY3QpOg0KKyAgICAgICAgKEtXUUtI
VE1MUGFydDo6Y3JlYXRlV2lkZ2V0TWVudUl0ZW1PYmplY3QpOg0KKyAgICAgICAgKiBrd3EvS1dR
S0hUTUxQYXJ0Lmg6DQorDQogYW5hcGF0aWwgPGFuYW5kLjEucGF0aWxAbm9raWEuY29tPg0KIA0K
ICAgICAgICAgUmV2aWV3ZWQgYnkgemJ1anRhc0BnbWFpbC5jb20NCkluZGV4OiBXZWJDb3JlL2to
dG1sL2VjbWEva2pzX3dpbmRvdy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX3dpbmRvdy5jcHAJKHJldmlzaW9uIDIwOTAxKQ0KKysrIFdlYkNvcmUva2h0bWwvZWNt
YS9ranNfd2luZG93LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTMxMSw2ICszMTEsOSBAQA0KICAg
b25iZWZvcmV1bmxvYWQgV2luZG93OjpPbmJlZm9yZXVubG9hZCAgICAgICAgRG9udERlbGV0ZQog
ICBmcmFtZUVsZW1lbnQgIFdpbmRvdzo6RnJhbWVFbGVtZW50ICAgIERvbnREZWxldGV8UmVhZE9u
bHkKICAgc2hvd01vZGFsRGlhbG9nIFdpbmRvdzo6U2hvd01vZGFsRGlhbG9nICAgIERvbnREZWxl
dGV8RnVuY3Rpb24gMQorICB3aWRnZXQgV2luZG93OjpfV2lkZ2V0IERvbnREZWxldGV8RnVuY3Rp
b24gMAorICBNZW51IFdpbmRvdzo6TWVudSBEb250RGVsZXRlfFJlYWRPbmx5CisgIE1lbnVJdGVt
IFdpbmRvdzo6TWVudUl0ZW0gRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAogKi8KIElNUExFTUVO
VF9QUk9UT0ZVTkMoV2luZG93RnVuYykKQEAgLTMyNCw2ICszMjcsNyBAQA0KICAgLCBsb2MoMCkK
ICNpZmRlZiBSRF9CUk9XU0VSX1dJREdFVFMKICAgLCBtX3dpZGdldCgwKQorICAsIG1fd2lkZ2V0
TWVudSgwKQogI2VuZGlmCiAgICwgbV9zZWxlY3Rpb24oMCkKICAgLCBtX2xvY2F0aW9uYmFyKDAp
CkBAIC00ODksNiArNDkzLDggQEANCiAjaWZkZWYgUkRfQlJPV1NFUl9XSURHRVRTCiAgIGlmICht
X3dpZGdldCAmJiAhbV93aWRnZXQtPm1hcmtlZCgpKQogICAgIG1fd2lkZ2V0LT5tYXJrKCk7Cisg
IGlmIChtX3dpZGdldE1lbnUgJiYgIW1fd2lkZ2V0TWVudS0+bWFya2VkKCkpCisgICAgbV93aWRn
ZXRNZW51LT5tYXJrKCk7CiAjZW5kaWYKIH0KIApAQCAtODE4LDcgKzgyNCwxNyBAQA0KICAgICBj
YXNlIF9XaWRnZXQ6CiAgICAgICAgIHJldHVybiBWYWx1ZShtX3dpZGdldCA/IG1fd2lkZ2V0IDoK
ICAgICAgICAgICAgICAgICAgICAoY29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+bV93aWRnZXQg
PSBLV1EobV9wYXJ0KS0+Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4ZWMpKSk7Ci0KKyAgICBjYXNlIE1l
bnU6CisgICAgICBpZiAoICFtX3dpZGdldCApCisgICAgICAgICAgICAoY29uc3RfY2FzdDxXaW5k
b3cqPih0aGlzKS0+bV93aWRnZXQgPSBLV1EobV9wYXJ0KS0+Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4
ZWMpKTsgICAgICAgIAorICAgICAgcmV0dXJuIFZhbHVlKG1fd2lkZ2V0TWVudSA/IG1fd2lkZ2V0
TWVudSA6IAorICAgICAgICAgICAgY29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+bV93aWRnZXRN
ZW51ID0gS1dRKG1fcGFydCktPmNyZWF0ZVdpZGdldE1lbnVPYmplY3QoZXhlYykpOworICAgIGNh
c2UgTWVudUl0ZW06CisgICAgICBpZiAoICFtX3dpZGdldCApCisgICAgICAgICAgICAoY29uc3Rf
Y2FzdDxXaW5kb3cqPih0aGlzKS0+bV93aWRnZXQgPSBLV1EobV9wYXJ0KS0+Y3JlYXRlV2lkZ2V0
T2JqZWN0KGV4ZWMpKTsgIAorICAgICAgaWYgKCAhbV93aWRnZXRNZW51ICkKKyAgICAgICAgICAg
IChjb25zdF9jYXN0PFdpbmRvdyo+KHRoaXMpLT5tX3dpZGdldE1lbnUgPSBLV1EobV9wYXJ0KS0+
Y3JlYXRlV2lkZ2V0TWVudU9iamVjdChleGVjKSk7IAorICAgICAgcmV0dXJuIFZhbHVlKEtXUSht
X3BhcnQpLT5jcmVhdGVXaWRnZXRNZW51SXRlbU9iamVjdChleGVjKSk7CiAjZW5kaWYKICAgICBj
YXNlIE1lbnViYXI6CiAgICAgICByZXR1cm4gVmFsdWUobWVudWJhcihleGVjKSk7CkluZGV4OiBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9r
aHRtbC9lY21hL2tqc193aW5kb3cuaAkocmV2aXNpb24gMjA5MDEpDQorKysgV2ViQ29yZS9raHRt
bC9lY21hL2tqc193aW5kb3cuaAkod29ya2luZyBjb3B5KQ0KQEAgLTE0OSw3ICsxNDksNyBAQA0K
ICAgICAgICAgICAgT25zZWxlY3QsIE9uc3VibWl0LCBPbnVubG9hZCwgT25iZWZvcmV1bmxvYWQs
CiAgICAgICAgICAgIFN0YXR1c2JhciwgVG9vbGJhciwgRnJhbWVFbGVtZW50LCBTaG93TW9kYWxE
aWFsb2cKICNpZmRlZiBOT0tJQV9DSEFOR0VTCi0gICAgICAgICAgICxfV2lkZ2V0CisgICAgICAg
ICAgICxfV2lkZ2V0LE1lbnUsTWVudUl0ZW0KICNlbmRpZgogICAgICAgICAgICB9OwogICBwcm90
ZWN0ZWQ6CkBAIC0xNjEsNiArMTYxLDcgQEANCiAgICAgUUd1YXJkZWRQdHI8S0hUTUxQYXJ0PiBt
X3BhcnQ7CiAjaWZkZWYgUkRfQlJPV1NFUl9XSURHRVRTCiAgICAgT2JqZWN0SW1wICptX3dpZGdl
dDsKKyAgICBPYmplY3RJbXAgKm1fd2lkZ2V0TWVudTsKICNlbmRpZgogICAgIFNjcmVlbiAqc2Ny
ZWVuOwogICAgIEhpc3RvcnkgKmhpc3Rvcnk7CkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pz
X3dpbmRvdy5sdXQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2lu
ZG93Lmx1dC5oCShyZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dp
bmRvdy5sdXQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTEsNCArMSw0IEBADQotLyogQXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBranNfd2luZG93LmNwcCB1c2luZyAuLlwuLlwuLlxKYXZhU2Ny
aXB0Q29yZVxranNcY3JlYXRlX2hhc2hfdGFibGUuIERPIE5PVCBFRElUICEgKi8KKy8qIEF1dG9t
YXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20ga2pzX3dpbmRvdy5jcHAgdXNpbmcgY3JlYXRlX2hhc2hf
dGFibGUuIERPIE5PVCBFRElUICEgKi8KIAogbmFtZXNwYWNlIEtKUyB7CiAKQEAgLTYzLDcgKzYz
LDcgQEANCiAgICB7ICJSYW5nZSIsIFdpbmRvdzo6UmFuZ2UsIERvbnREZWxldGUsIDAsICZXaW5k
b3dUYWJsZUVudHJpZXNbOTFdIH0sCiAgICB7ICJzdGF0dXMiLCBXaW5kb3c6OlN0YXR1cywgRG9u
dERlbGV0ZSwgMCwgMCB9LAogICAgeyAib25yZXNldCIsIFdpbmRvdzo6T25yZXNldCwgRG9udERl
bGV0ZSwgMCwgMCB9LAotICAgeyAwLCAwLCAwLCAwLCAwIH0sCisgICB7ICJNZW51IiwgV2luZG93
OjpNZW51LCBEb250RGVsZXRlfFJlYWRPbmx5LCAwLCAwIH0sCiAgICB7ICJvbnNlbGVjdCIsIFdp
bmRvdzo6T25zZWxlY3QsIERvbnREZWxldGUsIDAsIDAgfSwKICAgIHsgMCwgMCwgMCwgMCwgMCB9
LAogICAgeyAiZG9jdW1lbnQiLCBXaW5kb3c6OkRvY3VtZW50LCBEb250RGVsZXRlfFJlYWRPbmx5
LCAwLCAmV2luZG93VGFibGVFbnRyaWVzWzExNV0gfSwKQEAgLTk4LDcgKzk4LDcgQEANCiAgICB7
ICJibHVyIiwgV2luZG93OjpCbHVyLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAwLCAwIH0sCiAgICB7
ICJsb2NhdGlvbmJhciIsIFdpbmRvdzo6TG9jYXRpb25iYXIsIERvbnREZWxldGUsIDAsICZXaW5k
b3dUYWJsZUVudHJpZXNbMTA3XSB9LAogICAgeyAiRE9NRXhjZXB0aW9uIiwgV2luZG93OjpET01F
eGNlcHRpb24sIERvbnREZWxldGUsIDAsICZXaW5kb3dUYWJsZUVudHJpZXNbOTZdIH0sCi0gICB7
IDAsIDAsIDAsIDAsIDAgfSwKKyAgIHsgIk1lbnVJdGVtIiwgV2luZG93OjpNZW51SXRlbSwgRG9u
dERlbGV0ZXxSZWFkT25seSwgMCwgMCB9LAogICAgeyAic2V0SW50ZXJ2YWwiLCBXaW5kb3c6OlNl
dEludGVydmFsLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAyLCAwIH0sCiAgICB7ICJzY3JvbGxiYXJz
IiwgV2luZG93OjpTY3JvbGxiYXJzLCBEb250RGVsZXRlfFJlYWRPbmx5LCAwLCAmV2luZG93VGFi
bGVFbnRyaWVzWzEyN10gfSwKICAgIHsgImNsZWFyVGltZW91dCIsIFdpbmRvdzo6Q2xlYXJUaW1l
b3V0LCBEb250RGVsZXRlfEZ1bmN0aW9uLCAxLCAmV2luZG93VGFibGVFbnRyaWVzWzEwOF0gfSwK
SW5kZXg6IFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL2t3cS9LV1FLSFRNTFBhcnQuY3BwCShyZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJDb3JlL2t3
cS9LV1FLSFRNTFBhcnQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDEzNyw2ICs0MTM3LDE2IEBA
DQogICAgIEtKUzo6T2JqZWN0SW1wKiBvYmpJbXBsID0gc3RhdGljX2Nhc3Q8S0pTOjpPYmplY3RJ
bXAgKj4oX2JyaWRnZS0+Q2xpZW50KCkuY3JlYXRlV2lkZ2V0T2JqZWN0KCh2b2lkKiApZXhlYykp
OwogICAgIHJldHVybiBvYmpJbXBsOwogfQorS0pTOjpPYmplY3RJbXAqIEtXUUtIVE1MUGFydDo6
Y3JlYXRlV2lkZ2V0TWVudU9iamVjdChLSlM6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBLSlM6
Ok9iamVjdEltcCogb2JqSW1wbCA9IHN0YXRpY19jYXN0PEtKUzo6T2JqZWN0SW1wICo+KF9icmlk
Z2UtPkNsaWVudCgpLmNyZWF0ZVdpZGdldE1lbnVPYmplY3QoKHZvaWQqIClleGVjKSk7CisgICAg
cmV0dXJuIG9iakltcGw7Cit9CitLSlM6Ok9iamVjdEltcCogS1dRS0hUTUxQYXJ0OjpjcmVhdGVX
aWRnZXRNZW51SXRlbU9iamVjdChLSlM6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBLSlM6Ok9i
amVjdEltcCogb2JqSW1wbCA9IHN0YXRpY19jYXN0PEtKUzo6T2JqZWN0SW1wICo+KF9icmlkZ2Ut
PkNsaWVudCgpLmNyZWF0ZVdpZGdldE1lbnVJdGVtT2JqZWN0KCh2b2lkKiApZXhlYykpOworICAg
IHJldHVybiBvYmpJbXBsOworfQogI2VuZGlmCiAKIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlICpL
V1FLSFRNTFBhcnQ6OmdldEVtYmVkSW5zdGFuY2VGb3JWaWV3IChNV2ViQ29yZVdpZGdldCAqYVZp
ZXcpCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YkNvcmUva3dxL0tXUUtIVE1MUGFydC5oCShyZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJDb3JlL2t3
cS9LV1FLSFRNTFBhcnQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIyOSw2ICsyMjksOCBAQA0KIAog
I2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMKICAgICBLSlM6Ok9iamVjdEltcCogY3JlYXRlV2lk
Z2V0T2JqZWN0KEtKUzo6RXhlY1N0YXRlKiBleGVjKSA7CisgICAgS0pTOjpPYmplY3RJbXAqIGNy
ZWF0ZVdpZGdldE1lbnVPYmplY3QoS0pTOjpFeGVjU3RhdGUqIGV4ZWMpIDsKKyAgICBLSlM6Ok9i
amVjdEltcCogY3JlYXRlV2lkZ2V0TWVudUl0ZW1PYmplY3QoS0pTOjpFeGVjU3RhdGUqIGV4ZWMp
IDsKICNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUwogCiAgICAgLy9NZXRob2RzIHRvIHVwZGF0
ZSBmb2N1c2FibGUgbm9kZSBsaXN0CkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0Jy
Q3RsSW50ZXJmYWNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5j
L0JyQ3RsSW50ZXJmYWNlLmgJKHJldmlzaW9uIDIwOTAxKQ0KKysrIFdlYktpdC9Ccm93c2VyQ29u
dHJvbC9pbmMvQnJDdGxJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTkyOSw2ICs5Mjks
OSBAQA0KICAgICAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgICAgICovDQogICAgICAgICB2aXJ0
dWFsIHZvaWQgU2V0UGFyYW1MKFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0s
IFRVaW50IGFWYWx1ZSkgPSAwOw0KKw0KKyAgICAgICAgdmlydHVhbCBUQm9vbCBSaWdodEtleUNh
bGxiYWNrKCkgPSAwOw0KKw0KICAgICB9Ow0KICNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0K
ICNlbmRpZiAgICAgIC8vIEJSQ1RMSU5URVJGQUNFX0gNCkluZGV4OiBXZWJLaXQvQnJvd3NlckNv
bnRyb2wvc3JjL0JyQ3RsLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29udHJv
bC9zcmMvQnJDdGwuY3BwCShyZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJLaXQvQnJvd3NlckNvbnRy
b2wvc3JjL0JyQ3RsLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTkxOSw3ICs5MTksNyBAQA0KICAg
ICAgICAgICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKiB3ZGd0RXh0ID0gaVdlYktpdENvbnRyb2wt
PldpZGdldEV4dGVuc2lvbigpOw0KICAgICAgICAgICAgICAgICBpZiAod2RndEV4dCkNCiAgICAg
ICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIHdkZ3RFeHQtPk9wdGlvbnNN
ZW51SXRlbVNlbGVjdGVkKGFDb21tYW5kKTsNCisgICAgICAgICAgICAgICAgICAgIHdkZ3RFeHQt
Pk1lbnVJdGVtU2VsZWN0ZWQoIGFDb21tYW5kICk7DQogICAgICAgICAgICAgICAgICAgICB9DQog
ICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICB9DQpAQCAtMTEwOSw3ICsx
MTA5LDcgQEANCiAvLyBSZXF1ZXN0IHRoZSBCcm93c2VyIENvbnRyb2wgdG8gYWRkIGl0cyBvd24g
b3B0aW9ucyB0byB0aGUgb3B0aW9uIG1lbnUNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8v
DQotRVhQT1JUX0Mgdm9pZCBDQnJDdGw6OkFkZE9wdGlvbk1lbnVJdGVtc0woQ0Vpa01lbnVQYW5l
JiBhTWVudVBhbmUsIFRJbnQgLyphUmVzb3VyY2VJZCovLA0KK0VYUE9SVF9DIHZvaWQgQ0JyQ3Rs
OjpBZGRPcHRpb25NZW51SXRlbXNMKENFaWtNZW51UGFuZSYgYU1lbnVQYW5lLCBUSW50IGFSZXNv
dXJjZUlkLA0KICAgICAgICAgVEludCBhQWZ0ZXIpDQogICAgIHsNCiAgICAgVEludCBhZnRlciA9
IGFBZnRlciA9PSAtMSA/IGFBZnRlciA6MDsNCkBAIC0xMTU2LDEzICsxMTU2LDE0IEBADQogICAg
IHBsdWdpbkNvbnRyb2wuQWRkUGx1Z2luT3B0aW9uTWVudUl0ZW1zTChhTWVudVBhbmUsIFRCckN0
bERlZnM6OkVDb21tYW5kSWRQbHVnaW5CYXNlLCBhQWZ0ZXIpOw0KICNpZmRlZiAgUkRfQlJPV1NF
Ul9XSURHRVRTDQogICAgIENXaWRnZXRFeHRlbnNpb24qIHdkZ3RFeHQgPSBpV2ViS2l0Q29udHJv
bC0+V2lkZ2V0RXh0ZW5zaW9uKCk7DQotICAgIGlmICh3ZGd0RXh0KQ0KKyAgICBpZiAoIHdkZ3RF
eHQgKQ0KICAgICAgICAgew0KLSAgICAgICAgd2RndEV4dC0+QWRkT3B0aW9uTWVudUl0ZW1zTChh
TWVudVBhbmUpOw0KKyAgICAgICAgd2RndEV4dC0+QWRkT3B0aW9uTWVudUl0ZW1zTCggYU1lbnVQ
YW5lLCBhUmVzb3VyY2VJZCApOw0KICAgICAgICAgfQ0KICNlbmRpZiAvL1JEX0JST1dTRVJfV0lE
R0VUUw0KICAgICB9DQogDQorDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDQnJDdGw6
OkNsZWFyQ2FjaGUNCiAvLyBGcm9tIENCckN0bEludGVyZmFjZQ0KQEAgLTE2MzIsNyArMTYzMyw2
IEBADQogICAgIENvbXBvbmVudENvbnRyb2woMCktPlNldEZvY3VzKGFGb2N1cywgYURyYXdOb3cp
Ow0KICAgICB9DQogDQotDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDQnJDdGw6Ok1h
a2VWaXNpYmxlDQogLy8gbWFrZXMgdGhlIGNvbnRyb2xzIHZpc2libGUgb3IgaW52aXNpYmxlDQpJ
bmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2UuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvd2Via2l0YnJpZGdlLmgJKHJldmlzaW9uIDIwOTAx
KQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvd2Via2l0YnJpZGdlLmgJKHdvcmtpbmcgY29w
eSkNCkBAIC05Miw3ICs5MiwzMyBAQA0KICAgICBwdWJsaWM6IC8vIE1ldGhvZHMgRnJvbSBNV2Vi
Q2xpZW50QnJpZGdlDQogDQogI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCi0gICAgICAgIHZv
aWQqIGNyZWF0ZVdpZGdldE9iamVjdCh2b2lkKiBleGVjKTsNCisgICAgICAgIC8qKg0KKyAgICAg
ICAgKiBjcmVhdGVXaWRnZXRPYmplY3QNCisgICAgICAgICogRnJvbSBNV2ViQ2xpZW50QnJpZGdl
DQorICAgICAgICAqIFB1cnBvc2UNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBA
cmV0dXJuIHZvaWQqDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCogY3JlYXRlV2lkZ2V0T2Jq
ZWN0KCB2b2lkKiBleGVjICk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogY3JlYXRlV2lk
Z2V0TWVudU9iamVjdA0KKyAgICAgICAgKiBGcm9tIE1XZWJDbGllbnRCcmlkZ2UNCisgICAgICAg
ICogUHVycG9zZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gdm9p
ZCoNCisgICAgICAgICovDQorICAgICAgICB2b2lkKiBjcmVhdGVXaWRnZXRNZW51T2JqZWN0KCB2
b2lkKiBleGVjICk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogY3JlYXRlV2lkZ2V0TWVu
dUl0ZW1PYmplY3QNCisgICAgICAgICogRnJvbSBNV2ViQ2xpZW50QnJpZGdlDQorICAgICAgICAq
IFB1cnBvc2UNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQq
DQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCogY3JlYXRlV2lkZ2V0TWVudUl0ZW1PYmplY3Qo
IHZvaWQqIGV4ZWMgKTsNCisNCiAjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCiANCiAgICAg
ICAgIC8qKg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2lkZ2V0RXh0ZW5zaW9uLmgN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldEV4dGVuc2lvbi5o
CShyZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdldEV4dGVu
c2lvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNDQsNiArNDQsNyBAQA0KIA0KIC8vICBJTkNMVURF
Uw0KICNpbmNsdWRlIDxlMzJiYXNlLmg+DQorI2luY2x1ZGUgPGVpa2FtbnQuaD4NCiAjaW5jbHVk
ZSA8ZTMyaGFzaHRhYi5oPg0KICNpbmNsdWRlIDxCckN0bEludGVyZmFjZS5oPg0KICNpbmNsdWRl
ICJXaWRnZXRFbmdpbmVCcmlkZ2UuaCINCkBAIC02MSw3ICs2MiwxMiBAQA0KIGNsYXNzIENXaWRn
ZXRQcmVmZXJlbmNlczsNCiBjbGFzcyBUV2lkZ2V0UmVuZGVyZXI7DQogY2xhc3MgQ0Vpa01lbnVQ
YW5lOw0KK2NsYXNzIENNZW51SXRlbTsNCiANCituYW1lc3BhY2UgS0pTIHsNCisgICAgY2xhc3Mg
V2lkZ2V0RXZlbnRIYW5kbGVyOw0KK30NCisNCiAvLyBDTEFTUyBERUNMQVJBVElPTg0KIC8qKg0K
ICogIENXaWRnZXRFeHRlbnNpb24NCkBAIC03OSw3ICs4NSw3IEBADQogICAgICAgICAqIEBwYXJh
bSBXaWRnZXRDYWxsYmFjayBpbnRlcmZhY2UNCiAgICAgICAgICogQHJldHVybiBDV2lkZ2V0RXh0
ZW5zaW9uIG9iamVjdC4NCiAgICAgICAgICovDQotICAgICAgICBzdGF0aWMgQ1dpZGdldEV4dGVu
c2lvbiogTmV3TChDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcsTVdpZGdldENhbGxiYWNrJiBhV2lk
Z2V0Q2FsbGJhY2spOw0KKyAgICAgICAgc3RhdGljIENXaWRnZXRFeHRlbnNpb24qIE5ld0woIENX
ZWJLaXRWaWV3JiBhV2ViS2l0VmlldyxNV2lkZ2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjayAp
Ow0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAqIERlc3RydWN0b3IuDQpAQCAtOTMsMTUgKzk5
LDE1IEBADQogICAgICAgICAqIEBwYXJhbSBUaGUgb3B0aW9ucyBtZW51DQogICAgICAgICAqIEBy
ZXR1cm4gdm9pZA0KICAgICAgICAgKi8NCi0gICAgICAgIHZvaWQgQWRkT3B0aW9uTWVudUl0ZW1z
TCggQ0Vpa01lbnVQYW5lJiBhTWVudVBhbmUgKTsNCisgICAgICAgIHZvaWQgQWRkT3B0aW9uTWVu
dUl0ZW1zTCggQ0Vpa01lbnVQYW5lJiBhTWVudVBhbmUsVEludCBhUmVzb3VyY2VJZCApOw0KIA0K
ICAgICAgICAgLyoqDQotICAgICAgICAqIE1ldGhvZCBPcHRpb25zTWVudUl0ZW1TZWxlY3RlZA0K
KyAgICAgICAgKiBNZXRob2QgTWVudUl0ZW1TZWxlY3RlZA0KICAgICAgICAgKiBAc2luY2UgMy4y
DQogICAgICAgICAqIEBwYXJhbSBUaGUgb3B0aW9ucyBtZW51IGNvbW1hbmQNCiAgICAgICAgICog
QHJldHVybiB2b2lkDQogICAgICAgICAqLw0KLSAgICAgICAgdm9pZCBPcHRpb25zTWVudUl0ZW1T
ZWxlY3RlZCggVEludCBhQ29tbWFuZCApOw0KKyAgICAgICAgdm9pZCBNZW51SXRlbVNlbGVjdGVk
KCBUSW50IGFDbWRJZCApOw0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAqIE1ldGhvZCBPbkhp
ZGVTZWxlY3RlZA0KQEAgLTEzMSwxMCArMTM3LDEwIEBADQogICAgICAgICAvKioNCiAgICAgICAg
ICogTWV0aG9kIE9wZW5BcHBsaWNhdGlvbg0KICAgICAgICAgKiBAc2luY2UgMy4yDQotICAgICAg
ICAqIEBwYXJhbSBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdG8gb3Blbg0KKyAgICAgICAg
KiBAcGFyYW0gVGhlIFVpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gb3Blbg0KICAgICAgICAgKiBA
cmV0dXJuIHZvaWQNCiAgICAgICAgICovDQotICAgICAgICB2b2lkIE9wZW5BcHBsaWNhdGlvbihj
b25zdCBURGVzQyYgYUFwcE5hbWUsIGNvbnN0IFREZXNDJiBhUGFyYW0pOw0KKyAgICAgICAgdm9p
ZCBPcGVuQXBwbGljYXRpb24oIGNvbnN0IFRVaWQmIGFBcHBVaWQsIGNvbnN0IFREZXNDJiBhUGFy
YW0gKTsNCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBNZXRob2QgT3BlblVybA0KQEAgLTE0
Miw3ICsxNDgsNyBAQA0KICAgICAgICAgKiBAcGFyYW0gVGhlIHVybCB0byBvcGVuDQogICAgICAg
ICAqIEByZXR1cm4gdm9pZA0KICAgICAgICAgKi8NCi0gICAgICAgIHZvaWQgT3BlblVybChjb25z
dCBURGVzQyYgYVVybCk7DQorICAgICAgICB2b2lkIE9wZW5VcmwoIGNvbnN0IFREZXNDJiBhVXJs
ICk7DQogDQogICAgICAgICAvKioNCiAgICAgICAgICogTWV0aG9kIFByZWZlcmVuY2VGb3JLZXkN
CkBAIC0xNTEsNyArMTU3LDcgQEANCiAgICAgICAgICogQHBhcmFtIFRoZSBwcmVmZXJlbmNlIHZh
bHVlDQogICAgICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAgICAgKi8NCi0gICAgICAgIFRJbnQg
UHJlZmVyZW5jZUZvcktleShjb25zdCBURGVzQyYgYUtleSwgVFB0ckMmIGFWYWx1ZSk7DQorICAg
ICAgICBUSW50IFByZWZlcmVuY2VGb3JLZXkoIGNvbnN0IFREZXNDJiBhS2V5LCBUUHRyQyYgYVZh
bHVlICk7DQogDQogICAgICAgICAvKioNCiAgICAgICAgICogTWV0aG9kIFByZXBhcmVGb3JUcmFu
c2l0aW9uDQpAQCAtMTU5LDcgKzE2NSw3IEBADQogICAgICAgICAqIEBwYXJhbSBUaGUgdHJhbnNp
dGlvbiB0eXBlDQogICAgICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAgICAgKi8NCi0gICAgICAg
IHZvaWQgUHJlcGFyZUZvclRyYW5zaXRpb24oY29uc3QgVERlc0MmIGFUcmFuc2l0aW9uKTsNCisg
ICAgICAgIHZvaWQgUHJlcGFyZUZvclRyYW5zaXRpb24oIGNvbnN0IFREZXNDJiBhVHJhbnNpdGlv
biApOw0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAqIE1ldGhvZCBQZXJmb3JtVHJhbnNpdGlv
bg0KQEAgLTE3NSwyNCArMTgxLDEyNiBAQA0KICAgICAgICAgKiBAcGFyYW0gVGhlIHByZWZlcmVu
Y2UgdmFsdWUNCiAgICAgICAgICogQHJldHVybiB2b2lkDQogICAgICAgICAqLw0KLSAgICAgICAg
dm9pZCBTZXRQcmVmZXJlbmNlRm9yS2V5KGNvbnN0IFREZXNDJiBhS2V5LCBjb25zdCBURGVzQyYg
YVZhbHVlKTsNCisgICAgICAgIHZvaWQgU2V0UHJlZmVyZW5jZUZvcktleSggY29uc3QgVERlc0Mm
IGFLZXksIGNvbnN0IFREZXNDJiBhVmFsdWUgKTsNCiANCiAgICAgICAgIC8qKg0KICAgICAgICAg
KiBNZXRob2QgQWRkT3B0aW9uc01lbnVJdGVtDQogICAgICAgICAqIEBzaW5jZSAzLjINCi0gICAg
ICAgICogQHBhcmFtIE5hbWUgb2Ygb3B0aW9ucyBtZW51IGl0ZW0NCi0gICAgICAgICogQHJldHVy
biBjb21tYW5kIGlkDQorICAgICAgICAqIEBwYXJhbSB0ZXh0IGJ1ZmZlciBkaXNwbGF5ZWQgaW4g
dGhlIG1haW4gYXJlYSBvZiB0aGUgbWVudSBpdGVtDQorICAgICAgICAqIEBwYXJhbSBJRCBvZiB0
aGUgY29tbWFuZCB0byBpc3N1ZSB3aGVuIHRoZSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWQNCisgICAg
ICAgICogQHBhcmFtIGNvbW1hbmQgSUQgb2YgdGhlIHBhcmVudCBtZW51IGl0ZW0NCisgICAgICAg
ICogQHJldHVybiBub25lDQogICAgICAgICAqLw0KLSAgICAgICAgVEludCBBZGRPcHRpb25zTWVu
dUl0ZW0oY29uc3QgVERlc0MmIGFOYW1lKTsNCisgICAgICAgIHZvaWQgQWRkT3B0aW9uc01lbnVJ
dGVtKCBjb25zdCBURGVzQyYgYVRleHQsIFRJbnQgYUNtZElkLCBUSW50IGFQYXJlbnRDbWRJZCwg
dm9pZCogb2JqICk7DQogDQogICAgICAgICAvKioNCi0gICAgICAgICogTWV0aG9kIENsZWFyT3B0
aW9uc01lbnUNCisgICAgICAgICogTWV0aG9kIFNldFJpZ2h0U29mdEtleUxhYmVsDQogICAgICAg
ICAqIEBzaW5jZSAzLjINCi0gICAgICAgICogQHJldHVybiB2b2lkDQorICAgICAgICAqIEBwYXJh
bSB0ZXh0IGJ1ZmZlciB0byBiZSBzZXQgYXMgcmlnaHQgc29mdCBrZXkgbGFiZWwgDQorICAgICAg
ICAqIEByZXR1cm4gbm9uZQ0KICAgICAgICAgKi8NCi0gICAgICAgIHZvaWQgQ2xlYXJPcHRpb25z
TWVudSgpOw0KKyAgICAgICAgdm9pZCBTZXRSaWdodFNvZnRLZXlMYWJlbCggY29uc3QgVERlc0Mm
IGFUZXh0ICk7DQogDQogICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIERlbGV0ZU1lbnVJ
dGVtDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIGNvbW1hbmQgSUQg
b2YgdGhlIG1lbnUgaXRlbQ0KKyAgICAgICAgKiBAcGFyYW0gY29tbWFuZCBJRCBvZiB0aGUgcGFy
ZW50IG1lbnUgaXRlbQ0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAgICAgICovDQorICAg
ICAgICB2b2lkIERlbGV0ZU1lbnVJdGVtKCBUSW50IGFDbWRJZCwgVEludCBhUGFyZW50Q21kSWQg
KTsNCisgICAgICAgIA0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBDbGVhck1lbnVJ
dGVtcw0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBub25lDQorICAg
ICAgICAqIEByZXR1cm4gbm9uZQ0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgQ2xlYXJNZW51
SXRlbXMoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBNZXRob2QgUmVwbGFjZU1lbnVJ
dGVtDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIGNvbW1hbmQgSUQg
b2YgdGhlIG1lbnUgaXRlbSB0byBiZSByZXBsYWNlZA0KKyAgICAgICAgKiBAcGFyYW0gdGV4dC9s
YWJlbCBmb3IgdGhlIG5ldyBtZW51IGl0ZW0NCisgICAgICAgICogQHBhcmFtIGNvbW1hbmQgSUQg
b2YgdGhlIG5ldyBtZW51IGl0ZW0NCisgICAgICAgICogQHBhcmFtIGRpbW1lZCBzdGF0dXMNCisg
ICAgICAgICogQHJldHVybiBub25lDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBSZXBsYWNl
TWVudUl0ZW0oIFRJbnQgb2xkQ21kSWQsIGNvbnN0IFREZXNDJiBuZXdUZXh0LCANCisgICAgICAg
ICAgICBUSW50IG5ld0NtZElkLCBUSW50IG5ld0RpbW1lZCApOw0KKw0KKyAgICAgICAgLyoqDQor
ICAgICAgICAqIE1ldGhvZCBHZXRNZW51SXRlbQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAg
ICAgICAqIEBwYXJhbSB0ZXh0L2xhYmVsIGZvciB0aGUgbWVudSBpdGVtDQorICAgICAgICAqIEBw
YXJhbSBjb21tYW5kIElEIG9mIHRoZSBtZW51IGl0ZW0NCisgICAgICAgICogQHBhcmFtIGJvb2xl
YW4gZmxhZyB0byBkaW0gb3IgdW5kaW0gdGhlIG1lbnUgaXRlbQ0KKyAgICAgICAgKiBAcmV0dXJu
IG5vbmUNCisgICAgICAgICovDQorICAgICAgICB2b2lkIEdldE1lbnVJdGVtKCBURGVzJiB0ZXh0
VmFsLCBUSW50JiBjbWRJZCwgVEJvb2wmIGRpbVN0YXQgKTsNCisNCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBNZXRob2QgU2V0RGltbWVkDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHBhcmFtIGNvbW1hbmQgSUQgb2YgdGhlIG1lbnUgaXRlbQ0KKyAgICAgICAgKiBAcGFyYW0g
Ym9vbGVhbiBmbGFnIHRvIGRpbSBvciB1bmRpbSB0aGUgbWVudSBpdGVtDQorICAgICAgICAqIEBy
ZXR1cm4gbm9uZQ0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgU2V0RGltbWVkKCBUSW50IGFD
bWRJZCwgVEJvb2wgYVZhbHVlICk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9k
IFNldE1lbnVJdGVtT2JzZXJ2ZXINCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBA
cGFyYW0gY29tbWFuZCBJRCBvZiB0aGUgbWVudSBpdGVtDQorICAgICAgICAqIEBwYXJhbSBjYWxs
YmFjayBmdW5jdGlvbg0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAgICAgICovDQorICAg
ICAgICB2b2lkIFNldE1lbnVJdGVtT2JzZXJ2ZXIoIA0KKyAgICAgICAgICAgIFRJbnQgYUNtZElk
LCBXaWRnZXRFdmVudEhhbmRsZXIqIGFPblNlbGVjdENhbGxiYWNrICk7DQorDQorICAgICAgICAv
KioNCisgICAgICAgICogTWV0aG9kIEdldE1lbnVJdGVtT2JzZXJ2ZXINCisgICAgICAgICogQHNp
bmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gY29tbWFuZCBJRCBvZiB0aGUgbWVudSBpdGVtDQor
ICAgICAgICAqIEByZXR1cm4gY2FsbGJhY2sgZnVuY3Rpb24NCisgICAgICAgICovDQorICAgICAg
ICBXaWRnZXRFdmVudEhhbmRsZXIqIEdldE1lbnVJdGVtT2JzZXJ2ZXIoIFRJbnQgYUNtZElkICk7
DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIFNldE1lbnVPYnNlcnZlcg0KKyAg
ICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBjYWxsYmFjayBmdW5jdGlvbg0K
KyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldE1l
bnVPYnNlcnZlciggV2lkZ2V0RXZlbnRIYW5kbGVyKiBhTWVudUNhbGxiYWNrICk7DQorDQorICAg
ICAgICAvKioNCisgICAgICAgICogTWV0aG9kIEdldE1lbnVPYnNlcnZlcg0KKyAgICAgICAgKiBA
c2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSANCisgICAgICAgICogQHJldHVybiBjYWxsYmFj
ayBmdW5jdGlvbg0KKyAgICAgICAgKi8NCisgICAgICAgIFdpZGdldEV2ZW50SGFuZGxlciomIEdl
dE1lbnVPYnNlcnZlcigpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCBTZXRS
aWdodEtleU9ic2VydmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFt
IGNhbGxiYWNrIGZ1bmN0aW9uDQorICAgICAgICAqIEByZXR1cm4gbm9uZQ0KKyAgICAgICAgKi8N
CisgICAgICAgIHZvaWQgU2V0UmlnaHRLZXlPYnNlcnZlciggV2lkZ2V0RXZlbnRIYW5kbGVyKiBh
TWVudUNhbGxiYWNrICk7DQorICAgICAgICANCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBN
ZXRob2QgR2V0TWVudU9ic2VydmVyDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICog
QHBhcmFtIA0KKyAgICAgICAgKiBAcmV0dXJuIGNhbGxiYWNrIGZ1bmN0aW9uDQorICAgICAgICAq
Lw0KKyAgICAgICAgV2lkZ2V0RXZlbnRIYW5kbGVyKiYgR2V0UmlnaHRLZXlPYnNlcnZlcigpOw0K
Kw0KKyAgICAgICAgLyoqDQogICAgICAgICAqIE1ldGhvZCBHZXRXaWRnZXRJZA0KICAgICAgICAg
KiBAc2luY2UgMy4yDQogICAgICAgICAqIEByZXR1cm4gVGhlIHdpZGdldCBpZGVudGlmaWVyDQpA
QCAtMjA1LDcgKzMxMyw3IEBADQogICAgICAgICAqIEBwYXJhbSBUQm9vbCB2aXNpYmxlDQogICAg
ICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAgICAgKi8NCi0gICAgICAgIHZvaWQgU2V0U2Nyb2xs
QmFyKFRCb29sIGFWaXNpYmxlKTsNCisgICAgICAgIHZvaWQgU2V0U2Nyb2xsQmFyKCBUQm9vbCBh
VmlzaWJsZSApOw0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAqIE1ldGhvZCBTZXROYXZpZ2F0
aW9uRW5hYmxlZA0KQEAgLTIxMywyMyArMzIxLDIzIEBADQogICAgICAgICAqIEBwYXJhbSBUQm9v
bCBlbmFibGVkDQogICAgICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAgICAgKi8NCi0gICAgICAg
IHZvaWQgU2V0TmF2aWdhdGlvbkVuYWJsZWQoVEJvb2wgYUVuYWJsZSk7DQorICAgICAgICB2b2lk
IFNldE5hdmlnYXRpb25FbmFibGVkKCBUQm9vbCBhRW5hYmxlICk7DQogDQogICAgICAgICAvKioN
CiAgICAgICAgICogTWV0aG9kIFNldE9wdGlvbnNNZW51TGlzdGVuZXINCiAgICAgICAgICogQHNp
bmNlIDMuMg0KLSAgICAgICAgKiBAcGFyYW0gQ1dpZGdldEV2ZW50SGFuZGxlcg0KKyAgICAgICAg
KiBAcGFyYW0gV2lkZ2V0RXZlbnRIYW5kbGVyDQogICAgICAgICAqIEByZXR1cm4gdm9pZA0KICAg
ICAgICAgKi8NCi0gICAgICAgIHZvaWQgU2V0T3B0aW9uc01lbnVMaXN0ZW5lcihDV2lkZ2V0RXZl
bnRIYW5kbGVyKiBhQ2FsbGJhY2spOw0KKyAgICAgICAgdm9pZCBTZXRPcHRpb25zTWVudUxpc3Rl
bmVyKCBXaWRnZXRFdmVudEhhbmRsZXIqIGFDYWxsYmFjayApOw0KIA0KICAgICAgICAgLyoqDQog
ICAgICAgICAqIE1ldGhvZCBTZXRPbkhpZGVMaXN0ZW5lcg0KICAgICAgICAgKiBAc2luY2UgMy4y
DQotICAgICAgICAqIEBwYXJhbSBDV2lkZ2V0RXZlbnRIYW5kbGVyDQorICAgICAgICAqIEBwYXJh
bSBXaWRnZXRFdmVudEhhbmRsZXINCiAgICAgICAgICogQHJldHVybiB2b2lkDQogICAgICAgICAq
Lw0KLSAgICAgICAgdm9pZCBTZXRPbkhpZGVMaXN0ZW5lcihDV2lkZ2V0RXZlbnRIYW5kbGVyKiBh
Q2FsbGJhY2spOw0KKyAgICAgICAgdm9pZCBTZXRPbkhpZGVMaXN0ZW5lciggV2lkZ2V0RXZlbnRI
YW5kbGVyKiBhQ2FsbGJhY2sgKTsNCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBNZXRob2Qg
U2V0T25SZW1vdmVMaXN0ZW5lcg0KQEAgLTIzNyw3ICszNDUsNyBAQA0KICAgICAgICAgKiBAcGFy
YW0gQ1dpZGdldEV2ZW50SGFuZGxlcg0KICAgICAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgICAg
ICovDQotICAgICAgICB2b2lkIFNldE9uUmVtb3ZlTGlzdGVuZXIoQ1dpZGdldEV2ZW50SGFuZGxl
ciogYUNhbGxiYWNrKTsNCisgICAgICAgIHZvaWQgU2V0T25SZW1vdmVMaXN0ZW5lciggV2lkZ2V0
RXZlbnRIYW5kbGVyKiBhQ2FsbGJhY2sgKTsNCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBN
ZXRob2QgU2V0T25TaG93TGlzdGVuZXINCkBAIC0yNDUsOCArMzUzLDI1IEBADQogICAgICAgICAq
IEBwYXJhbSBDV2lkZ2V0RXZlbnRIYW5kbGVyDQogICAgICAgICAqIEByZXR1cm4gdm9pZA0KICAg
ICAgICAgKi8NCi0gICAgICAgIHZvaWQgU2V0T25TaG93TGlzdGVuZXIoQ1dpZGdldEV2ZW50SGFu
ZGxlciogYUNhbGxiYWNrKTsNCisgICAgICAgIHZvaWQgU2V0T25TaG93TGlzdGVuZXIoIFdpZGdl
dEV2ZW50SGFuZGxlciogYUNhbGxiYWNrICk7DQorICAgICAgICANCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBNZXRob2QgR2V0RnJvbU1lbnVJdGVtQ29sbGVjdGlvbg0KKyAgICAgICAgKiBAc2lu
Y2UgMy4yDQorICAgICAgICAqIEBwYXJhbSB0ZXh0IG9mIG1lbnUgaXRlbQ0KKyAgICAgICAgKiBA
cmV0dXJuIHZvaWQqDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCogR2V0RnJvbU1lbnVJdGVt
Q29sbGVjdGlvbiggY29uc3QgVERlc0MmIHRleHRWYWwgKTsNCisgICAgICAgIA0KKyAgICAgICAg
LyoqDQorICAgICAgICAqIE1ldGhvZCBHZXRGcm9tTWVudUl0ZW1Db2xsZWN0aW9uDQorICAgICAg
ICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIGNvbW1tYW5kIGlkIG9mIG1lbnUgaXRl
bQ0KKyAgICAgICAgKiBAcmV0dXJuIHZvaWQqDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCog
R2V0RnJvbU1lbnVJdGVtQ29sbGVjdGlvbiggVEludCBjbWRJZCApOw0KIA0KKw0KICAgICBwdWJs
aWM6DQogICAgICAgICAvKioNCiAgICAgICAgICogTWV0aG9kIFdpZGdldFJlbmRlcmVyDQpAQCAt
MjYwLDcgKzM4NSw4IEBADQogICAgICAgICAqIEBzaW5jZSAzLjINCiAgICAgICAgICogQHJldHVy
biB3aWRnZXQgZW5naW5lIGJyaWRnZQ0KICAgICAgICAgKi8NCi0gICAgICAgIE1XaWRnZXRFbmdp
bmVCcmlkZ2UmIFdpZGdldEVuZ2luZUJyaWRnZSgpIGNvbnN0IHsgcmV0dXJuICppV2lkZ2V0RW5n
aW5lQnJpZGdlOyB9DQorICAgICAgICBNV2lkZ2V0RW5naW5lQnJpZGdlJiBXaWRnZXRFbmdpbmVC
cmlkZ2UoKSBjb25zdCB7IA0KKyAgICAgICAgICAgIHJldHVybiAqaVdpZGdldEVuZ2luZUJyaWRn
ZTsgfQ0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAqIE1ldGhvZCBOYXZpZ2F0aW9uRW5hYmxl
ZA0KQEAgLTI5Miw3ICs0MTgsOCBAQA0KICAgICAgICAgKiBAcGFyYW0gVGhlIHZhbHVlIGZvciB0
aGUgcGFyYW1hdGVyDQogICAgICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAgICAgKi8NCi0gICAg
ICAgIHZvaWQgU2V0UGFyYW1MKFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0s
IGNvbnN0IFREZXNDJiBhVmFsdWUpOw0KKyAgICAgICAgdm9pZCBTZXRQYXJhbUwoIA0KKyAgICAg
ICAgICAgIFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0sIGNvbnN0IFREZXND
JiBhVmFsdWUgKTsNCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBNZXRob2QgdG8gc2V0IHBh
cmFtZXRlcnMgaW4gdGhlIGJyb3dzZXIgZW5naW5lDQpAQCAtMzAxLDE2ICs0MjgsNDAgQEANCiAg
ICAgICAgICogQHBhcmFtIFRoZSB2YWx1ZSBmb3IgdGhlIHBhcmFtYXRlcg0KICAgICAgICAgKiBA
cmV0dXJuIHZvaWQNCiAgICAgICAgICovDQotICAgICAgICB2b2lkIFNldFBhcmFtTChUQnJDdGxE
ZWZzOjpUQnJDdGxXaWRnZXRQYXJhbXMgYVBhcmFtLCBUVWludCBhVmFsdWUpOw0KKyAgICAgICAg
dm9pZCBTZXRQYXJhbUwoIFRCckN0bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0sIFRV
aW50IGFWYWx1ZSApOw0KIA0KICAgICAgICAgLyoqDQorICAgICAgICAqIE1ldGhvZCB0byBpbnZv
a2UgcmlnaHQgc29mdCBrZXkgY2FsbGJhY2sNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAg
ICAgKiBAcGFyYW0gbm9uZQ0KKyAgICAgICAgKiBAcmV0dXJuIFRib29sDQorICAgICAgICAqLw0K
KyAgICAgICAgVEJvb2wgUmlnaHRLZXlDYWxsYmFjaygpOw0KKw0KKyAgICAgICAgLyoqDQogICAg
ICAgICAqIE1ldGhvZCBjcmVhdGVXaWRnZXRPYmplY3QNCiAgICAgICAgICogQHNpbmNlIDMuMg0K
ICAgICAgICAgKiBAcGFyYW0NCiAgICAgICAgICogQHJldHVybiB2b2lkDQogICAgICAgICAqLw0K
LSAgICAgICAgdm9pZCogY3JlYXRlV2lkZ2V0T2JqZWN0KHZvaWQqIGV4ZWMpOw0KKyAgICAgICAg
dm9pZCogY3JlYXRlV2lkZ2V0T2JqZWN0KCB2b2lkKiBhRXhlYyApOw0KIA0KKyAgICAgICAgLyoq
DQorICAgICAgICAqIE1ldGhvZCBjcmVhdGVXaWRnZXRNZW51T2JqZWN0DQorICAgICAgICAqIEBz
aW5jZSAzLjINCisgICAgICAgICogQHBhcmFtDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAg
ICAgICAgKi8NCisgICAgICAgIHZvaWQqIGNyZWF0ZVdpZGdldE1lbnVPYmplY3QoIHZvaWQqIGFF
eGVjICk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogTWV0aG9kIGNyZWF0ZVdpZGdldE1l
bnVJdGVtT2JqZWN0DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtDQor
ICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQqIGNyZWF0
ZVdpZGdldE1lbnVJdGVtT2JqZWN0KCB2b2lkKiBhRXhlYyApOw0KKw0KICAgICBwcml2YXRlOg0K
ICAgICAgICAgIC8qKg0KICAgICAgICAgKiBNZXRob2QgTG9hZFdpZGdldEVuZ2luZURsbEwNCkBA
IC0zMzIsOCArNDgzLDE2IEBADQogICAgICAgICAqIEBwYXJhbSBUaGUgbmFtZSBvZiB0aGUgYXBw
bGljYXRpb24gdG8gb3Blbg0KICAgICAgICAgKiBAcmV0dXJuIHZvaWQNCiAgICAgICAgICovDQot
ICAgICAgICB2b2lkIExhdW5jaEFwcGxpY2F0aW9uTChjb25zdCBUVWlkJiBhVWlkLCBjb25zdCBU
RGVzQyYgYVBhcmFtKTsNCisgICAgICAgIHZvaWQgTGF1bmNoQXBwbGljYXRpb25MKCBjb25zdCBU
VWlkJiBhVWlkLCBjb25zdCBURGVzQyYgYVBhcmFtICk7DQogDQorICAgICAgICAvKg0KKyAgICAg
ICAgKiBNZXRob2QgRGVsZXRlVHJlZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAq
IEBwYXJhbSByb290IG5vZGUgb2YgdGhlIHRyZWUNCisgICAgICAgICogQHJldHVybiB2b2lkDQor
ICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBEZWxldGVUcmVlKCBDTWVudUl0ZW0qIG5vZGUgKTsN
CisNCiAgICAgcHJvdGVjdGVkOg0KICAgICAgICAgLyoqDQogICAgICAgICAqIDJuZCBwaGFzZSBj
b25zdHJ1Y3Rvci4NCkBAIC0zNDUsMzMgKzUwNCwyMzggQEANCiAgICAgICAgICovDQogICAgICAg
ICBDV2lkZ2V0RXh0ZW5zaW9uKCBDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcsTVdpZGdldENhbGxi
YWNrJiBhV2lkZ2V0Q2FsbGJhY2sgKTsNCiANCi0NCiAgICAgcHJpdmF0ZToNCi0gICAgICAgIENX
ZWJLaXRWaWV3KiBpV2ViS2l0VmlldzsgICAgICAgICAgICAgICAgICAgIC8vbm90IG93bmVkDQor
ICAgICAgICBDV2ViS2l0VmlldyogICAgICAgICAgICBpV2ViS2l0VmlldzsvL25vdCBvd25lZA0K
KyAgICAgICAgQ1dpZGdldFByZWZlcmVuY2VzKiAgICAgaVByZWZlcmVuY2VzOw0KKyAgICAgICAg
VFdpZGdldFJlbmRlcmVyKiAgICAgICAgaVdpZGdldFJlbmRlcmVyOyAgICAgICANCisgICAgICAg
IFRJbnQgICAgICAgICAgICAgICAgICAgIGlXaWRnZXRJZDsNCisgICAgICAgIFRCb29sICAgICAg
ICAgICAgICAgICAgIGlOYXZpZ2F0aW9uRW5hYmxlZDsNCisgICAgICAgIFRCb29sICAgICAgICAg
ICAgICAgICAgIGlQYWdlU2NhbGVyV2FzRW5hYmxlZDsNCisgICAgICAgIEhCdWZDKiAgICAgICAg
ICAgICAgICAgIGlXaWRnZXRCYXNlUGF0aDsNCisgICAgICAgIEhCdWZDKiAgICAgICAgICAgICAg
ICAgIGlXaWRnZXRCdW5kbGVJZDsNCisgICAgICAgIE1XaWRnZXRFbmdpbmVCcmlkZ2UqICAgIGlX
aWRnZXRFbmdpbmVCcmlkZ2U7DQorICAgICAgICBNV2lkZ2V0Q2FsbGJhY2sqICAgICAgICBpV2lk
Z2V0Q2FsbGJhY2s7DQorICAgICAgICBSUHRySGFzaE1hcDxURGVzQyxUSW50PiBpQXBwVWlkTWFw
Ow0KKyAgICAgICAgUkxpYnJhcnkgICAgICAgICAgICAgICAgaUxpYnJhcnk7DQorICAgICAgICBD
TWVudUl0ZW0qICAgICAgICAgICAgICBpTWVudVJvb3Q7DQorICAgICAgICBXaWRnZXRFdmVudEhh
bmRsZXIqICAgICBpTWVudUNhbGxiYWNrOw0KKyAgICAgICAgV2lkZ2V0RXZlbnRIYW5kbGVyKiAg
ICAgaVJpZ2h0S2V5Q2FsbGJhY2s7DQogDQotICAgICAgICBDV2lkZ2V0UHJlZmVyZW5jZXMqIGlQ
cmVmZXJlbmNlczsNCi0gICAgICAgIFRXaWRnZXRSZW5kZXJlciogaVdpZGdldFJlbmRlcmVyOw0K
LQ0KLSAgICAgICAgc3RydWN0IFRNZW51SXRlbQ0KKyAgICAgICAgc3RydWN0IFRDYXNjYWRlSURN
YXANCiAgICAgICAgICAgICB7DQotICAgICAgICAgICAgSEJ1ZkMqIGlUZXh0Ow0KLSAgICAgICAg
ICAgIFRJbnQgaUNtZElkOw0KKyAgICAgICAgICAgIFRJbnQgaVJlc291cmNlSWQ7DQorICAgICAg
ICAgICAgVEludCBwYXJlbnRDbWRJZDsNCiAgICAgICAgICAgICB9Ow0KIA0KLSAgICAgICAgUkFy
cmF5PFRNZW51SXRlbT4gaU1lbnVJdGVtczsNCisgICAgICAgIFJBcnJheTxUQ2FzY2FkZUlETWFw
PiAgIGlDYXNjYWRlQXJyOw0KKyAgICAgICAgVEludCAgICAgICAgICAgICAgICAgICAgaVJlc291
cmNlSWQ7DQogDQotICAgICAgICBUSW50ICAgIGlXaWRnZXRJZDsNCi0gICAgICAgIFRCb29sICAg
aU5hdmlnYXRpb25FbmFibGVkOw0KLSAgICAgICAgVEJvb2wgICBpUGFnZVNjYWxlcldhc0VuYWJs
ZWQ7DQotICAgICAgICBIQnVmQyogIGlXaWRnZXRCYXNlUGF0aDsNCi0gICAgICAgIEhCdWZDKiAg
aVdpZGdldEJ1bmRsZUlkOw0KKyAgICBwcml2YXRlOg0KKyAgICAgICAgLyoNCisgICAgICAgICog
TWV0aG9kIEFkZE1lbnVJdGVtDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBh
cmFtIG1lbnUgcGFuZQ0KKyAgICAgICAgKiBAcGFyYW0gbWVudSBpdGVtIHRvIGJlIGFkZGVkDQor
ICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgQWRkTWVu
dUl0ZW0oIENFaWtNZW51UGFuZSYgYU1lbnVQYW5lLCBDTWVudUl0ZW0qIGFOb2RlICk7DQogDQot
ICAgICAgICBNV2lkZ2V0RW5naW5lQnJpZGdlKiBpV2lkZ2V0RW5naW5lQnJpZGdlOw0KLSAgICAg
ICAgTVdpZGdldENhbGxiYWNrKiBpV2lkZ2V0Q2FsbGJhY2s7DQorICAgICAgICAvKg0KKyAgICAg
ICAgKiBNZXRob2QgSW5zZXJ0DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBh
cmFtIHJvb3Qgb2YgdGhlIHRyZWUNCisgICAgICAgICogQHBhcmFtIG1lbnUgaXRlbSB0byBiZSBp
bnNlcnRlZA0KKyAgICAgICAgKiBAcGFyYW0gcGFyZW50IGNvbW1hbmQgaWQgb2YgdGhlIG1lbnUg
aXRlbSB0byBiZSBpbnNlcnRlZA0KKyAgICAgICAgKiBAcmV0dXJuIFRCb29sDQorICAgICAgICAq
Lw0KKyAgICAgICAgVEJvb2wgSW5zZXJ0KCBDTWVudUl0ZW0qIHJvb3QsIENNZW51SXRlbSogaXRl
bSwgVEludCBwYXJlbnRJZCApOw0KIA0KLSAgICAgICAgUlB0ckhhc2hNYXA8VERlc0MsVEludD4g
aUFwcFVpZE1hcDsNCi0gICAgICAgIFJMaWJyYXJ5IGlMaWJyYXJ5Ow0KKyAgICAgICAgLyoNCisg
ICAgICAgICogTWV0aG9kIEluc2VydFNpYmxpbmcNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAg
ICAgICAgKiBAcGFyYW0gcm9vdCBvZiB0aGUgdHJlZQ0KKyAgICAgICAgKiBAcGFyYW0gbWVudSBp
dGVtIHRvIGJlIGluc2VydGVkDQorICAgICAgICAqIEByZXR1cm4gdm9pZA0KKyAgICAgICAgKi8N
CisgICAgICAgIHZvaWQgSW5zZXJ0U2libGluZyggQ01lbnVJdGVtKiByb290LCBDTWVudUl0ZW0q
IGl0ZW0gKTsNCiANCisgICAgICAgIC8qDQorICAgICAgICAqIE1ldGhvZCBGaW5kTm9kZUJ5SWQN
CisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gcm9vdCBvZiB0aGUgdHJl
ZQ0KKyAgICAgICAgKiBAcGFyYW0gY29tbWFuZCBpZCBvZiB0aGUgbWVudSBpdGVtIA0KKyAgICAg
ICAgKiBAcmV0dXJuIENNZW51SXRlbSoNCisgICAgICAgICovDQorICAgICAgICBDTWVudUl0ZW0q
IEZpbmROb2RlQnlJZCggQ01lbnVJdGVtKiBub2RlLCBUSW50IGFDbWRJZCApOw0KKw0KKyAgICAg
ICAgLyoNCisgICAgICAgICogTWV0aG9kIEZpbmROb2RlQnlUZXh0DQorICAgICAgICAqIEBzaW5j
ZSAzLjINCisgICAgICAgICogQHBhcmFtIHJvb3Qgb2YgdGhlIHRyZWUNCisgICAgICAgICogQHBh
cmFtIHRleHQgb2YgdGhlIG1lbnUgaXRlbSANCisgICAgICAgICogQHJldHVybiBDTWVudUl0ZW0q
DQorICAgICAgICAqLw0KKyAgICAgICAgQ01lbnVJdGVtKiBGaW5kTm9kZUJ5VGV4dCggQ01lbnVJ
dGVtKiBub2RlLCBjb25zdCBURGVzQyYgYVRleHQgKTsNCisNCiAgICAgfTsNCiANCisNCitjbGFz
cyBDTWVudUl0ZW0gOiBwdWJsaWMgQ0Jhc2UNCisgICAgeyAgICANCisgICAgcHVibGljOg0KKyAg
ICAgICAgLyoqDQorICAgICAgICAqIENvbnN0cnVjdG9yICAgICAgIA0KKyAgICAgICAgKi8NCisg
ICAgICAgIHN0YXRpYyBDTWVudUl0ZW0qIE5ld0woIGNvbnN0IFREZXNDMTYmIGFUZXh0LCBUSW50
IGFDbWRJZCwgdm9pZCogYU9iaiA9IE5VTEwgKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAg
KiBEZXN0cnVjdG9yLg0KKyAgICAgICAgKi8NCisgICAgICAgIHZpcnR1YWwgfkNNZW51SXRlbSgp
Ow0KKw0KKyAgICBwcm90ZWN0ZWQ6DQorICAgICAgICAvKioNCisgICAgICAgICogMm5kIHBoYXNl
IGNvbnN0cnVjdG9yLg0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgQ29uc3RydWN0TCgpOw0K
Kw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEMrKyBjb25zdHJ1Y3Rvci4NCisgICAgICAgICov
DQorICAgICAgICBDTWVudUl0ZW0oIGNvbnN0IFREZXNDMTYmIGFUZXh0LCBUSW50IGFDbWRJZCwg
dm9pZCogYU9iaiA9IE5VTEwgKTsgICAgICAgDQorDQorICAgIHB1YmxpYzoNCisNCisgICAgICAg
IC8qDQorICAgICAgICAqIE1ldGhvZCBUZXh0KCkNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAg
ICAgICAgKiBAcGFyYW0gbm9uZQ0KKyAgICAgICAgKiBAcmV0dXJuIHRleHQgb2YgbWVudSBpdGVt
DQorICAgICAgICAqLw0KKyAgICAgICAgY29uc3QgVERlc0MmIFRleHQoKSANCisgICAgICAgICAg
ICB7IA0KKyAgICAgICAgICAgIGlmICggaVRleHQgKSByZXR1cm4gKmlUZXh0Ow0KKyAgICAgICAg
ICAgIGVsc2UgcmV0dXJuIEtOdWxsRGVzQygpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAg
IC8qDQorICAgICAgICAqIE1ldGhvZCBDbWRJZCgpDQorICAgICAgICAqIEBzaW5jZSAzLjINCisg
ICAgICAgICogQHBhcmFtIG5vbmUNCisgICAgICAgICogQHJldHVybiBjb21tYW5kIGlkIG9mIG1l
bnUgaXRlbQ0KKyAgICAgICAgKi8NCisgICAgICAgIFRJbnQgQ21kSWQoKSB7IHJldHVybiBpQ21k
SWQ7IH0NCisNCisgICAgICAgIC8qDQorICAgICAgICAqIE1ldGhvZCBGaXJzdENoaWxkKCkNCisg
ICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gbm9uZQ0KKyAgICAgICAgKiBA
cmV0dXJuIGZpcnN0IGNoaWxkIG9mIG1lbnUgaXRlbQ0KKyAgICAgICAgKi8NCisgICAgICAgIENN
ZW51SXRlbSomIEZpcnN0Q2hpbGQoKSB7IHJldHVybiBpRmlyc3RDaGlsZDsgfQ0KKw0KKyAgICAg
ICAgLyoNCisgICAgICAgICogTWV0aG9kIE5leHRTaWJsaW5nKCkNCisgICAgICAgICogQHNpbmNl
IDMuMg0KKyAgICAgICAgKiBAcGFyYW0gbm9uZQ0KKyAgICAgICAgKiBAcmV0dXJuIG5leHQgc2li
bGluZyBvZiBtZW51IGl0ZW0NCisgICAgICAgICovDQorICAgICAgICBDTWVudUl0ZW0qJiBOZXh0
U2libGluZygpIHsgcmV0dXJuIGlOZXh0U2libGluZzsgfQ0KKyAgICAgICAgDQorICAgICAgICAv
Kg0KKyAgICAgICAgKiBNZXRob2QgRGltbWVkKCkNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAg
ICAgICAgKiBAcGFyYW0gbm9uZQ0KKyAgICAgICAgKiBAcmV0dXJuIGRpbW1lZCBzdGF0dXMgb2Yg
bWVudSBpdGVtDQorICAgICAgICAqLw0KKyAgICAgICAgVEJvb2wgRGltbWVkKCkgeyByZXR1cm4g
aURpbW1lZDsgfQ0KKw0KKyAgICAgICAgLyoNCisgICAgICAgICogTWV0aG9kIENhbGxiYWNrKCkN
CisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gbm9uZQ0KKyAgICAgICAg
KiBAcmV0dXJuIG9uc2VsZWN0IGNhbGxiYWNrIGZ1bmN0aW9uIG9mIG1lbnUgaXRlbQ0KKyAgICAg
ICAgKi8NCisgICAgICAgIFdpZGdldEV2ZW50SGFuZGxlciomIENhbGxiYWNrKCkgeyByZXR1cm4g
aUNhbGxiYWNrOyB9DQorDQorICAgICAgICAvKg0KKyAgICAgICAgKiBNZXRob2QgT2JqKCkNCisg
ICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gbm9uZQ0KKyAgICAgICAgKiBA
cmV0dXJuIG1lbnUgaXRlbSBqYXZhc2NyaXB0IG9iamVjdA0KKyAgICAgICAgKi8NCisgICAgICAg
IHZvaWQqJiBPYmooKSB7IHJldHVybiBpT2JqOyB9DQorDQorICAgICAgICAvKg0KKyAgICAgICAg
KiBNZXRob2QgU2V0VGV4dCgpDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBh
cmFtIHRleHQgb2YgbWVudSBpdGVtDQorICAgICAgICAqIEByZXR1cm4gbm9uZQ0KKyAgICAgICAg
Ki8NCisgICAgICAgIHZvaWQgU2V0VGV4dCggY29uc3QgVERlc0MmIGFUZXh0ICkgDQorICAgICAg
ICAgICAgeyANCisgICAgICAgICAgICBIQnVmQyogdG1wVGV4dCA9IEhCdWZDOjpOZXdMKCBhVGV4
dC5MZW5ndGgoKSApOw0KKyAgICAgICAgICAgIHRtcFRleHQtPkRlcygpLkFwcGVuZCggYVRleHQg
KTsNCisgICAgICAgICAgICBkZWxldGUgaVRleHQ7DQorICAgICAgICAgICAgaVRleHQgPSB0bXBU
ZXh0OyAgICANCisgICAgICAgICAgICB9DQorDQorICAgICAgICAvKg0KKyAgICAgICAgKiBNZXRo
b2QgU2V0Q21kSWQoKQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBj
b21tYW5kIGlkIG9mIG1lbnUgaXRlbQ0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAgICAg
ICovDQorICAgICAgICB2b2lkIFNldENtZElkKCBUSW50IGFDbWRJZCApIHsgaUNtZElkID0gYUNt
ZElkOyB9DQorDQorICAgICAgICAvKg0KKyAgICAgICAgKiBNZXRob2QgU2V0Rmlyc3RDaGlsZCgp
DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIGZpcnN0IGNoaWxkIG9m
IG1lbnUgaXRlbQ0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAgICAgICovDQorICAgICAg
ICB2b2lkIFNldEZpcnN0Q2hpbGQoIENNZW51SXRlbSomIGFGaXJzdENoaWxkICkgeyBpRmlyc3RD
aGlsZCA9IGFGaXJzdENoaWxkOyB9DQorICAgICAgICANCisgICAgICAgIC8qDQorICAgICAgICAq
IE1ldGhvZCBTZXROZXh0U2libGluZygpDQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAg
ICogQHBhcmFtIG5leHQgc2libGluZyBvZiBtZW51IGl0ZW0NCisgICAgICAgICogQHJldHVybiBu
b25lDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXROZXh0U2libGluZyggQ01lbnVJdGVt
KiYgYU5leHRTaWJsaW5nICkgeyBpTmV4dFNpYmxpbmcgPSBhTmV4dFNpYmxpbmc7IH0NCisgICAg
ICAgIA0KKyAgICAgICAgLyoNCisgICAgICAgICogTWV0aG9kIFNldERpbW1lZCgpDQorICAgICAg
ICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIGRpbW1lZCBzdGF0dXMNCisgICAgICAg
ICogQHJldHVybiBub25lDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBTZXREaW1tZWQoIFRC
b29sIGFEaW1tZWQgKSB7IGlEaW1tZWQgPSBhRGltbWVkOyB9DQorDQorICAgICAgICAvKg0KKyAg
ICAgICAgKiBNZXRob2QgU2V0Q2FsbGJhY2soKQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAg
ICAgICAqIEBwYXJhbSBjYWxsYmFjayBmdW5jdGlvbg0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUN
CisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldENhbGxiYWNrKCBXaWRnZXRFdmVudEhhbmRs
ZXIqJiBhQ2FsbGJhY2sgKSB7IGlDYWxsYmFjayA9IGFDYWxsYmFjazsgfQ0KKw0KKyAgICAgICAg
LyoNCisgICAgICAgICogTWV0aG9kIFNldE9iaigpDQorICAgICAgICAqIEBzaW5jZSAzLjINCisg
ICAgICAgICogQHBhcmFtIG1lbnUgaXRlbSBqYXZhc2NyaXB0IG9iamVjdA0KKyAgICAgICAgKiBA
cmV0dXJuIG5vbmUNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFNldE9iaiggdm9pZComIGFP
YmogKSB7IGlPYmogPSBhT2JqOyB9DQorDQorICAgIHByaXZhdGU6DQorICAgICAgICBIQnVmQyog
ICAgICAgICAgICAgICAgICBpVGV4dDsvL2RhdGENCisgICAgICAgIFRJbnQgICAgICAgICAgICAg
ICAgICAgIGlDbWRJZDsvL2RhdGENCisgICAgICAgIENNZW51SXRlbSogICAgICAgICAgICAgIGlG
aXJzdENoaWxkOy8vbGVmdCBub2RlDQorICAgICAgICBDTWVudUl0ZW0qICAgICAgICAgICAgICBp
TmV4dFNpYmxpbmc7Ly9yaWdodCBub2RlDQorICAgICAgICBUQm9vbCAgICAgICAgICAgICAgICAg
ICBpRGltbWVkOy8vRVRydWUgdG8gZGltIHRoaXMgbWVudSBpdGVtLiBFRmFsc2UgdG8gdW4tZGlt
IHRoaXMgbWVudSBpdGVtLiANCisgICAgICAgIFdpZGdldEV2ZW50SGFuZGxlciogICAgIGlDYWxs
YmFjazsNCisgICAgICAgIHZvaWQqICAgICAgICAgICAgICAgICAgIGlPYmo7DQorICAgIH07DQor
DQogI2VuZGlmDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRQcmVmZXJlbmNl
cy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9XaWRnZXRQcmVmZXJl
bmNlcy5oCShyZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dpZGdl
dFByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkNCkBAIC04OCw4ICs4OCwxMCBAQA0KIA0KICAg
ICBwcml2YXRlOg0KICAgICAgICAgUlB0ckhhc2hNYXA8VERlc0MsVERlc0M+IGlNYXA7DQorICAg
ICAgICBSUHRySGFzaE1hcDxURGVzQyxUSW50PiBpU2l6ZU1hcDsNCiAgICAgICAgIEhCdWZDKiBp
RmlsZVBhdGg7DQogICAgICAgICBDV2lkZ2V0RXh0ZW5zaW9uKiBpV2lkZ2V0RXh0ZW5zaW9uOyAv
L25vdCBvd25lZA0KKyAgICAgICAgSEJ1ZkMqIGlCYXNlUGF0aDsNCiANCiAgICAgfTsNCiANCklu
ZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL3dlYmtpdGJyaWRnZS5jcHAJKHJldmlzaW9uIDIw
OTAxKQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9zcmMvd2Via2l0YnJpZGdlLmNwcAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTEzNjcsMTQgKzEzNjcsNDMgQEANCiAgIH0NCiANCiAjaWZkZWYgIFJEX0JS
T1dTRVJfV0lER0VUUw0KLXZvaWQqIENXZWJLaXRCcmlkZ2U6OmNyZWF0ZVdpZGdldE9iamVjdCh2
b2lkKiBleGVjKQ0KK3ZvaWQqIENXZWJLaXRCcmlkZ2U6OmNyZWF0ZVdpZGdldE9iamVjdCggdm9p
ZCogZXhlYyApDQogICAgIHsNCi0gICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IGlGcmFt
ZS0+V2ViS2l0VmlldygpLldlYktpdENvbnRyb2woKS5XaWRnZXRFeHRlbnNpb24oKTsNCi0gICAg
aWYod2RndEV4dCkNCisgICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IA0KKyAgICAgICAg
aUZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpLldpZGdldEV4dGVuc2lvbigpOw0K
Kw0KKyAgICBpZiggd2RndEV4dCApDQogICAgICAgIHsNCi0gICAgICAgcmV0dXJuIHdkZ3RFeHQt
PmNyZWF0ZVdpZGdldE9iamVjdChleGVjKTsNCisgICAgICAgcmV0dXJuIHdkZ3RFeHQtPmNyZWF0
ZVdpZGdldE9iamVjdCggZXhlYyApOw0KICAgICAgICB9DQorDQogICAgIHJldHVybiAwOw0KICAg
ICB9DQorDQordm9pZCogQ1dlYktpdEJyaWRnZTo6Y3JlYXRlV2lkZ2V0TWVudU9iamVjdCggdm9p
ZCogZXhlYyApDQorICAgIHsNCisgICAgQ1dpZGdldEV4dGVuc2lvbiogd2RndEV4dCA9IA0KKyAg
ICAgICAgaUZyYW1lLT5XZWJLaXRWaWV3KCkuV2ViS2l0Q29udHJvbCgpLldpZGdldEV4dGVuc2lv
bigpOw0KKw0KKyAgICBpZiggd2RndEV4dCApDQorICAgICAgIHsNCisgICAgICAgcmV0dXJuIHdk
Z3RFeHQtPmNyZWF0ZVdpZGdldE1lbnVPYmplY3QoIGV4ZWMgKTsNCisgICAgICAgfQ0KKw0KKyAg
ICByZXR1cm4gMDsNCisgICAgfQ0KKw0KK3ZvaWQqIENXZWJLaXRCcmlkZ2U6OmNyZWF0ZVdpZGdl
dE1lbnVJdGVtT2JqZWN0KCB2b2lkKiBleGVjICkNCisgICAgew0KKyAgICBDV2lkZ2V0RXh0ZW5z
aW9uKiB3ZGd0RXh0ID0gDQorICAgICAgICBpRnJhbWUtPldlYktpdFZpZXcoKS5XZWJLaXRDb250
cm9sKCkuV2lkZ2V0RXh0ZW5zaW9uKCk7DQorDQorICAgIGlmKCB3ZGd0RXh0ICkNCisgICAgICAg
ew0KKyAgICAgICByZXR1cm4gd2RndEV4dC0+Y3JlYXRlV2lkZ2V0TWVudUl0ZW1PYmplY3QoIGV4
ZWMgKTsNCisgICAgICAgfQ0KKw0KKyAgICByZXR1cm4gMDsNCisgICAgfQ0KICNlbmRpZiAvL1JE
X0JST1dTRVJfV0lER0VUUw0KIC8vIGVuZCBvZiBmaWxlDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJW
aWV3L3NyYy9XaWRnZXRFeHRlbnNpb24uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dz
ZXJWaWV3L3NyYy9XaWRnZXRFeHRlbnNpb24uY3BwCShyZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJL
aXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldEV4dGVuc2lvbi5jcHAJKHdvcmtpbmcgY29weSkNCkBA
IC00NSw2ICs0NSw5IEBADQogI2luY2x1ZGUgPGFwZ2NsaS5oPg0KICNpbmNsdWRlIDxhcGd0YXNr
Lmg+DQogI2luY2x1ZGUgPGJyb3dzZXJsYXVuY2hlci5oPg0KKyNpbmNsdWRlIDx3aWRnZXR1aS5y
c2c+DQorI2luY2x1ZGUgPHdpZGdldG1lbnUucnNnPg0KKyNpbmNsdWRlIDxlaWtidGdwYy5oPg0K
IA0KICNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24uaCINCiAjaW5jbHVkZSAiV2lkZ2V0UHJlZmVy
ZW5jZXMuaCINCkBAIC01NywyMyArNjAsMjAgQEANCiAjaW5jbHVkZSAiV2ViS2l0Vmlldy5oIg0K
ICNpbmNsdWRlICJCckN0bC5oIg0KICNpbmNsdWRlICJCckN0bFNjcm9sbGluZ1Byb3ZpZGVyLmgi
DQotLy8jaW5jbHVkZSAiU2Nyb2xsYmFyLmgiDQogDQogLy8gRVhURVJOQUwgREFUQSBTVFJVQ1RV
UkVTDQogDQogLy8gRVhURVJOQUwgRlVOQ1RJT04gUFJPVE9UWVBFUw0KIA0KIC8vIENPTlNUQU5U
Uw0KLQ0KIC8vIE1BQ1JPUw0KIA0KIC8vIExPQ0FMIENPTlNUQU5UUyBBTkQgTUFDUk9TDQogY29u
c3QgVEludCBLT3B0aW9uc0NtZElkID0gNjAwMDsNCiBjb25zdCBUSW50IEtNYXhPcHRpb25zTWVu
dSA9IDI1Ow0KIGNvbnN0IFRJbnQgS01heE9wdGlvbnNNZW51SXRlbVNpemUgPSAyNTY7IC8vYnl0
ZXMNCitjb25zdCBUSW50IEtNZW51SXRlbUNvbW1hbmRJZEJhc2UgPSAyMDAwMDsNCiANCi0NCi0v
Ly8NCiBjb25zdCBUSW50IEtNZWRpYUdhbGxlcnlVaWQgPSAweDEwMUY4NTk5Ow0KIF9MSVQoS01l
ZGlhR2FsbGVyeSwibWVkaWFnYWxsZXJ5Iik7DQogY29uc3QgVEludCBLV2ViQnJvd3NlclVpZCA9
IDB4MTAwMDhEMzk7DQpAQCAtODcsMTcgKzg3LDE5IEBADQogLy8gTE9DQUwgRlVOQ1RJT04gUFJP
VE9UWVBFUw0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0vLyBDV2lkZ2V0RW5naW5lQ2Fs
bEJhY2s6Ok5ld0wNCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpOZXdMDQogLy8NCiAvLw0KIC8vDQog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQogQ1dpZGdldEV4dGVuc2lvbiogQ1dpZGdldEV4
dGVuc2lvbjo6TmV3TCgNCiAgICAgQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3LA0KICAgICBNV2lk
Z2V0Q2FsbGJhY2smIGFXaWRnZXRDYWxsYmFjayApDQogICAgIHsNCi0gICAgQ1dpZGdldEV4dGVu
c2lvbiogc2VsZiA9IG5ldyAoRUxlYXZlKSBDV2lkZ2V0RXh0ZW5zaW9uKGFXZWJLaXRWaWV3LGFX
aWRnZXRDYWxsYmFjayk7DQotICAgIENsZWFudXBTdGFjazo6UHVzaEwoc2VsZik7DQorICAgIENX
aWRnZXRFeHRlbnNpb24qIHNlbGYgPSBuZXcgKCBFTGVhdmUgKSBDV2lkZ2V0RXh0ZW5zaW9uKCAN
CisgICAgICAgIGFXZWJLaXRWaWV3LCBhV2lkZ2V0Q2FsbGJhY2sgKTsNCisgICAgQ2xlYW51cFN0
YWNrOjpQdXNoTCggc2VsZiApOw0KICAgICBzZWxmLT5Db25zdHJ1Y3RMKCk7DQogICAgIENsZWFu
dXBTdGFjazo6UG9wKCk7DQogICAgIHJldHVybiBzZWxmOw0KQEAgLTEwOSwxMiArMTExLDE2IEBA
DQogLy8NCiAvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KIENXaWRnZXRFeHRlbnNp
b246OkNXaWRnZXRFeHRlbnNpb24oDQogICAgIENXZWJLaXRWaWV3JiBhV2ViS2l0VmlldywNCiAg
ICAgTVdpZGdldENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2sgKQ0KLSAgICA6aVdlYktpdFZpZXco
JmFXZWJLaXRWaWV3KSwNCi0gICAgaVdpZGdldENhbGxiYWNrKCZhV2lkZ2V0Q2FsbGJhY2spDQor
ICAgIDppV2ViS2l0VmlldyggJmFXZWJLaXRWaWV3ICksDQorICAgIGlXaWRnZXRDYWxsYmFjaygg
JmFXaWRnZXRDYWxsYmFjayApDQogICAgIHsNCisgICAgaU1lbnVSb290ID0gTlVMTDsNCisgICAg
aU1lbnVDYWxsYmFjayA9IE5VTEw7DQorICAgIGlSaWdodEtleUNhbGxiYWNrID0gTlVMTDsNCiAg
ICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0xMjMsMTIgKzEyOSwxNCBAQA0K
IC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCiBDV2lkZ2V0RXh0ZW5zaW9u
Ojp+Q1dpZGdldEV4dGVuc2lvbigpDQogICAgIHsNCi0gICAgaWYgKGlQcmVmZXJlbmNlcykNCisg
ICAgaWYgKCBpUHJlZmVyZW5jZXMgKQ0KICAgICAgICAgew0KLSAgICAgICAgVFJBUF9JR05PUkUo
aVByZWZlcmVuY2VzLT5TYXZlTCgpKTsNCisgICAgICAgIFRSQVBfSUdOT1JFKCBpUHJlZmVyZW5j
ZXMtPlNhdmVMKCkgKTsNCiAgICAgICAgIH0NCisNCiAgICAgZGVsZXRlIGlQcmVmZXJlbmNlczsN
CiAgICAgZGVsZXRlIGlXaWRnZXRSZW5kZXJlcjsNCiAgICAgZGVsZXRlIGlXaWRnZXRFbmdpbmVC
cmlkZ2U7DQpAQCAtMTM2LDQ4ICsxNDQsNzUgQEANCiAgICAgZGVsZXRlIGlXaWRnZXRCdW5kbGVJ
ZDsNCiAgICAgaUFwcFVpZE1hcC5SZXNldEFuZERlc3Ryb3koKTsNCiAgICAgaUxpYnJhcnkuQ2xv
c2UoKTsNCisgICAgLy8gZGVsZXRlIHRyZWUNCisgICAgRGVsZXRlVHJlZSggaU1lbnVSb290ICk7
ICAgDQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVu
c2lvbjo6ZGVsVHJlZQ0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
Lw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6RGVsZXRlVHJlZSggQ01lbnVJdGVtKiBub2RlICkN
CisgICAgew0KKyAgICBpZiAoIG5vZGUgIT0gTlVMTCApDQorICAgICAgICB7DQorICAgICAgICBp
ZiAoIG5vZGUtPkZpcnN0Q2hpbGQoKSApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIERl
bGV0ZVRyZWUoIG5vZGUtPkZpcnN0Q2hpbGQoKSApOw0KKyAgICAgICAgICAgIH0NCisgICAgICAg
IGlmICggbm9kZS0+TmV4dFNpYmxpbmcoKSApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAg
IERlbGV0ZVRyZWUoIG5vZGUtPk5leHRTaWJsaW5nKCkgKTsNCisgICAgICAgICAgICB9DQorICAg
ICAgICBkZWxldGUgbm9kZTsNCisgICAgICAgIG5vZGUgPSBOVUxMOw0KKyAgICAgICAgfQ0KKyAg
ICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENXaWRnZXRFeHRlbnNpb246OkNv
bnN0cnVjdEwNCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCiB2
b2lkIENXaWRnZXRFeHRlbnNpb246OkNvbnN0cnVjdEwoKQ0KICAgICB7DQotDQotICAgIGlQcmVm
ZXJlbmNlcyA9IENXaWRnZXRQcmVmZXJlbmNlczo6TmV3TCgqdGhpcyk7DQotICAgIGlXaWRnZXRS
ZW5kZXJlciA9IG5ldyAoRUxlYXZlKSBUV2lkZ2V0UmVuZGVyZXIoKmlXZWJLaXRWaWV3KTsNCisg
ICAgaVByZWZlcmVuY2VzID0gQ1dpZGdldFByZWZlcmVuY2VzOjpOZXdMKCAqdGhpcyApOw0KKyAg
ICBpV2lkZ2V0UmVuZGVyZXIgPSBuZXcgKCBFTGVhdmUgKSBUV2lkZ2V0UmVuZGVyZXIoICppV2Vi
S2l0VmlldyApOw0KICAgICBMb2FkV2lkZ2V0RW5naW5lRGxsTCgpOw0KLSAgICBpV2lkZ2V0RW5n
aW5lQnJpZGdlLT5TZXRPYnNlcnZlcigqdGhpcyk7DQorICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2Ut
PlNldE9ic2VydmVyKCAqdGhpcyApOw0KICAgICBDcmVhdGVBcHBIYXNoVGFibGVMKCk7DQorICAg
IGlSZXNvdXJjZUlkID0gUl9DQVNDQURFX01FTlVfMTsNCiAgICAgfQ0KIA0KLQ0KIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpDcmVhdGVBcHBIYXNoVGFibGVM
DQogLy8NCiAvLw0KIC8vDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQogdm9pZCBDV2lk
Z2V0RXh0ZW5zaW9uOjpDcmVhdGVBcHBIYXNoVGFibGVMKCkNCiAgICAgew0KLSAgICBUSW50KiB1
aWRtZyA9IG5ldyBUSW50KEtNZWRpYUdhbGxlcnlVaWQpOw0KLSAgICBIQnVmQyogYnVmbWVkaWEg
PSBIQnVmQzo6TmV3TChUUHRyQyhLTWVkaWFHYWxsZXJ5KS5MZW5ndGgoKSk7DQorICAgIFRJbnQq
IHVpZG1nID0gbmV3IFRJbnQoIEtNZWRpYUdhbGxlcnlVaWQgKTsNCisgICAgSEJ1ZkMqIGJ1Zm1l
ZGlhID0gSEJ1ZkM6Ok5ld0woIFRQdHJDKCBLTWVkaWFHYWxsZXJ5ICkuTGVuZ3RoKCkgKTsNCiAg
ICAgKmJ1Zm1lZGlhID0gS01lZGlhR2FsbGVyeTsNCiANCi0gICAgVEludCogdWlkd2ViID0gbmV3
IFRJbnQoS1dlYkJyb3dzZXJVaWQpOw0KLSAgICBIQnVmQyogYnVmd2ViID0gSEJ1ZkM6Ok5ld0wo
VFB0ckMoS1dlYkJyb3dzZXIpLkxlbmd0aCgpKTsNCisgICAgVEludCogdWlkd2ViID0gbmV3IFRJ
bnQoIEtXZWJCcm93c2VyVWlkICk7DQorICAgIEhCdWZDKiBidWZ3ZWIgPSBIQnVmQzo6TmV3TCgg
VFB0ckMoIEtXZWJCcm93c2VyICkuTGVuZ3RoKCkgKTsNCiAgICAgKmJ1ZndlYiA9IEtXZWJCcm93
c2VyOw0KIA0KLSAgICBUSW50KiB1aWRjYW0gPSBuZXcgVEludChLQ2FtQXBwRW5naW5lVWlkKTsN
Ci0gICAgSEJ1ZkMqIGJ1ZmNhbSA9IEhCdWZDOjpOZXdMKFRQdHJDKEtDYW1BcHBFbmdpbmUpLkxl
bmd0aCgpKTsNCisgICAgVEludCogdWlkY2FtID0gbmV3IFRJbnQoIEtDYW1BcHBFbmdpbmVVaWQg
KTsNCisgICAgSEJ1ZkMqIGJ1ZmNhbSA9IEhCdWZDOjpOZXdMKCBUUHRyQyggS0NhbUFwcEVuZ2lu
ZSApLkxlbmd0aCgpICk7DQogICAgICpidWZjYW0gPSBLQ2FtQXBwRW5naW5lOw0KIA0KLSAgICBp
QXBwVWlkTWFwLkluc2VydEwoYnVmbWVkaWEsdWlkbWcpOw0KLSAgICBpQXBwVWlkTWFwLkluc2Vy
dEwoYnVmd2ViLHVpZHdlYik7DQotICAgIGlBcHBVaWRNYXAuSW5zZXJ0TChidWZjYW0sdWlkY2Ft
KTsNCisgICAgaUFwcFVpZE1hcC5JbnNlcnRMKCBidWZtZWRpYSx1aWRtZyApOw0KKyAgICBpQXBw
VWlkTWFwLkluc2VydEwoIGJ1ZndlYiwgdWlkd2ViICk7DQorICAgIGlBcHBVaWRNYXAuSW5zZXJ0
TCggYnVmY2FtLCB1aWRjYW0gKTsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CkBAIC0xODYsNTggKzIyMSw1MyBAQA0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQotdm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpMYXVuY2hBcHBsaWNhdGlvbkwoY29uc3QgVFVpZCYg
YVVpZCwgY29uc3QgVERlc0MmIGFQYXJhbSkNCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6
TGF1bmNoQXBwbGljYXRpb25MKCANCisgICAgY29uc3QgVFVpZCYgYVVpZCwgY29uc3QgVERlc0Mm
IGFQYXJhbSApDQogICAgIHsNCi0NCiAgICAgUkFwYUxzU2Vzc2lvbiBhcGFMc1Nlc3Npb247DQog
ICAgIFRBcGFUYXNrTGlzdCB0YXNrTGlzdChDRWlrb25FbnY6OlN0YXRpYygpLT5Xc1Nlc3Npb24o
KSk7DQogICAgIFRBcGFUYXNrIHRhc2sgPSB0YXNrTGlzdC5GaW5kQXBwKGFVaWQpOw0KLSAgICBp
ZiAodGFzay5FeGlzdHMoKSkNCisNCisgICAgaWYgKCB0YXNrLkV4aXN0cygpICkNCiAgICAgICAg
IHsNCiAgICAgICAgIHRhc2suQnJpbmdUb0ZvcmVncm91bmQoKTsNCi0gICAgICAgIGlmIChhUGFy
YW0uTGVuZ3RoKCkgPiAwKQ0KKyAgICAgICAgaWYgKCBhUGFyYW0uTGVuZ3RoKCkgPiAwICkNCiAg
ICAgICAgICAgICB7DQotICAgICAgICAgICAgSEJ1ZkM4KiBwYXJhbTggPSBIQnVmQzg6Ok5ld0xD
KGFQYXJhbS5MZW5ndGgoKSk7DQotICAgICAgICAgICAgcGFyYW04LT5EZXMoKS5BcHBlbmQoYVBh
cmFtKTsNCi0gICAgICAgICAgICB0YXNrLlNlbmRNZXNzYWdlKFRVaWQ6OlVpZCgwKSwqcGFyYW04
KTsNCi0gICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3kocGFyYW04KTsNCisg
ICAgICAgICAgICBIQnVmQzgqIHBhcmFtOCA9IEhCdWZDODo6TmV3TEMoIGFQYXJhbS5MZW5ndGgo
KSApOw0KKyAgICAgICAgICAgIHBhcmFtOC0+RGVzKCkuQXBwZW5kKCBhUGFyYW0gKTsNCisgICAg
ICAgICAgICB0YXNrLlNlbmRNZXNzYWdlKCBUVWlkOjpVaWQoIDAgKSwgKnBhcmFtOCApOw0KKyAg
ICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSggcGFyYW04ICk7DQogICAgICAg
ICAgICAgfQ0KICAgICAgICAgfQ0KICAgICBlbHNlDQogICAgICAgICB7DQogICAgICAgICBUSW50
IGVDb25uZWN0ID0gS0Vyck5vbmU7DQotICAgICAgICBpZiAoIWFwYUxzU2Vzc2lvbi5IYW5kbGUo
KSkNCisgICAgICAgIGlmICggIWFwYUxzU2Vzc2lvbi5IYW5kbGUoKSApDQogICAgICAgICAgICAg
ew0KICAgICAgICAgICAgIGVDb25uZWN0ID0gYXBhTHNTZXNzaW9uLkNvbm5lY3QoKTsNCiAgICAg
ICAgICAgICB9DQogDQotICAgICAgICBpZiAoZUNvbm5lY3QgPT0gS0Vyck5vbmUpDQorICAgICAg
ICBpZiAoIGVDb25uZWN0ID09IEtFcnJOb25lICkNCiAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgVFRocmVhZElkIHRocmVhZElkOw0KLSAgICAgICAgICAgIGFwYUxzU2Vzc2lvbi5TdGFydERv
Y3VtZW50KGFQYXJhbSwgYVVpZCwgdGhyZWFkSWQpOw0KKyAgICAgICAgICAgIGFwYUxzU2Vzc2lv
bi5TdGFydERvY3VtZW50KCBhUGFyYW0sIGFVaWQsIHRocmVhZElkICk7DQogICAgICAgICAgICAg
YXBhTHNTZXNzaW9uLkNsb3NlKCk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KLQ0KICAg
ICB9DQogDQotDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENXaWRnZXRFeHRlbnNpb246
Ok9wZW5BcHBsaWNhdGlvbg0KIC8vDQogLy8NCiAvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
Ci12b2lkIENXaWRnZXRFeHRlbnNpb246Ok9wZW5BcHBsaWNhdGlvbihjb25zdCBURGVzQyYgYUFw
cE5hbWUsIGNvbnN0IFREZXNDJiBhUGFyYW0pDQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246
Ok9wZW5BcHBsaWNhdGlvbiggDQorICAgIGNvbnN0IFRVaWQmIGFBcHBVaWQsIGNvbnN0IFREZXND
JiBhUGFyYW0gKQ0KICAgICB7DQotDQotICAgIFRJbnQqIHVpZCA9IGlBcHBVaWRNYXAuRmluZChh
QXBwTmFtZSk7DQotICAgIGlmICh1aWQpDQotICAgICAgICB7DQotICAgICAgICBUVWlkIHVpZEFw
cCA9IFRVaWQ6OlVpZCgqdWlkKTsNCi0gICAgICAgIExhdW5jaEFwcGxpY2F0aW9uTCh1aWRBcHAs
YVBhcmFtKTsNCi0gICAgICAgIH0NCi0NCisgICAgTGF1bmNoQXBwbGljYXRpb25MKCBhQXBwVWlk
LCBhUGFyYW0gKTsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0yNDYs
MTMgKzI3NiwxNCBAQA0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotdm9pZCBD
V2lkZ2V0RXh0ZW5zaW9uOjpPcGVuVXJsKGNvbnN0IFREZXNDJiBhVXJsKQ0KKy8vDQordm9pZCBD
V2lkZ2V0RXh0ZW5zaW9uOjpPcGVuVXJsKCBjb25zdCBURGVzQyYgYVVybCApDQogICAgIHsNCi0g
ICAgSEJ1ZkMqIHBhcmFtID0gSEJ1ZkM6Ok5ld0xDKGFVcmwuTGVuZ3RoKCkrMik7DQotICAgIHBh
cmFtLT5EZXMoKS5BcHBlbmQoX0woIjQgIikpOw0KLSAgICBwYXJhbS0+RGVzKCkuQXBwZW5kKGFV
cmwpOw0KLSAgICBUUkFQX0lHTk9SRShMYXVuY2hBcHBsaWNhdGlvbkwoVFVpZDo6VWlkKEtXZWJC
cm93c2VyVWlkKSwgKnBhcmFtKSk7DQotICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveShw
YXJhbSk7DQorICAgIEhCdWZDKiBwYXJhbSA9IEhCdWZDOjpOZXdMQyggYVVybC5MZW5ndGgoKSAr
IDIgKTsNCisgICAgcGFyYW0tPkRlcygpLkFwcGVuZCggX0woIjQgIikgKTsNCisgICAgcGFyYW0t
PkRlcygpLkFwcGVuZCggYVVybCApOw0KKyAgICBUUkFQX0lHTk9SRSggTGF1bmNoQXBwbGljYXRp
b25MKCBUVWlkOjpVaWQoIEtXZWJCcm93c2VyVWlkICksICpwYXJhbSApICk7DQorICAgIENsZWFu
dXBTdGFjazo6UG9wQW5kRGVzdHJveSggcGFyYW0gKTsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCkBAIC0yNjEsMjAgKzI5MiwyMiBAQA0KIC8vDQogLy8NCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQotVEludCBDV2lkZ2V0RXh0ZW5zaW9uOjpQcmVmZXJlbmNlRm9yS2V5KGNv
bnN0IFREZXNDJiBhS2V5LCBUUHRyQyYgYVZhbHVlKQ0KKy8vDQorVEludCBDV2lkZ2V0RXh0ZW5z
aW9uOjpQcmVmZXJlbmNlRm9yS2V5KCBjb25zdCBURGVzQyYgYUtleSwgVFB0ckMmIGFWYWx1ZSAp
DQogICAgIHsNCi0gICAgcmV0dXJuIGlQcmVmZXJlbmNlcy0+UHJlZmVyZW5jZUwoYUtleSwgYVZh
bHVlKTsNCisgICAgcmV0dXJuIGlQcmVmZXJlbmNlcy0+UHJlZmVyZW5jZUwoIGFLZXksIGFWYWx1
ZSApOw0KICAgICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQogLy8gQ1dpZGdl
dEV4dGVuc2lvbjo6UHJlcGFyZUZvclRyYW5zaXRpb24NCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQotdm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpQcmVwYXJlRm9yVHJhbnNp
dGlvbihjb25zdCBURGVzQyYgYVRyYW5zaXRpb24pDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpQ
cmVwYXJlRm9yVHJhbnNpdGlvbiggY29uc3QgVERlc0MmIGFUcmFuc2l0aW9uICkNCiAgICAgew0K
LSAgICBpV2lkZ2V0UmVuZGVyZXItPlByZXBhcmVGb3JUcmFuc2l0aW9uTChhVHJhbnNpdGlvbik7
DQorICAgIGlXaWRnZXRSZW5kZXJlci0+UHJlcGFyZUZvclRyYW5zaXRpb25MKCBhVHJhbnNpdGlv
biApOw0KICAgICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTI4Myw2ICszMTYs
NyBAQA0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCiB2b2lkIENXaWRn
ZXRFeHRlbnNpb246OlBlcmZvcm1UcmFuc2l0aW9uKCkNCiAgICAgew0KICAgICBpV2lkZ2V0UmVu
ZGVyZXItPlBlcmZvcm1UcmFuc2l0aW9uTCgpOw0KQEAgLTI5NCwxOSArMzI4LDIxIEBADQogLy8N
CiAvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi12b2lkIENXaWRnZXRFeHRlbnNpb246OlNl
dFByZWZlcmVuY2VGb3JLZXkoY29uc3QgVERlc0MmIGFLZXksIGNvbnN0IFREZXNDJiBhVmFsdWUp
DQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlNldFByZWZlcmVuY2VGb3JLZXkoIA0KKyAg
ICBjb25zdCBURGVzQyYgYUtleSwgY29uc3QgVERlc0MmIGFWYWx1ZSApDQogICAgIHsNCi0gICAg
aVByZWZlcmVuY2VzLT5TZXRQcmVmZXJlbmNlTChhS2V5LCBhVmFsdWUpOw0KKyAgICBpUHJlZmVy
ZW5jZXMtPlNldFByZWZlcmVuY2VMKCBhS2V5LCBhVmFsdWUgKTsNCiAgICAgfQ0KIA0KLQ0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRTY3JvbGxCYXIN
CiAvLw0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotdm9pZCBDV2lkZ2V0RXh0
ZW5zaW9uOjpTZXRTY3JvbGxCYXIoVEJvb2wgLyphVmlzaWJsZSovKQ0KKy8vDQordm9pZCBDV2lk
Z2V0RXh0ZW5zaW9uOjpTZXRTY3JvbGxCYXIoIFRCb29sIC8qYVZpc2libGUqLyApDQogICAgIHsN
CiAgICAgfQ0KIA0KQEAgLTMxNiw3ICszNTIsOCBAQA0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQotdm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXROYXZpZ2F0aW9uRW5hYmxlZChU
Qm9vbCBhRW5hYmxlKQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXROYXZpZ2F0aW9u
RW5hYmxlZCggVEJvb2wgYUVuYWJsZSApDQogICAgIHsNCiAgICAgaU5hdmlnYXRpb25FbmFibGVk
ID0gYUVuYWJsZTsNCiAgICAgaVdlYktpdFZpZXctPlNldFRhYmJlZE5hdmlnYXRpb24oICFhRW5h
YmxlICk7DQpAQCAtMzI3LDEzMiArMzY0LDE4OSBAQA0KICAgICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KLS8vIENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbnNNZW51SXRlbQ0KKy8v
IENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbk1lbnVJdGVtc0wNCiAvLw0KIC8vDQogLy8NCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotVEludCBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25z
TWVudUl0ZW0oY29uc3QgVERlc0MmIGFUZXh0KQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9u
OjpBZGRPcHRpb25NZW51SXRlbXNMKCANCisgICAgQ0Vpa01lbnVQYW5lJiBhTWVudVBhbmUsVElu
dCBhUmVzb3VyY2VJZCApDQogICAgIHsNCi0gICAgVEludCBjbWRJZCA9IChUQnJDdGxEZWZzOjpF
Q29tbWFuZElkQmFzZSArIFRCckN0bERlZnM6OkVDb21tYW5kSWRTdWJzY3JpYmVUb0Jhc2UgKyBL
T3B0aW9uc0NtZElkKSArIGlNZW51SXRlbXMuQ291bnQoKTsNCisgICAgQ01lbnVJdGVtKiBub2Rl
ID0gTlVMTDsNCisgICAgQ01lbnVJdGVtKiBwYXJlbnROb2RlID0gTlVMTDsNCisgICAgVEludCBw
YXJlbnRDbWRJZCA9IC0xOw0KIA0KLSAgICBpZiAoaU1lbnVJdGVtcy5Db3VudCgpIDw9IEtNYXhP
cHRpb25zTWVudSAmJg0KLSAgICAgICAgYVRleHQuTGVuZ3RoKCkgPiAwICYmIGFUZXh0Lkxlbmd0
aCgpIDw9IEtNYXhPcHRpb25zTWVudUl0ZW1TaXplICkNCisgICAgaWYgKCBhUmVzb3VyY2VJZCA9
PSBSX1dJREdFVFVJX01FTlUgKQ0KICAgICAgICAgew0KLSAgICAgICAgVE1lbnVJdGVtIGl0ZW07
DQotICAgICAgICBpdGVtLmlUZXh0ID0gYVRleHQuQWxsb2MoKTsNCi0gICAgICAgIGl0ZW0uaUNt
ZElkID0gY21kSWQ7DQotICAgICAgICBpTWVudUl0ZW1zLkFwcGVuZChpdGVtKTsNCisgICAgICAg
IC8vaW52b2tlIG1lbnUgb25zaG93IGNhbGxiYWNrDQorICAgICAgICBpZiAoIGlXaWRnZXRFbmdp
bmVCcmlkZ2UgKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBpV2lkZ2V0RW5naW5lQnJp
ZGdlLT5NZW51U2hvd2VkKCk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKCBhTWVu
dVBhbmUuTnVtYmVyT2ZJdGVtc0luUGFuZSgpID4gMSApDQorICAgICAgICAgICAgew0KKyAgICAg
ICAgICAgIGFNZW51UGFuZS5EZWxldGVCZXR3ZWVuTWVudUl0ZW1zKCANCisgICAgICAgICAgICAg
ICAgMCwgYU1lbnVQYW5lLk51bWJlck9mSXRlbXNJblBhbmUoKSAtIDIgKTsNCisgICAgICAgICAg
ICB9DQorICAgICAgICBpZiAoIGlNZW51Um9vdCApDQorICAgICAgICAgICAgbm9kZSA9IGlNZW51
Um9vdC0+Rmlyc3RDaGlsZCgpOw0KKyAgICAgICAgfSAgICAgICANCisgICAgZWxzZSBpZiAoIGFS
ZXNvdXJjZUlkID49IFJfQ0FTQ0FERV9NRU5VXzEgKSAvL29uZSBvZiB0aGUgY2FzY2FkZSBtZW51
IHBhbmUNCisgICAgICAgIHsgICANCisgICAgICAgIGZvciAoVEludCBpID0gMDsgaSA8IGlDYXNj
YWRlQXJyLkNvdW50KCk7IGkrKyApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlmICgg
aUNhc2NhZGVBcnJbaV0uaVJlc291cmNlSWQgPT0gYVJlc291cmNlSWQgKQ0KKyAgICAgICAgICAg
ICAgICB7DQorICAgICAgICAgICAgICAgIHBhcmVudENtZElkID0gaUNhc2NhZGVBcnJbaV0ucGFy
ZW50Q21kSWQ7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQor
ICAgICAgICAgICAgfQ0KKyAgICAgICAgaWYgKCBwYXJlbnRDbWRJZCAhPSAtMSApDQorICAgICAg
ICAgICAgeyAgIA0KKyAgICAgICAgICAgIE1lbnVJdGVtU2VsZWN0ZWQoIHBhcmVudENtZElkICsg
S01lbnVJdGVtQ29tbWFuZElkQmFzZSk7DQorICAgICAgICAgICAgcGFyZW50Tm9kZSA9IEZpbmRO
b2RlQnlJZCggaU1lbnVSb290LCBwYXJlbnRDbWRJZCApOw0KKyAgICAgICAgICAgIH0NCisgICAg
ICAgIGlmICggcGFyZW50Tm9kZSApDQorICAgICAgICAgICAgbm9kZSA9IHBhcmVudE5vZGUtPkZp
cnN0Q2hpbGQoKTsNCiAgICAgICAgIH0NCiANCi0gICAgcmV0dXJuIGNtZElkOw0KKyAgICBpZiAo
IG5vZGUgKQ0KKyAgICAgICAgew0KKyAgICAgICAgLy9hZGQgZmlyc3QgY2hpbGQNCisgICAgICAg
IEFkZE1lbnVJdGVtKCBhTWVudVBhbmUsIG5vZGUgKTsNCisgICAgICAgIA0KKyAgICAgICAgLy9h
ZGQgYWxsIG90aGVyIGNoaWxkcmVuIChzaWJsaW5ncyBvZiBmaXJzdCBjaGlsZCkNCisgICAgICAg
IENNZW51SXRlbSogc2libGluZyA9IG5vZGUtPk5leHRTaWJsaW5nKCk7DQorICAgICAgICB3aGls
ZSggc2libGluZyApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIEFkZE1lbnVJdGVtKCBh
TWVudVBhbmUsIHNpYmxpbmcgKTsNCisgICAgICAgICAgICBzaWJsaW5nID0gc2libGluZy0+TmV4
dFNpYmxpbmcoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQogICAgIH0NCiANCisNCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLy8gQ1dpZGdldEV4dGVuc2lvbjo6Q2xlYXJPcHRpb25z
TWVudQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkFkZE1lbnVJdGVtDQogLy8NCiAvLw0KIC8vDQog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLXZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6Q2xlYXJPcHRp
b25zTWVudSgpDQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkFkZE1lbnVJdGVtKCBDRWlr
TWVudVBhbmUmIGFNZW51UGFuZSwgQ01lbnVJdGVtKiBhTm9kZSApDQogICAgIHsNCisgICAgQ0Vp
a01lbnVQYW5lSXRlbTo6U0RhdGEgbWVudURhdGE7DQorICAgIG1lbnVEYXRhLmlDb21tYW5kSWQg
PSBhTm9kZS0+Q21kSWQoKStLTWVudUl0ZW1Db21tYW5kSWRCYXNlOw0KIA0KLSAgICBmb3IgKFRJ
bnQgbj0wOyBuPGlNZW51SXRlbXMuQ291bnQoKTsgbisrKQ0KLSAgICAgICAgew0KLSAgICAgICAg
ZGVsZXRlIGlNZW51SXRlbXNbbl0uaVRleHQ7DQotICAgICAgICB9DQorICAgIGlmICggYU5vZGUt
PkZpcnN0Q2hpbGQoKSApDQorICAgICAgICBtZW51RGF0YS5pQ2FzY2FkZUlkID0gaVJlc291cmNl
SWQ7DQorICAgIGVsc2UNCisgICAgICAgIG1lbnVEYXRhLmlDYXNjYWRlSWQgPSAwOw0KIA0KLSAg
ICBpTWVudUl0ZW1zLlJlc2V0KCk7DQorICAgIG1lbnVEYXRhLmlGbGFncyA9IDA7DQorICAgIG1l
bnVEYXRhLmlUZXh0ID0gYU5vZGUtPlRleHQoKTsNCisNCisgICAgVENhc2NhZGVJRE1hcCBlbnRy
eTsNCisgICAgZW50cnkuaVJlc291cmNlSWQgPSBpUmVzb3VyY2VJZCsrOw0KKyAgICBlbnRyeS5w
YXJlbnRDbWRJZCA9IGFOb2RlLT5DbWRJZCgpOw0KKyAgICBpQ2FzY2FkZUFyci5BcHBlbmQoIGVu
dHJ5ICk7DQorDQorICAgIGFNZW51UGFuZS5JbnNlcnRNZW51SXRlbUwoIG1lbnVEYXRhLCAwICk7
DQorICAgIGFNZW51UGFuZS5TZXRJdGVtRGltbWVkKCBhTm9kZS0+Q21kSWQoKStLTWVudUl0ZW1D
b21tYW5kSWRCYXNlLCBhTm9kZS0+RGltbWVkKCkgKTsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCi0vLyBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25NZW51SXRlbXNMDQor
Ly8gQ1dpZGdldEV4dGVuc2lvbjo6TWVudUl0ZW1TZWxlY3RlZA0KIC8vDQogLy8NCiAvLw0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi12b2lkIENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbk1l
bnVJdGVtc0woQ0Vpa01lbnVQYW5lJiBhTWVudVBhbmUpDQotICAgIHsNCi0NCi0gICAgaWYgKCBh
TWVudVBhbmUuTnVtYmVyT2ZJdGVtc0luUGFuZSgpID4gMSkNCit2b2lkIENXaWRnZXRFeHRlbnNp
b246Ok1lbnVJdGVtU2VsZWN0ZWQoIFRJbnQgYUNtZElkICkNCisgICAgeyAgICANCisgICAgaWYg
KCBpV2lkZ2V0RW5naW5lQnJpZGdlICkNCiAgICAgICAgIHsNCi0gICAgICAgIGFNZW51UGFuZS5E
ZWxldGVCZXR3ZWVuTWVudUl0ZW1zKCAwLCBhTWVudVBhbmUuTnVtYmVyT2ZJdGVtc0luUGFuZSgp
LTIgKTsNCisgICAgICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPk1lbnVJdGVtU2VsZWN0ZWQoIGFD
bWRJZCAtIEtNZW51SXRlbUNvbW1hbmRJZEJhc2UgKTsNCiAgICAgICAgIH0NCiANCisgICAgT25T
aG93U2VsZWN0ZWQoKTsgICAgDQorICAgIH0NCiANCi0gICAgZm9yIChUSW50IG49aU1lbnVJdGVt
cy5Db3VudCgpLTE7IG4+PTA7IG4tLSkNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dp
ZGdldEV4dGVuc2lvbjo6T25IaWRlU2VsZWN0ZWQNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246Ok9uSGlkZVNlbGVjdGVk
KCkNCisgICAgew0KKyAgICBpZiAoIGlXaWRnZXRFbmdpbmVCcmlkZ2UgKQ0KICAgICAgICAgew0K
LSAgICAgICAgQ0Vpa01lbnVQYW5lSXRlbTo6U0RhdGEgbWVudURhdGE7DQotICAgICAgICBtZW51
RGF0YS5pQ29tbWFuZElkID0gaU1lbnVJdGVtc1tuXS5pQ21kSWQ7DQotICAgICAgICBtZW51RGF0
YS5pQ2FzY2FkZUlkID0gMDsNCi0gICAgICAgIG1lbnVEYXRhLmlGbGFncyA9IDA7DQotICAgICAg
ICBtZW51RGF0YS5pVGV4dCA9ICppTWVudUl0ZW1zW25dLmlUZXh0Ow0KLSAgICAgICAgYU1lbnVQ
YW5lLkluc2VydE1lbnVJdGVtTChtZW51RGF0YSwwKTsNCisgICAgICAgIGlXaWRnZXRFbmdpbmVC
cmlkZ2UtPlNldFdpZGdldFZpc2liaWxpdHkoIEVGYWxzZSApOw0KICAgICAgICAgfQ0KLQ0KICAg
ICB9DQogDQotDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS8vIENXaWRnZXRFeHRlbnNpb246
Ok9wdGlvbnNNZW51SXRlbVNlbGVjdGVkDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6T25TaG93U2Vs
ZWN0ZWQNCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotdm9pZCBDV2lk
Z2V0RXh0ZW5zaW9uOjpPcHRpb25zTWVudUl0ZW1TZWxlY3RlZChUSW50IGFDb21tYW5kKQ0KKy8v
DQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPblNob3dTZWxlY3RlZCgpDQogICAgIHsNCi0gICAg
aWYgKGlXaWRnZXRFbmdpbmVCcmlkZ2UpDQorICAgIGlmICggaVdpZGdldEVuZ2luZUJyaWRnZSAp
DQogICAgICAgICB7DQotICAgICAgICBUSW50IG4gPSBhQ29tbWFuZC0oVEJyQ3RsRGVmczo6RUNv
bW1hbmRJZEJhc2UgKyBUQnJDdGxEZWZzOjpFQ29tbWFuZElkU3Vic2NyaWJlVG9CYXNlICsgS09w
dGlvbnNDbWRJZCk7DQotICAgICAgICBpZiAobj49MCAmJiBuPGlNZW51SXRlbXMuQ291bnQoKSkN
Ci0gICAgICAgICAgICB7DQotICAgICAgICAgICAgSEJ1ZkMqIGl0ZW1UZXh0ID0gaU1lbnVJdGVt
c1tuXS5pVGV4dDsNCi0gICAgICAgICAgICBpV2lkZ2V0RW5naW5lQnJpZGdlLT5PcHRpb25zTWVu
dUl0ZW1TZWxlY3RlZCgqaXRlbVRleHQpOw0KLSAgICAgICAgICAgIE9uU2hvd1NlbGVjdGVkKCk7
DQotICAgICAgICAgICAgfQ0KKyAgICAgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+U2V0V2lkZ2V0
VmlzaWJpbGl0eSggRVRydWUgKTsNCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCi0vLyBDV2lkZ2V0RXh0ZW5zaW9uOjpPbkhpZGVTZWxlY3RlZA0KKy8vIENX
aWRnZXRFeHRlbnNpb246OmNyZWF0ZVdpZGdldE9iamVjdA0KIC8vDQogLy8NCiAvLw0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCi12b2lkIENXaWRnZXRFeHRlbnNpb246Ok9uSGlkZVNlbGVjdGVk
KCkNCisvLw0KK3ZvaWQqIENXaWRnZXRFeHRlbnNpb246OmNyZWF0ZVdpZGdldE9iamVjdCggdm9p
ZCogYUV4ZWMgKQ0KICAgICB7DQotICAgIGlmIChpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAgICBp
ZiggaVdpZGdldEVuZ2luZUJyaWRnZSApDQogICAgICAgICB7DQotICAgICAgICBpV2lkZ2V0RW5n
aW5lQnJpZGdlLT5TZXRXaWRnZXRWaXNpYmlsaXR5KEVGYWxzZSk7DQorICAgICAgICByZXR1cm4g
aVdpZGdldEVuZ2luZUJyaWRnZS0+V2lkZ2V0KCBhRXhlYyApOw0KICAgICAgICAgfQ0KKyAgICBy
ZXR1cm4gTlVMTDsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0vLyBDV2lk
Z2V0RXh0ZW5zaW9uOjpPblNob3dTZWxlY3RlZA0KKy8vIENXaWRnZXRFeHRlbnNpb246OmNyZWF0
ZVdpZGdldE1lbnVPYmplY3QNCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQotdm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpPblNob3dTZWxlY3RlZCgpDQorLy8NCit2b2lkKiBD
V2lkZ2V0RXh0ZW5zaW9uOjpjcmVhdGVXaWRnZXRNZW51T2JqZWN0KCB2b2lkKiBhRXhlYyApDQog
ICAgIHsNCi0gICAgaWYoaVdpZGdldEVuZ2luZUJyaWRnZSkNCisgICAgaWYoIGlXaWRnZXRFbmdp
bmVCcmlkZ2UgKQ0KICAgICAgICAgew0KLSAgICAgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+U2V0
V2lkZ2V0VmlzaWJpbGl0eShFVHJ1ZSk7DQorICAgICAgICByZXR1cm4gaVdpZGdldEVuZ2luZUJy
aWRnZS0+TWVudSggYUV4ZWMgKTsNCiAgICAgICAgIH0NCisgICAgcmV0dXJuIE5VTEw7DQogICAg
IH0NCiANCi0NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLy8gQ1dpZGdldEV4dGVuc2lvbjo6
Y3JlYXRlV2lkZ2V0T2JqZWN0DQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6Y3JlYXRlV2lkZ2V0TWVu
dUl0ZW1PYmplY3QNCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotdm9p
ZCogQ1dpZGdldEV4dGVuc2lvbjo6Y3JlYXRlV2lkZ2V0T2JqZWN0KHZvaWQqIGV4ZWMpDQorLy8N
Cit2b2lkKiBDV2lkZ2V0RXh0ZW5zaW9uOjpjcmVhdGVXaWRnZXRNZW51SXRlbU9iamVjdCggdm9p
ZCogYUV4ZWMgKQ0KICAgICB7DQogICAgIGlmKCBpV2lkZ2V0RW5naW5lQnJpZGdlICkNCiAgICAg
ICAgIHsNCi0gICAgICAgIHJldHVybiBpV2lkZ2V0RW5naW5lQnJpZGdlLT5XaWRnZXQoZXhlYyk7
DQorICAgICAgICByZXR1cm4gaVdpZGdldEVuZ2luZUJyaWRnZS0+TWVudUl0ZW0oIGFFeGVjICk7
DQogICAgICAgICB9DQogICAgIHJldHVybiBOVUxMOw0KICAgICB9DQpAQCAtNDYwLDM1ICs1NTQs
MzggQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENXaWRnZXRFeHRlbnNpb246Okxv
YWRXaWRnZXRFbmdpbmVEbGxMDQogLy8NCisvLw0KKy8vDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCiAvLw0KIHZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6TG9hZFdpZGdldEVuZ2luZURsbEwoKQ0K
ICAgICB7DQotDQotICAgIGlmKCFpV2lkZ2V0RW5naW5lQnJpZGdlKQ0KKyAgICBpZiAoICFpV2lk
Z2V0RW5naW5lQnJpZGdlICkNCiAgICAgICAgIHsNCi0NCiAgICAgICAgIF9MSVQoIEtCcm93c2Vy
V2lkZ2V0RW5naW5lTmFtZSwgIndpZGdldGVuZ2luZS5kbGwiICk7DQogICAgICAgICBVc2VyOjpM
ZWF2ZUlmRXJyb3IoIGlMaWJyYXJ5LkxvYWQoIEtCcm93c2VyV2lkZ2V0RW5naW5lTmFtZSApICk7
DQogDQotICAgICAgICBUTGlicmFyeUZ1bmN0aW9uIGVudHJ5ID0gaUxpYnJhcnkuTG9va3VwKDEp
Ow0KKyAgICAgICAgVExpYnJhcnlGdW5jdGlvbiBlbnRyeSA9IGlMaWJyYXJ5Lkxvb2t1cCggMSAp
Ow0KIA0KLSAgICAgICAgaWYgKCFlbnRyeSkNCi0gICAgICAgICAgICBVc2VyOjpMZWF2ZShLRXJy
Tm90Rm91bmQpOw0KKyAgICAgICAgaWYgKCAhZW50cnkgKQ0KKyAgICAgICAgICAgIFVzZXI6Okxl
YXZlKCBLRXJyTm90Rm91bmQgKTsNCiANCiAgICAgICAgIC8vQ2FsbCB0aGUgZnVuY3Rpb24gdG8g
Y3JlYXRlIGEgaW5zdGFuY2Ugb2YgY2xhc3MNCi0gICAgICAgIGlXaWRnZXRFbmdpbmVCcmlkZ2Ug
PSAoTVdpZGdldEVuZ2luZUJyaWRnZSopIGVudHJ5KCk7DQorICAgICAgICBpV2lkZ2V0RW5naW5l
QnJpZGdlID0gKCBNV2lkZ2V0RW5naW5lQnJpZGdlKiApIGVudHJ5KCk7DQogICAgICAgICB9DQog
ICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENXaWRnZXRFeHRlbnNpb246
OlNldFBhcmFtTA0KIC8vDQorLy8NCisvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8N
Ci12b2lkIENXaWRnZXRFeHRlbnNpb246OlNldFBhcmFtTChUQnJDdGxEZWZzOjpUQnJDdGxXaWRn
ZXRQYXJhbXMgYVBhcmFtLCBjb25zdCBURGVzQyYgYVZhbHVlKQ0KK3ZvaWQgQ1dpZGdldEV4dGVu
c2lvbjo6U2V0UGFyYW1MKCANCisgICAgVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQ
YXJhbSwgY29uc3QgVERlc0MmIGFWYWx1ZSApDQogICAgIHsNCi0gICAgc3dpdGNoKGFQYXJhbSkN
CisgICAgc3dpdGNoKCBhUGFyYW0gKQ0KICAgICAgICAgew0KICAgICAgICAgY2FzZSBUQnJDdGxE
ZWZzOjpFV2lkZ2V0QmFzZVBhdGg6DQogICAgICAgICAgICAgew0KQEAgLTUwOSwxMSArNjA2LDE0
IEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQ
YXJhbUwNCiAvLw0KKy8vDQorLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQotdm9p
ZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQYXJhbUwoVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFy
YW1zIGFQYXJhbSwgVFVpbnQgYVZhbHVlKQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6U2V0UGFy
YW1MKCANCisgICAgVEJyQ3RsRGVmczo6VEJyQ3RsV2lkZ2V0UGFyYW1zIGFQYXJhbSwgVFVpbnQg
YVZhbHVlICkNCiAgICAgew0KLSAgICBzd2l0Y2goYVBhcmFtKQ0KKyAgICBzd2l0Y2goIGFQYXJh
bSApDQogICAgICAgICB7DQogICAgICAgICBjYXNlIFRCckN0bERlZnM6OkVXaWRnZXRJZGVudGlm
aWVyOg0KICAgICAgICAgICAgIHsNCkBAIC01MjUsNiArNjI1LDQ4MiBAQA0KICAgICAgICAgfQ0K
ICAgICB9DQogDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9u
OjpBZGRPcHRpb25zTWVudUl0ZW0NCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25zTWVudUl0ZW0oIA0K
KyAgICBjb25zdCBURGVzQyYgYVRleHQsIFRJbnQgYUNtZElkLCBUSW50IGFQYXJlbnRJZCwgdm9p
ZCogaU9iaiApDQorICAgIHsgICANCisgICAgaWYgKCBpTWVudVJvb3QgPT0gTlVMTCApIA0KKyAg
ICAgICAgeyANCisgICAgICAgIGlNZW51Um9vdCA9IENNZW51SXRlbTo6TmV3TCggX0woIiIpLCAt
MSApOw0KKyAgICAgICAgfSAgICANCisgICAgaWYgKCBhVGV4dC5MZW5ndGgoKSA+IDAgKQ0KKyAg
ICAgICAgew0KKyAgICAgICAgQ01lbnVJdGVtKiBpdGVtID0gQ01lbnVJdGVtOjpOZXdMKCBhVGV4
dCwgYUNtZElkLCBpT2JqICk7IA0KKyAgICAgICAgSW5zZXJ0KCBpTWVudVJvb3QsIGl0ZW0sIGFQ
YXJlbnRJZCApOyAgICANCisgICAgICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0UmlnaHRTb2Z0S2V5TGFiZWwNCisvLw0K
Ky8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0
ZW5zaW9uOjpTZXRSaWdodFNvZnRLZXlMYWJlbCggY29uc3QgVERlc0MmIGFUZXh0ICkNCisgICAg
ew0KKyAgICBDRWlrQnV0dG9uR3JvdXBDb250YWluZXIgKiBwQ2JhR3JvdXAgPSBDRWlrQnV0dG9u
R3JvdXBDb250YWluZXI6OkN1cnJlbnQoKTsgICAgIA0KKyAgICBwQ2JhR3JvdXAtPlNldENvbW1h
bmRMKCBFQWtuU29mdGtleUV4aXQsIGFUZXh0ICk7DQorICAgIHBDYmFHcm91cC0+RHJhd05vdygp
Ow0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5z
aW9uOjpJbnNlcnQNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
DQorVEJvb2wgQ1dpZGdldEV4dGVuc2lvbjo6SW5zZXJ0KCANCisgICAgQ01lbnVJdGVtKiBhUm9v
dCwgQ01lbnVJdGVtKiBhSXRlbSwgVEludCBhUGFyZW50SWQgKQ0KKyAgICB7ICANCisgICAgaWYg
KCBhUm9vdCApDQorICAgICAgICB7DQorICAgICAgICBpZiAoIGFSb290LT5DbWRJZCgpID09IGFQ
YXJlbnRJZCApIA0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoIGFSb290LT5GaXJz
dENoaWxkKCkgPT0gTlVMTCApIC8vZmlyc3QgY2hpbGQgIA0KKyAgICAgICAgICAgICAgICB7IA0K
KyAgICAgICAgICAgICAgICBhUm9vdC0+U2V0Rmlyc3RDaGlsZCggYUl0ZW0gKTsgDQorICAgICAg
ICAgICAgICAgIH0gDQorICAgICAgICAgICAgZWxzZSAvL2luc2VydCBhcyBzaWJsaW5nIG9mIGZp
cnN0IGNoaWxkDQorICAgICAgICAgICAgICAgIHsgDQorICAgICAgICAgICAgICAgIEluc2VydFNp
YmxpbmcoIGFSb290LT5GaXJzdENoaWxkKCksIGFJdGVtICk7DQorICAgICAgICAgICAgICAgIH0N
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICBpZiAo
IEluc2VydCggYVJvb3QtPkZpcnN0Q2hpbGQoKSwgYUl0ZW0sIGFQYXJlbnRJZCApICkNCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgICAgIGlmICggSW5zZXJ0KCBhUm9vdC0+TmV4dFNp
YmxpbmcoKSwgYUl0ZW0sIGFQYXJlbnRJZCApICkNCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsg
ICAgICAgICAgDQorICAgICAgICB9DQorICAgIHJldHVybiBmYWxzZTsgICAgICAgICAgICAgICAg
ICAgICAgDQorICAgIH0gDQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0
RXh0ZW5zaW9uOjpJbnNlcnRTaWJsaW5nDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6SW5zZXJ0U2libGluZyggQ01l
bnVJdGVtKiBhUm9vdCwgQ01lbnVJdGVtKiBhSXRlbSApDQorICAgIHsNCisgICAgaWYgKCBhUm9v
dCAmJiAoIGFSb290LT5OZXh0U2libGluZygpID09IE5VTEwgKSApIC8vZmlyc3Qgc2libGluZw0K
KyAgICAgICAgew0KKyAgICAgICAgYVJvb3QtPlNldE5leHRTaWJsaW5nKCBhSXRlbSApOw0KKyAg
ICAgICAgfQ0KKyAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICBJbnNlcnRTaWJsaW5nKCBh
Um9vdC0+TmV4dFNpYmxpbmcoKSwgYUl0ZW0gKTsNCisgICAgICAgIH0NCisNCisgICAgcmV0dXJu
Ow0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNp
b246OkRlbGV0ZU1lbnVJdGVtDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpEZWxldGVNZW51SXRlbSggVEludCBhQ21k
SWQsIFRJbnQgYVBhcmVudENtZElkICkNCisgICAgew0KKyAgICBDTWVudUl0ZW0qIG5vZGUgPSBO
VUxMOw0KKyAgICBub2RlID0gRmluZE5vZGVCeUlkKCBpTWVudVJvb3QsIGFQYXJlbnRDbWRJZCAp
OyANCisNCisgICAgaWYgKCBub2RlICYmIG5vZGUtPkZpcnN0Q2hpbGQoKSApDQorICAgICAgICB7
DQorICAgICAgICAvL2l0IGNvdWxkIGJlIGZpcnN0IGNoaWxkDQorICAgICAgICBpZiAoIG5vZGUt
PkZpcnN0Q2hpbGQoKS0+Q21kSWQoKSA9PSBhQ21kSWQgICkNCisgICAgICAgICAgICB7DQorICAg
ICAgICAgICAgQ01lbnVJdGVtKiB0ZW1wRmlyc3RDaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGQoKTsN
CisgICAgICAgICAgICAvL3RoZSBzaWJsaW5nIG9mIGZpcnN0Y2hpbGQgd2lsbCBiZSB0aGUgbmV3
IGZpcnN0Y2hpbGQNCisgICAgICAgICAgICBub2RlLT5TZXRGaXJzdENoaWxkKCBub2RlLT5GaXJz
dENoaWxkKCktPk5leHRTaWJsaW5nKCkgKTsNCisgICAgICAgICAgICBEZWxldGVUcmVlKCB0ZW1w
Rmlyc3RDaGlsZCApOw0KKyAgICAgICAgICAgIHRlbXBGaXJzdENoaWxkID0gTlVMTDsNCisgICAg
ICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgLy9vciBvbmUgb2YgdGhl
IHNpYmxpbmcgb2YgZmlyc3RjaGlsZA0KKyAgICAgICAgZWxzZSANCisgICAgICAgICAgICB7DQor
ICAgICAgICAgICAgQ01lbnVJdGVtKiBwcmV2ID0gbm9kZS0+Rmlyc3RDaGlsZCgpOw0KKyAgICAg
ICAgICAgIENNZW51SXRlbSogaXRlbSA9IE5VTEw7DQorICAgICAgICAgICAgaWYgKCBwcmV2ICkN
CisgICAgICAgICAgICAgICAgaXRlbSA9IHByZXYtPk5leHRTaWJsaW5nKCk7DQorICAgICAgICAg
ICAgd2hpbGUoIGl0ZW0gKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGlm
ICggaXRlbS0+Q21kSWQoKSA9PSBhQ21kSWQgKQ0KKyAgICAgICAgICAgICAgICAgICAgew0KKyAg
ICAgICAgICAgICAgICAgICAgcHJldi0+U2V0TmV4dFNpYmxpbmcoIGl0ZW0tPk5leHRTaWJsaW5n
KCkgKTsNCisgICAgICAgICAgICAgICAgICAgIERlbGV0ZVRyZWUoIGl0ZW0gKTsNCisgICAgICAg
ICAgICAgICAgICAgIGl0ZW0gPSBOVUxMOw0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQor
ICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLT5OZXh0
U2libGluZygpOyAgICANCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAg
ICAgIH0NCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0
ZW5zaW9uOjpDbGVhck1lbnVJdGVtcw0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6Q2xlYXJNZW51SXRlbXMoKQ0KKyAg
ICB7DQorICAgIERlbGV0ZVRyZWUoIGlNZW51Um9vdCApOw0KKyAgICBpTWVudVJvb3QgPSBOVUxM
Ow0KKyAgICB9DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNp
b246OlJlcGxhY2VNZW51SXRlbQ0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6UmVwbGFjZU1lbnVJdGVtKCANCisgICAg
VEludCBvbGRJdGVtQ21kSWQsIA0KKyAgICBjb25zdCBURGVzQyYgbmV3SXRlbVRleHQsIA0KKyAg
ICBUSW50IG5ld0l0ZW1DbWRJZCwgDQorICAgIFRJbnQgbmV3SXRlbURpbW1lZCApDQorICAgIHsN
CisgICAgQ01lbnVJdGVtKiBub2RlID0gTlVMTDsNCisNCisgICAgbm9kZSA9IEZpbmROb2RlQnlJ
ZCggaU1lbnVSb290LCBvbGRJdGVtQ21kSWQgKTsgICAgDQorICAgIGlmICggbm9kZSApDQorICAg
ICAgICB7DQorICAgICAgICBub2RlLT5TZXRUZXh0KCBuZXdJdGVtVGV4dCApOyAgICANCisgICAg
ICAgIG5vZGUtPlNldENtZElkKCBuZXdJdGVtQ21kSWQgKTsgICANCisgICAgICAgIG5vZGUtPlNl
dERpbW1lZCggbmV3SXRlbURpbW1lZCApOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkdldE1lbnVJdGVtDQorLy8N
CisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0
ZW5zaW9uOjpHZXRNZW51SXRlbSggDQorICAgIFREZXMmIHRleHRWYWwsIFRJbnQmIGNtZElkLCBU
Qm9vbCYgZGltU3RhdCApDQorICAgIHsNCisgICAgQ01lbnVJdGVtKiBub2RlID0gTlVMTDsNCisN
CisgICAgaWYgKCBjbWRJZCA9PSAtMSApDQorICAgICAgICB7DQorICAgICAgICBub2RlID0gRmlu
ZE5vZGVCeVRleHQoIGlNZW51Um9vdCwgdGV4dFZhbCApOyANCisgICAgICAgIH0NCisgICAgZWxz
ZQ0KKyAgICAgICAgew0KKyAgICAgICAgbm9kZSA9IEZpbmROb2RlQnlJZCggaU1lbnVSb290LCBj
bWRJZCApOw0KKyAgICAgICAgfQ0KKyAgICBpZiAoIG5vZGUgKQ0KKyAgICAgICAgew0KKyAgICAg
ICAgY21kSWQgPSBub2RlLT5DbWRJZCgpOw0KKyAgICAgICAgdGV4dFZhbC5Db3B5KCBub2RlLT5U
ZXh0KCkgKTsNCisgICAgICAgIGRpbVN0YXQgPSBub2RlLT5EaW1tZWQoKTsNCisgICAgICAgIH0N
CisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9u
OjpHZXRGcm9tTWVudUl0ZW1Db2xsZWN0aW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KKy8vDQordm9pZCogQ1dpZGdldEV4dGVuc2lvbjo6R2V0RnJvbU1lbnVJdGVt
Q29sbGVjdGlvbiggY29uc3QgVERlc0MmIHRleHRWYWwgKQ0KKyAgICB7DQorICAgIENNZW51SXRl
bSogbm9kZSA9IE5VTEw7DQorDQorICAgIG5vZGUgPSBGaW5kTm9kZUJ5VGV4dCggaU1lbnVSb290
LCB0ZXh0VmFsICk7IA0KKyAgICBpZiAoIG5vZGUgKQ0KKyAgICAgICAgcmV0dXJuIG5vZGUtPk9i
aigpOw0KKyAgICBlbHNlDQorICAgICAgICByZXR1cm4gTlVMTDsgICANCisgICAgfQ0KKw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpHZXRGcm9tTWVudUl0
ZW1Db2xsZWN0aW9uDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
DQordm9pZCogQ1dpZGdldEV4dGVuc2lvbjo6R2V0RnJvbU1lbnVJdGVtQ29sbGVjdGlvbiggVElu
dCBjbWRJZCApDQorICAgIHsNCisgICAgQ01lbnVJdGVtKiBub2RlID0gTlVMTDsNCisNCisgICAg
bm9kZSA9IEZpbmROb2RlQnlJZCggaU1lbnVSb290LCBjbWRJZCApOyANCisgICAgaWYgKCBub2Rl
ICkNCisgICAgICAgIHJldHVybiBub2RlLT5PYmooKTsNCisgICAgZWxzZQ0KKyAgICAgICAgcmV0
dXJuIE5VTEw7ICAgDQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dp
ZGdldEV4dGVuc2lvbjo6U2V0RGltbWVkDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKy8vDQordm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXREaW1tZWQoIFRJbnQgYUNt
ZElkLCBUQm9vbCBhVmFsdWUgKQ0KKyAgICB7DQorICAgIENNZW51SXRlbSogbm9kZSA9IE5VTEw7
DQorICAgIG5vZGUgPSBGaW5kTm9kZUJ5SWQoIGlNZW51Um9vdCwgYUNtZElkICk7ICAgICAgIA0K
KyAgICBpZiAoIG5vZGUgKSANCisgICAgICAgIG5vZGUtPlNldERpbW1lZCggYVZhbHVlICk7DQor
ICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6
U2V0TWVudUl0ZW1PYnNlcnZlcg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6U2V0TWVudUl0ZW1PYnNlcnZlciggDQor
ICAgIFRJbnQgYUNtZElkLCBXaWRnZXRFdmVudEhhbmRsZXIqIGFPblNlbGVjdENhbGxiYWNrICkN
CisgICAgew0KKyAgICBDTWVudUl0ZW0qIG5vZGUgPSBOVUxMOw0KKyAgICBub2RlID0gRmluZE5v
ZGVCeUlkKCBpTWVudVJvb3QsIGFDbWRJZCApOyANCisgICAgaWYgKCBub2RlICkNCisgICAgICAg
IG5vZGUtPlNldENhbGxiYWNrKCBhT25TZWxlY3RDYWxsYmFjayApOw0KKyAgICB9DQorDQorLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OkdldE1lbnVJdGVtT2Jz
ZXJ2ZXINCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCitXaWRn
ZXRFdmVudEhhbmRsZXIqIENXaWRnZXRFeHRlbnNpb246OkdldE1lbnVJdGVtT2JzZXJ2ZXIoIFRJ
bnQgYUNtZElkICkNCisgICAgew0KKyAgICBDTWVudUl0ZW0qIG5vZGUgPSBOVUxMOw0KKyAgICBu
b2RlID0gRmluZE5vZGVCeUlkKCBpTWVudVJvb3QsIGFDbWRJZCApOyANCisgICAgaWYgKCBub2Rl
ICkNCisgICAgICAgIHJldHVybiBub2RlLT5DYWxsYmFjaygpOw0KKyAgICBlbHNlDQorICAgICAg
ICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRNZW51T2JzZXJ2ZXINCisvLw0KKy8vDQorLy8NCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCit2b2lkIENXaWRnZXRFeHRlbnNpb246OlNldE1lbnVP
YnNlcnZlciggV2lkZ2V0RXZlbnRIYW5kbGVyKiBhTWVudUNhbGxiYWNrICkNCisgICAgew0KKyAg
ICBpTWVudUNhbGxiYWNrID0gYU1lbnVDYWxsYmFjazsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpHZXRNZW51T2JzZXJ2ZXINCisvLw0K
Ky8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCitXaWRnZXRFdmVudEhhbmRs
ZXIqJiBDV2lkZ2V0RXh0ZW5zaW9uOjpHZXRNZW51T2JzZXJ2ZXIoKQ0KKyAgICB7ICANCisgICAg
cmV0dXJuIGlNZW51Q2FsbGJhY2s7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6U2V0UmlnaHRLZXlPYnNlcnZlcg0KKy8vDQorLy8NCisv
Lw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6
U2V0UmlnaHRLZXlPYnNlcnZlciggV2lkZ2V0RXZlbnRIYW5kbGVyKiBhTWVudUNhbGxiYWNrICkN
CisgICAgew0KKyAgICBpUmlnaHRLZXlDYWxsYmFjayA9IGFNZW51Q2FsbGJhY2s7DQorICAgIH0N
CisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1dpZGdldEV4dGVuc2lvbjo6R2V0Umln
aHRLZXlPYnNlcnZlcg0KKy8vDQorLy8NCisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
Lw0KK1dpZGdldEV2ZW50SGFuZGxlciomIENXaWRnZXRFeHRlbnNpb246OkdldFJpZ2h0S2V5T2Jz
ZXJ2ZXIoKQ0KKyAgICB7ICANCisgICAgcmV0dXJuIGlSaWdodEtleUNhbGxiYWNrOw0KKyAgICB9
DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENXaWRnZXRFeHRlbnNpb246OlJpZ2h0
S2V5Q2FsbGJhY2sNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8N
CitUQm9vbCBDV2lkZ2V0RXh0ZW5zaW9uOjpSaWdodEtleUNhbGxiYWNrKCkNCisgICAgew0KKyAg
ICBpZiAoIGlXaWRnZXRFbmdpbmVCcmlkZ2UgKQ0KKyAgICAgICAgew0KKyAgICAgICAgcmV0dXJu
IGlXaWRnZXRFbmdpbmVCcmlkZ2UtPlJpZ2h0U29mdEtleVByZXNzZWQoKTsNCisgICAgICAgIH0N
CisgICAgcmV0dXJuIEVGYWxzZTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpGaW5kTm9kZUJ5SWQNCisvLw0KKy8vDQorLy8NCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQorLy8NCitDTWVudUl0ZW0qIENXaWRnZXRFeHRlbnNpb246OkZp
bmROb2RlQnlJZCggQ01lbnVJdGVtKiBub2RlLCBUSW50IGFDbWRJZCApDQorICAgIHsNCisgICAg
Q01lbnVJdGVtKiBpdGVtID0gTlVMTDsNCisNCisgICAgaWYgKCAhbm9kZSApIA0KKyAgICAgICAg
cmV0dXJuIGl0ZW07DQorDQorICAgIGlmICggbm9kZS0+Q21kSWQoKSA9PSBhQ21kSWQgKQ0KKyAg
ICAgICAgew0KKyAgICAgICAgcmV0dXJuIG5vZGU7DQorICAgICAgICB9DQorICAgIGVsc2UNCisg
ICAgICAgIHsNCisgICAgICAgIGlmICggbm9kZS0+Rmlyc3RDaGlsZCgpICkgDQorICAgICAgICAg
ICAgeyANCisgICAgICAgICAgICBpdGVtID0gRmluZE5vZGVCeUlkKCBub2RlLT5GaXJzdENoaWxk
KCksIGFDbWRJZCApOyANCisgICAgICAgICAgICBpZiAoIGl0ZW0gKSANCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGl0ZW07DQorICAgICAgICAgICAgfSANCisgICAgICAgIGlmICggbm9kZS0+TmV4
dFNpYmxpbmcoKSApDQorICAgICAgICAgICAgeyANCisgICAgICAgICAgICBpdGVtID0gRmluZE5v
ZGVCeUlkKCBub2RlLT5OZXh0U2libGluZygpLCBhQ21kSWQgKTsgDQorICAgICAgICAgICAgfQ0K
KyAgICAgICAgfQ0KKyAgICByZXR1cm4gaXRlbTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpGaW5kTm9kZUJ5VGV4dA0KKy8vDQorLy8N
CisvLw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK0NNZW51SXRlbSogQ1dpZGdldEV4
dGVuc2lvbjo6RmluZE5vZGVCeVRleHQoIENNZW51SXRlbSogbm9kZSwgY29uc3QgVERlc0MmIGFU
ZXh0ICkNCisgICAgew0KKyAgICBDTWVudUl0ZW0qIGl0ZW0gPSBOVUxMOw0KKw0KKyAgICBpZiAo
ICFub2RlICkgDQorICAgICAgICByZXR1cm4gaXRlbTsNCisNCisgICAgaWYgKCBub2RlLT5UZXh0
KCkuQ29tcGFyZSggYVRleHQgKSA9PSAwICkNCisgICAgICAgIHsNCisgICAgICAgIHJldHVybiBu
b2RlOw0KKyAgICAgICAgfQ0KKyAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICBpZiAoIG5v
ZGUtPkZpcnN0Q2hpbGQoKSApIA0KKyAgICAgICAgICAgIHsgDQorICAgICAgICAgICAgaXRlbSA9
IEZpbmROb2RlQnlUZXh0KCBub2RlLT5GaXJzdENoaWxkKCksIGFUZXh0ICk7IA0KKw0KKyAgICAg
ICAgICAgIGlmICggaXRlbSApIA0KKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsNCisgICAg
ICAgICAgICB9IA0KKyAgICAgICAgaWYgKCBub2RlLT5OZXh0U2libGluZygpICkNCisgICAgICAg
ICAgICB7IA0KKyAgICAgICAgICAgIGl0ZW0gPSBGaW5kTm9kZUJ5VGV4dCggbm9kZS0+TmV4dFNp
YmxpbmcoKSwgYVRleHQgKTsgDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICByZXR1
cm4gaXRlbTsNCisgICAgfQ0KKw0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDTWVu
dUl0ZW06Ok5ld0wNCisvLw0KKy8vDQorLy8NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8N
CitDTWVudUl0ZW0qIENNZW51SXRlbTo6TmV3TCgNCisgICAgY29uc3QgVERlc0MxNiYgYVRleHQs
IFRJbnQgYUNtZElkLCB2b2lkKiBhT2JqICkNCisgICAgew0KKyAgICBDTWVudUl0ZW0qIHNlbGYg
PSBuZXcgKCBFTGVhdmUgKSBDTWVudUl0ZW0oIGFUZXh0LCBhQ21kSWQsIGFPYmogKTsNCisgICAg
Q2xlYW51cFN0YWNrOjpQdXNoTCggc2VsZiApOw0KKyAgICBzZWxmLT5Db25zdHJ1Y3RMKCk7DQor
ICAgIENsZWFudXBTdGFjazo6UG9wKCk7DQorICAgIHJldHVybiBzZWxmOw0KKyAgICB9DQorDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENNZW51SXRlbTo6Q01lbnVJdGVtDQorLy8NCisv
Lw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorQ01lbnVJdGVtOjpDTWVudUl0
ZW0oDQorICAgIGNvbnN0IFREZXNDMTYmIGFUZXh0LCBUSW50IGFDbWRJZCwgdm9pZCogYU9iaiAp
DQorICAgIDppQ21kSWQoIGFDbWRJZCApLA0KKyAgICBpT2JqKCBhT2JqICkNCisgICAgew0KKyAg
ICBpVGV4dCA9IGFUZXh0LkFsbG9jKCk7DQorICAgIGlEaW1tZWQgPSBFRmFsc2U7DQorICAgIGlD
YWxsYmFjayA9IE5VTEw7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
Q01lbnVJdGVtOjpDb25zdHJ1Y3RMDQorLy8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KKy8vDQordm9pZCBDTWVudUl0ZW06OkNvbnN0cnVjdEwoKQ0KKyAgICB7DQorICAgIH0N
CisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ01lbnVJdGVtOjp+Q01lbnVJdGVtDQor
Ly8NCisvLw0KKy8vDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorQ01lbnVJdGVtOjp+
Q01lbnVJdGVtKCkNCisgICAgew0KKyAgICBkZWxldGUgaVRleHQ7DQorICAgIH0NCisNCisNCiAv
L0VORCBPRiBGSUxFDQogDQogDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRQ
cmVmZXJlbmNlcy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dp
ZGdldFByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjA5MDEpDQorKysgV2ViS2l0L0Jyb3dzZXJW
aWV3L3NyYy9XaWRnZXRQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02NCw5ICs2
NCwxMCBAQA0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotQ1dpZGdldFByZWZl
cmVuY2VzKiBDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0woQ1dpZGdldEV4dGVuc2lvbiYgYVdpZGdl
dEV4dGVuc2lvbikNCitDV2lkZ2V0UHJlZmVyZW5jZXMqIENXaWRnZXRQcmVmZXJlbmNlczo6TmV3
TCggDQorICAgIENXaWRnZXRFeHRlbnNpb24mIGFXaWRnZXRFeHRlbnNpb24gKQ0KICAgICB7DQot
ICAgIENXaWRnZXRQcmVmZXJlbmNlcyogc2VsZiA9IE5ld0xDKGFXaWRnZXRFeHRlbnNpb24pOw0K
KyAgICBDV2lkZ2V0UHJlZmVyZW5jZXMqIHNlbGYgPSBOZXdMQyggYVdpZGdldEV4dGVuc2lvbiAp
Ow0KICAgICBDbGVhbnVwU3RhY2s6OlBvcCggc2VsZiApOw0KICAgICByZXR1cm4gc2VsZjsNCiAg
ICAgfQ0KQEAgLTc4LDkgKzc5LDExIEBADQogLy8NCiAvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCi1DV2lkZ2V0UHJlZmVyZW5jZXMqIENXaWRnZXRQcmVmZXJlbmNlczo6TmV3TEMoQ1dpZGdl
dEV4dGVuc2lvbiYgYVdpZGdldEV4dGVuc2lvbikNCitDV2lkZ2V0UHJlZmVyZW5jZXMqIENXaWRn
ZXRQcmVmZXJlbmNlczo6TmV3TEMoIA0KKyAgICBDV2lkZ2V0RXh0ZW5zaW9uJiBhV2lkZ2V0RXh0
ZW5zaW9uICkNCiAgICAgew0KLSAgICBDV2lkZ2V0UHJlZmVyZW5jZXMqIHNlbGYgPSBuZXcgKCBF
TGVhdmUgKSBDV2lkZ2V0UHJlZmVyZW5jZXMoYVdpZGdldEV4dGVuc2lvbik7DQorICAgIENXaWRn
ZXRQcmVmZXJlbmNlcyogc2VsZiA9IA0KKyAgICAgICAgbmV3ICggRUxlYXZlICkgQ1dpZGdldFBy
ZWZlcmVuY2VzKCBhV2lkZ2V0RXh0ZW5zaW9uICk7DQogICAgIENsZWFudXBTdGFjazo6UHVzaEwo
IHNlbGYgKTsNCiAgICAgc2VsZi0+Q29uc3RydWN0TCgpOw0KICAgICByZXR1cm4gc2VsZjsNCkBA
IC05Miw4ICs5NSw4IEBADQogLy8NCiAvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi1DV2lk
Z2V0UHJlZmVyZW5jZXM6OkNXaWRnZXRQcmVmZXJlbmNlcyhDV2lkZ2V0RXh0ZW5zaW9uJiBhV2lk
Z2V0RXh0ZW5zaW9uKQ0KLSAgICA6IGlXaWRnZXRFeHRlbnNpb24oJmFXaWRnZXRFeHRlbnNpb24p
DQorQ1dpZGdldFByZWZlcmVuY2VzOjpDV2lkZ2V0UHJlZmVyZW5jZXMoIENXaWRnZXRFeHRlbnNp
b24mIGFXaWRnZXRFeHRlbnNpb24gKQ0KKyAgICA6IGlXaWRnZXRFeHRlbnNpb24oICZhV2lkZ2V0
RXh0ZW5zaW9uICkNCiAgICAgew0KICAgICB9DQogDQpAQCAtMTA3LDYgKzExMCw5IEBADQogICAg
IHsNCiAgICAgaU1hcC5SZXNldEFuZERlc3Ryb3koKTsNCiAgICAgaU1hcC5DbG9zZSgpOw0KKyAg
ICBpU2l6ZU1hcC5SZXNldEFuZERlc3Ryb3koKTsNCisgICAgaVNpemVNYXAuQ2xvc2UoKTsNCisg
ICAgZGVsZXRlIGlCYXNlUGF0aDsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CkBAIC0xMjUsMjkgKzEzMSw3MyBAQA0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQotVEludCBDV2lkZ2V0UHJlZmVyZW5jZXM6OlByZWZlcmVuY2VMKGNvbnN0IFREZXNDJiBhS2V5
LCBUUHRyQyYgYVZhbHVlKQ0KK1RJbnQgQ1dpZGdldFByZWZlcmVuY2VzOjpQcmVmZXJlbmNlTCgg
Y29uc3QgVERlc0MmIGFLZXksIFRQdHJDJiBhVmFsdWUgKQ0KICAgICB7DQorICAgIGlmICggIWlC
YXNlUGF0aCAmJiAoIGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCkuTGVuZ3RoKCkg
PiAwICkgKQ0KKyAgICAgICAgaUJhc2VQYXRoID0gaVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFz
ZVBhdGgoKS5BbGxvY0woKTsNCiANCiAgICAgVEludCByU3VjY2VzcyA9IEtFcnJOb3RGb3VuZDsN
CiANCi0gICAgaWYgKGFLZXkuTGVuZ3RoKCkgPD0gS01heEtleVZhbHVlU2l6ZSkNCisgICAgaWYg
KCBhS2V5Lkxlbmd0aCgpIDw9IEtNYXhLZXlWYWx1ZVNpemUgKQ0KICAgICAgICAgew0KLSAgICAg
ICAgSEJ1ZkMqIGtleSA9IEhCdWZDOjpOZXdMQyhhS2V5Lkxlbmd0aCgpK0tNYXhJbnRMZW5ndGgr
MSk7DQorICAgICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xDKCBhS2V5Lkxlbmd0aCgpICsg
S01heEludExlbmd0aCArIDEgKTsNCiAgICAgICAgIGtleS0+RGVzKCkuRm9ybWF0KCBLS2V5Rm9y
bWF0LCBpV2lkZ2V0RXh0ZW5zaW9uLT5HZXRXaWRnZXRJZCgpLCAmYUtleSApOw0KKyAgICAgICAg
VEludCogc2l6ZSA9IGlTaXplTWFwLkZpbmQoICprZXkgKTsNCisgICAgICAgIFREZXNDKiByZXMg
PSBpTWFwLkZpbmQoICprZXkgKTsNCiANCi0gICAgICAgIFREZXNDKiByZXMgPSBpTWFwLkZpbmQo
KmtleSk7DQotICAgICAgICBpZiAocmVzKQ0KKyAgICAgICAgaWYgKCAhcmVzIHx8ICFzaXplICkN
CiAgICAgICAgICAgICB7DQotICAgICAgICAgICAgYVZhbHVlLlNldCgqcmVzKTsNCi0gICAgICAg
ICAgICByU3VjY2VzcyA9IEtFcnJOb25lOw0KKyAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9w
QW5kRGVzdHJveSgga2V5ICk7DQorICAgICAgICAgICAgcmV0dXJuIHJTdWNjZXNzOw0KICAgICAg
ICAgICAgIH0NCiANCisgICAgICAgIGlmICggKnNpemUgPiBLTWF4S2V5VmFsdWVTaXplICkNCisg
ICAgICAgICAgICB7DQorICAgICAgICAgICAgLy8gcmV0dXJuIGNvbnRlbnRzIGZyb20gdGVtcCBm
aWxlIHdob3NlIG5hbWUgaXMgc3RvcmVkIA0KKyAgICAgICAgICAgIC8vIGluIHRoZSB2YWx1ZSBm
aWVsZCBvZiBpTWFwDQorICAgICAgICAgICAgUkZzIGZzOw0KIA0KLSAgICAgICAgQ2xlYW51cFN0
YWNrOjpQb3Aoa2V5KTsNCisgICAgICAgICAgICBpZiAoIGZzLkNvbm5lY3QoKSA9PSBLRXJyTm9u
ZSApDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgQ2xlYW51cENsb3NlUHVz
aEwoIGZzICk7DQorICAgICAgICAgICAgICAgIEhCdWZDKiBmaWxlUGF0aCA9IEhCdWZDOjpOZXdM
QyggcmVzLT5MZW5ndGgoKSApOw0KIA0KKyAgICAgICAgICAgICAgICBUUHRyIGZOYW1lKCBmaWxl
UGF0aC0+RGVzKCkgKTsNCisgICAgICAgICAgICAgICAgLy9mTmFtZS5BcHBlbmQoICppQmFzZVBh
dGggKTsNCisgICAgICAgICAgICAgICAgZk5hbWUuQXBwZW5kKCAqcmVzICk7DQorDQorICAgICAg
ICAgICAgICAgIFJGaWxlUmVhZFN0cmVhbSByZWFkU3RyZWFtOw0KKw0KKyAgICAgICAgICAgICAg
ICBpZiAoIHJlYWRTdHJlYW0uT3BlbiggZnMsICpmaWxlUGF0aCwgRUZpbGVSZWFkICkgPT0gS0Vy
ck5vbmUgKQ0KKyAgICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgQ2xl
YW51cENsb3NlUHVzaEwoIHJlYWRTdHJlYW0gKTsNCisgICAgICAgICAgICAgICAgICAgIFRJbnQg
bGVuKCByZWFkU3RyZWFtLlJlYWRJbnQzMkwoKSApOw0KKw0KKyAgICAgICAgICAgICAgICAgICAg
aWYgKCBsZW4gPiAwICkNCisgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgSEJ1ZkMq
IHZhbHVlID0gSEJ1ZkM6Ok5ld0xDKCBsZW4gKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBU
UHRyIHB0cnZhbHVlID0gdmFsdWUtPkRlcygpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
YWRTdHJlYW0uUmVhZEwoIHB0cnZhbHVlLCBsZW4gKTsgICAgDQorICAgICAgICAgICAgICAgICAg
ICAgICAgYVZhbHVlLlNldCggKnZhbHVlICk7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ2xl
YW51cFN0YWNrOjpQb3AoIHZhbHVlICk7DQorICAgICAgICAgICAgICAgICAgICAgICAgclN1Y2Nl
c3MgPSBLRXJyTm9uZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICANCisgICAgICAg
ICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOy8vcmVhZFN0cmVhbQ0K
KyAgICAgICAgICAgICAgICAgICAgfSAgIA0KKw0KKyAgICAgICAgICAgICAgICBDbGVhbnVwU3Rh
Y2s6OlBvcEFuZERlc3Ryb3koMik7IC8vZmlsZVBhdGgsZnMNCisgICAgICAgICAgICAgICAgfQ0K
KyAgICAgICAgICAgIH0gICAgICAgIA0KKyAgICAgICAgZWxzZSBpZiAoICpzaXplID4gMCApDQor
ICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGFWYWx1ZS5TZXQoICpyZXMgKTsNCisgICAgICAg
ICAgICByU3VjY2VzcyA9IEtFcnJOb25lOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIENs
ZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveShrZXkpOw0KICAgICAgICAgfQ0KIA0KLSAgICAgcmV0
dXJuIHJTdWNjZXNzOw0KKyAgICByZXR1cm4gclN1Y2Nlc3M7DQogICAgIH0NCiANCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQpAQCAtMTU2LDg0ICsyMDYsMTI2IEBADQogLy8NCiAvLw0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCi12b2lkIENXaWRnZXRQcmVmZXJlbmNlczo6U2V0UHJlZmVyZW5j
ZUwoY29uc3QgVERlc0MmIGFLZXksIGNvbnN0IFREZXNDJiBhVmFsdWUpDQordm9pZCBDV2lkZ2V0
UHJlZmVyZW5jZXM6OlNldFByZWZlcmVuY2VMKCANCisgICAgY29uc3QgVERlc0MmIGFLZXksIGNv
bnN0IFREZXNDJiBhVmFsdWUgKQ0KICAgICB7DQorICAgIGlmICggIWlCYXNlUGF0aCAmJiAoaVdp
ZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKS5MZW5ndGgoKSA+IDApICkNCisgICAgICAg
IGlCYXNlUGF0aCA9IGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCkuQWxsb2NMKCk7
DQogDQotICAgIGlmIChhS2V5Lkxlbmd0aCgpIDw9IEtNYXhLZXlWYWx1ZVNpemUpDQorICAgIGlm
ICggYUtleS5MZW5ndGgoKSA8PSBLTWF4S2V5VmFsdWVTaXplICYmIGFWYWx1ZS5MZW5ndGgoKSA+
IDAgKQ0KICAgICAgICAgew0KLQ0KLSAgICAgICAgSEJ1ZkMqIGtleSA9IEhCdWZDOjpOZXdMQyhh
S2V5Lkxlbmd0aCgpK0tNYXhJbnRMZW5ndGgrMSk7DQorICAgICAgICBIQnVmQyoga2V5ID0gSEJ1
ZkM6Ok5ld0xDKCBhS2V5Lkxlbmd0aCgpICsgS01heEludExlbmd0aCArIDEgKTsNCiAgICAgICAg
IGtleS0+RGVzKCkuRm9ybWF0KCBLS2V5Rm9ybWF0LCBpV2lkZ2V0RXh0ZW5zaW9uLT5HZXRXaWRn
ZXRJZCgpLCAmYUtleSApOw0KIA0KLSAgICAgICAgaWYgKCBhVmFsdWUuTGVuZ3RoKCkgPiAwICYm
IGFWYWx1ZS5MZW5ndGgoKSA8PSBLTWF4S2V5VmFsdWVTaXplICkNCisgICAgICAgIGlmICggYVZh
bHVlLkxlbmd0aCgpIDw9IEtNYXhLZXlWYWx1ZVNpemUgKQ0KICAgICAgICAgICAgIHsNCiAgICAg
ICAgICAgICBIQnVmQyogdmFsdWUgPSBhVmFsdWUuQWxsb2NMQygpOw0KLSAgICAgICAgICAgIGlN
YXAuSW5zZXJ0TChrZXksdmFsdWUpOw0KLSAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKHZh
bHVlKTsNCi0gICAgICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcChrZXkpOw0KKyAgICAgICAgICAg
IGlNYXAuSW5zZXJ0TCgga2V5LCB2YWx1ZSApOw0KKyAgICAgICAgICAgIFRJbnQqIHNpemUgPSBu
ZXcgVEludChhVmFsdWUuTGVuZ3RoKCkpOw0KKyAgICAgICAgICAgIGlTaXplTWFwLkluc2VydEwo
IGtleSwgc2l6ZSApOw0KKyAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCB2YWx1ZSApOw0K
KyAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCBrZXkgKTsNCisgICAgICAgICAgICByZXR1
cm47DQogICAgICAgICAgICAgfQ0KICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgIHsNCi0gICAg
ICAgICAgICBpTWFwLlJlbW92ZShrZXkpOw0KLSAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9w
QW5kRGVzdHJveShrZXkpOw0KLSAgICAgICAgICAgIH0NCisgICAgICAgICAgICAvLyBjcmVhdGUg
YSB0ZW1wIGZpbGUgYW5kIHNhdmUgdGhlIHZhbHVlIGluIHRlbXAgZmlsZS4gDQorICAgICAgICAg
ICAgLy8gaU1hcCB2YWx1ZSBmaWVsZCBjb250YWlucyB0aGUgdGVtcCBmaWxlIG5hbWUuDQorICAg
ICAgICAgICAgUkZzIGZzOw0KKyAgICAgICAgICAgIFJGaWxlIGZpbGU7DQogDQorICAgICAgICAg
ICAgaWYgKCBmcy5Db25uZWN0KCkgPT0gS0Vyck5vbmUgKQ0KKyAgICAgICAgICAgICAgICB7DQor
ICAgICAgICAgICAgICAgIENsZWFudXBDbG9zZVB1c2hMKCBmcyApOw0KKyAgICAgICAgICAgICAg
ICBURmlsZU5hbWUgdGVtcEZpbGVOYW1lOw0KKyAgICAgICAgICAgICAgICBmaWxlLlRlbXAoIGZz
LCAqaUJhc2VQYXRoLCB0ZW1wRmlsZU5hbWUsIA0KKyAgICAgICAgICAgICAgICAgICAgRUZpbGVX
cml0ZXxFRmlsZVNoYXJlRXhjbHVzaXZlICk7DQorICAgICAgICAgICAgICAgIENsZWFudXBDbG9z
ZVB1c2hMKCBmaWxlICk7DQorDQorICAgICAgICAgICAgICAgIEhCdWZDKiBmaWxlUGF0aCA9IEhC
dWZDOjpOZXdMQyggaUJhc2VQYXRoLT5MZW5ndGgoKSANCisgICAgICAgICAgICAgICAgICAgICsg
dGVtcEZpbGVOYW1lLkxlbmd0aCgpICk7DQorDQorICAgICAgICAgICAgICAgIFRQdHIgZk5hbWUo
IGZpbGVQYXRoLT5EZXMoKSApOw0KKyAgICAgICAgICAgICAgICBmTmFtZS5BcHBlbmQoICppQmFz
ZVBhdGggKTsgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgZk5hbWUuQXBwZW5kKCB0
ZW1wRmlsZU5hbWUgKTsNCisgICAgICAgICAgICAgICAgaU1hcC5JbnNlcnRMKCBrZXksIGZpbGVQ
YXRoICk7DQorICAgICAgICAgICAgICAgIFRJbnQqIHNpemUgPSBuZXcgVEludCggYVZhbHVlLkxl
bmd0aCgpICk7DQorICAgICAgICAgICAgICAgIGlTaXplTWFwLkluc2VydEwoIGtleSwgc2l6ZSAp
Ow0KKw0KKyAgICAgICAgICAgICAgICBSRmlsZVdyaXRlU3RyZWFtIHdyaXRlU3RyZWFtKCBmaWxl
ICk7DQorICAgICAgICAgICAgICAgIENsZWFudXBDbG9zZVB1c2hMKCB3cml0ZVN0cmVhbSApOyAg
ICAgICAgDQorICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlSW50MzJMKCBhVmFsdWUu
TGVuZ3RoKCkgKTsNCisgICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVMKCBhVmFsdWUg
KTsgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtLkNvbW1pdEwoKTsN
CisgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCAzICk7IC8vd3Jp
dGVTdHJlYW0sIGZpbGUsZnMNCisgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoIGtl
eSApOw0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgIH0gICAgICAg
ICAgIA0KKyAgICAgICAgICAgIH0gICAgICAgIA0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BB
bmREZXN0cm95KCBrZXkgKTsgICANCiAgICAgICAgIH0NCiAgICAgfQ0KIA0KIA0KIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCi0vLyBDV2lkZ2V0UHJlZmVyZW5jZXM6OlNhdmUNCisvLyBDV2lkZ2V0
UHJlZmVyZW5jZXM6OlNhdmVMDQogLy8NCiAvLw0KIC8vDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KIHZvaWQgQ1dpZGdldFByZWZlcmVuY2VzOjpTYXZlTCgpDQogICAgIHsNCisgICAgaWYgKCAh
aUJhc2VQYXRoICYmIChpV2lkZ2V0RXh0ZW5zaW9uLT5XaWRnZXRCYXNlUGF0aCgpLkxlbmd0aCgp
ID4gMCkgKQ0KKyAgICAgICAgaUJhc2VQYXRoID0gaVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFz
ZVBhdGgoKS5BbGxvY0woKTsNCisNCiAgICAgUkZzIGZzOw0KKw0KICAgICBpZiAoIGZzLkNvbm5l
Y3QoKSA9PSBLRXJyTm9uZSApDQogICAgICAgICB7DQotDQogICAgICAgICBDbGVhbnVwQ2xvc2VQ
dXNoTCggZnMgKTsNCisgICAgICAgIEhCdWZDKiBmaWxlUGF0aCA9IEhCdWZDOjpOZXdMQyggaUJh
c2VQYXRoLT5MZW5ndGgoKSANCisgICAgICAgICAgICArIEtQcmVmc0ZpbGUoKS5MZW5ndGgoKSAp
Ow0KIA0KLSAgICAgICAgSEJ1ZkMqIGZpbGVQYXRoID0gZmlsZVBhdGggPSBIQnVmQzo6TmV3TEMo
aVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKS5MZW5ndGgoKSAgKyBLUHJlZnNGaWxl
KCkuTGVuZ3RoKCkpOw0KKyAgICAgICAgVFB0ciBmTmFtZSggZmlsZVBhdGgtPkRlcygpICk7DQor
ICAgICAgICBmTmFtZS5BcHBlbmQoICppQmFzZVBhdGggKTsNCisgICAgICAgIGZOYW1lLkFwcGVu
ZCggS1ByZWZzRmlsZSApOw0KIA0KLSAgICAgICAgVFB0ciBmTmFtZShmaWxlUGF0aC0+RGVzKCkp
Ow0KLSAgICAgICAgZk5hbWUuQXBwZW5kKGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRo
KCkpOw0KLSAgICAgICAgZk5hbWUuQXBwZW5kKEtQcmVmc0ZpbGUpOw0KLQ0KICAgICAgICAgUkZp
bGVXcml0ZVN0cmVhbSB3cml0ZVN0cmVhbTsNCiAgICAgICAgIFRJbnQgZmlsZWVycm9yID0gd3Jp
dGVTdHJlYW0uUmVwbGFjZSggZnMsICpmaWxlUGF0aCwgRUZpbGVXcml0ZSApOw0KIA0KLSAgICAg
ICAgaWYgKGZpbGVlcnJvciAhPSBLRXJyTm9uZSkNCisgICAgICAgIGlmICggZmlsZWVycm9yICE9
IEtFcnJOb25lICkNCiAgICAgICAgICAgICB7DQotICAgICAgICAgICAgZnMuQ3JlYXRlUHJpdmF0
ZVBhdGgoRURyaXZlQyk7DQotICAgICAgICAgICAgZmlsZWVycm9yID0gd3JpdGVTdHJlYW0uQ3Jl
YXRlKCBmcywgKmZpbGVQYXRoLCBFRmlsZVdyaXRlIHwgRUZpbGVTaGFyZUV4Y2x1c2l2ZSApOw0K
KyAgICAgICAgICAgIGZzLkNyZWF0ZVByaXZhdGVQYXRoKCBFRHJpdmVDICk7DQorICAgICAgICAg
ICAgZmlsZWVycm9yID0gd3JpdGVTdHJlYW0uQ3JlYXRlKCANCisgICAgICAgICAgICAgICAgZnMs
ICpmaWxlUGF0aCwgRUZpbGVXcml0ZXxFRmlsZVNoYXJlRXhjbHVzaXZlICk7DQogICAgICAgICAg
ICAgfQ0KIA0KLSAgICAgICAgaWYgKGZpbGVlcnJvciA9PSBLRXJyTm9uZSkNCisgICAgICAgIGlm
ICggZmlsZWVycm9yID09IEtFcnJOb25lICkNCiAgICAgICAgICAgICB7DQotICAgICAgICAgICAg
Q2xlYW51cENsb3NlUHVzaEwod3JpdGVTdHJlYW0pOw0KKyAgICAgICAgICAgIENsZWFudXBDbG9z
ZVB1c2hMKCB3cml0ZVN0cmVhbSApOw0KKyAgICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlSW50
MzJMKCBpTWFwLkNvdW50KCkgKTsNCiANCi0gICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUlu
dDMyTChpTWFwLkNvdW50KCkpOw0KLSAgICAgICAgICAgIFRQdHJIYXNoTWFwSXRlcjxURGVzQyxU
RGVzQz4gaXQoaU1hcCk7DQorICAgICAgICAgICAgVFB0ckhhc2hNYXBJdGVyPFREZXNDLFREZXND
PiBpdCggaU1hcCApOw0KICAgICAgICAgICAgIGNvbnN0IFREZXNDKiBrZXk7DQogICAgICAgICAg
ICAgY29uc3QgVERlc0MqIHZhbHVlOw0KLSAgICAgICAgICAgIHdoaWxlICgoa2V5ID0gaXQuTmV4
dEtleSgpKSAhPSAwKQ0KKw0KKyAgICAgICAgICAgIHdoaWxlICggKCBrZXkgPSBpdC5OZXh0S2V5
KCkgKSAhPSAwICkNCiAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICB2YWx1ZSA9
IGl0LkN1cnJlbnRWYWx1ZSgpOw0KLSAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUlu
dDMyTChrZXktPkxlbmd0aCgpKTsNCi0gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVM
KCprZXkpOw0KLSAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUludDMyTCh2YWx1ZS0+
TGVuZ3RoKCkpOw0KLSAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUwoKnZhbHVlKTsN
CisgICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVJbnQzMkwoIGtleS0+TGVuZ3RoKCkg
KTsNCisgICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVMKCAqa2V5ICk7DQorICAgICAg
ICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlSW50MzJMKCB2YWx1ZS0+TGVuZ3RoKCkgKTsNCisg
ICAgICAgICAgICAgICAgd3JpdGVTdHJlYW0uV3JpdGVMKCAqdmFsdWUgKTsNCisgICAgICAgICAg
ICAgICAgVEludCogc2l6ZSA9IGlTaXplTWFwLkZpbmQoICprZXkgKTsNCisgICAgICAgICAgICAg
ICAgaWYgKCBzaXplICkNCisgICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlSW50
MzJMKCAqc2l6ZSApOw0KICAgICAgICAgICAgICAgICB9DQogDQogICAgICAgICAgICAgd3JpdGVT
dHJlYW0uQ29tbWl0TCgpOw0KICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJv
eSgpOyAvL3dyaXRlU3RyZWFtDQogICAgICAgICAgICAgfQ0KIA0KLSAgICAgICAgQ2xlYW51cFN0
YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vZmlsZVBhdGgNCi0gICAgICAgIENsZWFudXBTdGFjazo6
UG9wQW5kRGVzdHJveSgpOyAvL2ZzDQorICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ry
b3koIDIgKTsgLy9mcyxmaWxlUGF0aA0KICAgICAgICAgfQ0KICAgICB9DQogDQpAQCAtMjQ1LDQ5
ICszMzcsNTEgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogdm9pZCBDV2lkZ2V0UHJlZmVy
ZW5jZXM6OkxvYWRMKCkNCiAgICAgew0KKyAgICBSRnMgZnM7DQorICAgIGlmICggIWlCYXNlUGF0
aCAmJiAoaVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKS5MZW5ndGgoKSA+IDApICkN
CisgICAgICAgIGlCYXNlUGF0aCA9IGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCku
QWxsb2NMKCk7DQogDQotICAgIFJGcyBmczsNCi0gICAgaWYgKGZzLkNvbm5lY3QoKSA9PSBLRXJy
Tm9uZSkNCisgICAgaWYgKCBmcy5Db25uZWN0KCkgPT0gS0Vyck5vbmUgKQ0KICAgICAgICAgew0K
ICAgICAgICAgQ2xlYW51cENsb3NlUHVzaEwoIGZzICk7DQorICAgICAgICBIQnVmQyogZmlsZVBh
dGggPSBIQnVmQzo6TmV3TEMoIA0KKyAgICAgICAgICAgIGlCYXNlUGF0aC0+TGVuZ3RoKCkgKyBL
UHJlZnNGaWxlKCkuTGVuZ3RoKCkgKTsNCiANCi0gICAgICAgIEhCdWZDKiBmaWxlUGF0aCA9IEhC
dWZDOjpOZXdMQyhpV2lkZ2V0RXh0ZW5zaW9uLT5XaWRnZXRCYXNlUGF0aCgpLkxlbmd0aCgpICAr
IEtQcmVmc0ZpbGUoKS5MZW5ndGgoKSk7DQorICAgICAgICBUUHRyIGZOYW1lKCBmaWxlUGF0aC0+
RGVzKCkgKTsNCisgICAgICAgIGZOYW1lLkFwcGVuZCggKmlCYXNlUGF0aCApOw0KKyAgICAgICAg
Zk5hbWUuQXBwZW5kKCBLUHJlZnNGaWxlICk7DQogDQotICAgICAgICBUUHRyIGZOYW1lKGZpbGVQ
YXRoLT5EZXMoKSk7DQotICAgICAgICBmTmFtZS5BcHBlbmQoaVdpZGdldEV4dGVuc2lvbi0+V2lk
Z2V0QmFzZVBhdGgoKSk7DQotICAgICAgICBmTmFtZS5BcHBlbmQoS1ByZWZzRmlsZSk7DQorICAg
ICAgICBSRmlsZVJlYWRTdHJlYW0gcmVhZFN0cmVhbTsNCiANCi0gICAgICAgIFJGaWxlUmVhZFN0
cmVhbSByZWFkU3RyZWFtOw0KLSAgICAgICAgaWYgKHJlYWRTdHJlYW0uT3BlbiggZnMsICpmaWxl
UGF0aCwgRUZpbGVSZWFkICkgPT0gS0Vyck5vbmUpDQorICAgICAgICBpZiAoIHJlYWRTdHJlYW0u
T3BlbiggZnMsICpmaWxlUGF0aCwgRUZpbGVSZWFkICkgPT0gS0Vyck5vbmUgKQ0KICAgICAgICAg
ICAgIHsNCi0gICAgICAgICAgICBDbGVhbnVwQ2xvc2VQdXNoTChyZWFkU3RyZWFtKTsNCisgICAg
ICAgICAgICBDbGVhbnVwQ2xvc2VQdXNoTCggcmVhZFN0cmVhbSApOw0KKyAgICAgICAgICAgIFRJ
bnQgY291bnQoIHJlYWRTdHJlYW0uUmVhZEludDMyTCgpICk7DQogDQotICAgICAgICAgICAgVElu
dCBjb3VudCggcmVhZFN0cmVhbS5SZWFkSW50MzJMKCkgKTsNCiAgICAgICAgICAgICBmb3IoIFRJ
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCiAgICAgICAgICAgICAgICAgew0KKyAgICAgICAg
ICAgICAgICBUSW50IGxlbiA9IHJlYWRTdHJlYW0uUmVhZEludDMyTCgpOw0KIA0KLSAgICAgICAg
ICAgICAgICBUSW50IGxlbiA9IHJlYWRTdHJlYW0uUmVhZEludDMyTCgpOw0KLSAgICAgICAgICAg
ICAgICBpZiAobGVuPjApDQorICAgICAgICAgICAgICAgIGlmICggbGVuID4gMCApDQogICAgICAg
ICAgICAgICAgICAgICB7DQotDQotICAgICAgICAgICAgICAgICAgICBIQnVmQyoga2V5ID0gSEJ1
ZkM6Ok5ld0xDKGxlbik7DQorICAgICAgICAgICAgICAgICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6
Ok5ld0xDKCBsZW4gKTsNCiAgICAgICAgICAgICAgICAgICAgIFRQdHIgcHRya2V5ID0ga2V5LT5E
ZXMoKTsNCi0gICAgICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0uUmVhZEwocHRya2V5LGxlbik7
DQorICAgICAgICAgICAgICAgICAgICByZWFkU3RyZWFtLlJlYWRMKCBwdHJrZXksIGxlbiApOw0K
ICAgICAgICAgICAgICAgICAgICAgbGVuID0gcmVhZFN0cmVhbS5SZWFkSW50MzJMKCk7DQogDQot
ICAgICAgICAgICAgICAgICAgICBpZiAobGVuPD1LTWF4S2V5VmFsdWVTaXplKQ0KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCBsZW4gPD0gS01heEtleVZhbHVlU2l6ZSApDQogICAgICAgICAgICAg
ICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgICAgIEhCdWZDKiB2YWx1ZSA9IEhC
dWZDOjpOZXdMQyhsZW4pOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIEhCdWZDKiB2YWx1ZSA9
IEhCdWZDOjpOZXdMQyggbGVuICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgVFB0ciBwdHJ2
YWx1ZSA9IHZhbHVlLT5EZXMoKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkU3RyZWFt
LlJlYWRMKHB0cnZhbHVlLGxlbik7DQotICAgICAgICAgICAgICAgICAgICAgICAgaU1hcC5JbnNl
cnRMKGtleSx2YWx1ZSk7DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNr
OjpQb3AodmFsdWUpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9w
KGtleSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFN0cmVhbS5SZWFkTCggcHRydmFs
dWUsIGxlbiApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlNYXAuSW5zZXJ0TCgga2V5LCB2
YWx1ZSApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRJbnQgKnNpemUgPSBuZXcgVEludCAo
IHJlYWRTdHJlYW0uUmVhZEludDMyTCgpICk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaVNp
emVNYXAuSW5zZXJ0TCgga2V5LCBzaXplICk7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ2xl
YW51cFN0YWNrOjpQb3AoIDIgKTsgLy92YWx1ZSxrZXkNCiAgICAgICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAg
ew0KLSAgICAgICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveShr
ZXkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJv
eSgga2V5ICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgICBlbHNlDQpAQCAtMjk5LDkgKzM5Myw3IEBADQogICAgICAg
ICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7IC8vcmVhZFN0cmVhbQ0KICAgICAg
ICAgICAgIH0NCiANCi0gICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvL2Zp
bGVQYXRoDQotICAgICAgICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgLy9mcw0KKyAg
ICAgICAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCAyICk7IC8vZnMsZmlsZVBhdGgNCiAg
ICAgICAgIH0NCi0NCiAgICAgfQ0KIA0KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDk1IEBADQorcmF0aG5hc2EsIHJldmll
d2VkIGJ5IHpidWp0YXMNCisgREVTQzogd2lkZ2V0IG1lbnUgYXBpIGltcGxlbWVudGF0aW9uDQor
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDk0DQorDQorICAgICAg
ICAqIEJyb3dzZXJDb250cm9sL2luYy9CckN0bEludGVyZmFjZS5oOg0KKyAgICAgICAgKiBCcm93
c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwOg0KKyAgICAgICAgKENCckN0bDo6SGFuZGxlQ29tbWFu
ZEwpOg0KKyAgICAgICAgKENCckN0bDo6QWRkT3B0aW9uTWVudUl0ZW1zTCk6DQorICAgICAgICAo
Q0JyQ3RsOjpTZXRGb2N1cyk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L2luYy9XaWRnZXRFeHRl
bnNpb24uaDoNCisgICAgICAgIChDTWVudUl0ZW06OlRleHQpOg0KKyAgICAgICAgKENNZW51SXRl
bTo6Q21kSWQpOg0KKyAgICAgICAgKENNZW51SXRlbTo6Rmlyc3RDaGlsZCk6DQorICAgICAgICAo
Q01lbnVJdGVtOjpOZXh0U2libGluZyk6DQorICAgICAgICAoQ01lbnVJdGVtOjpEaW1tZWQpOg0K
KyAgICAgICAgKENNZW51SXRlbTo6Q2FsbGJhY2spOg0KKyAgICAgICAgKENNZW51SXRlbTo6T2Jq
KToNCisgICAgICAgIChDTWVudUl0ZW06OlNldFRleHQpOg0KKyAgICAgICAgKENNZW51SXRlbTo6
U2V0Q21kSWQpOg0KKyAgICAgICAgKENNZW51SXRlbTo6U2V0Rmlyc3RDaGlsZCk6DQorICAgICAg
ICAoQ01lbnVJdGVtOjpTZXROZXh0U2libGluZyk6DQorICAgICAgICAoQ01lbnVJdGVtOjpTZXRE
aW1tZWQpOg0KKyAgICAgICAgKENNZW51SXRlbTo6U2V0Q2FsbGJhY2spOg0KKyAgICAgICAgKENN
ZW51SXRlbTo6U2V0T2JqKToNCisgICAgICAgICogQnJvd3NlclZpZXcvaW5jL1dpZGdldFByZWZl
cmVuY2VzLmg6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L2luYy93ZWJraXRicmlkZ2UuaDoNCisg
ICAgICAgICogQnJvd3NlclZpZXcvc3JjL1dpZGdldEV4dGVuc2lvbi5jcHA6DQorICAgICAgICAo
Q1dpZGdldEV4dGVuc2lvbjo6TmV3TCk6DQorICAgICAgICAoaVdpZGdldENhbGxiYWNrKToNCisg
ICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjp+Q1dpZGdldEV4dGVuc2lvbik6DQorICAgICAgICAo
Q1dpZGdldEV4dGVuc2lvbjo6RGVsZXRlVHJlZSk6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lv
bjo6Q29uc3RydWN0TCk6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6Q3JlYXRlQXBwSGFz
aFRhYmxlTCk6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6TGF1bmNoQXBwbGljYXRpb25M
KToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpPcGVuQXBwbGljYXRpb24pOg0KKyAgICAg
ICAgKENXaWRnZXRFeHRlbnNpb246Ok9wZW5VcmwpOg0KKyAgICAgICAgKENXaWRnZXRFeHRlbnNp
b246OlByZWZlcmVuY2VGb3JLZXkpOg0KKyAgICAgICAgKENXaWRnZXRFeHRlbnNpb246OlByZXBh
cmVGb3JUcmFuc2l0aW9uKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRQcmVmZXJl
bmNlRm9yS2V5KToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRTY3JvbGxCYXIpOg0K
KyAgICAgICAgKENXaWRnZXRFeHRlbnNpb246OlNldE5hdmlnYXRpb25FbmFibGVkKToNCisgICAg
ICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25NZW51SXRlbXNMKToNCisgICAgICAgIChD
V2lkZ2V0RXh0ZW5zaW9uOjpBZGRNZW51SXRlbSk6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lv
bjo6TWVudUl0ZW1TZWxlY3RlZCk6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6T25IaWRl
U2VsZWN0ZWQpOg0KKyAgICAgICAgKENXaWRnZXRFeHRlbnNpb246Ok9uU2hvd1NlbGVjdGVkKToN
CisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpjcmVhdGVXaWRnZXRPYmplY3QpOg0KKyAgICAg
ICAgKENXaWRnZXRFeHRlbnNpb246OmNyZWF0ZVdpZGdldE1lbnVPYmplY3QpOg0KKyAgICAgICAg
KENXaWRnZXRFeHRlbnNpb246OmNyZWF0ZVdpZGdldE1lbnVJdGVtT2JqZWN0KToNCisgICAgICAg
IChDV2lkZ2V0RXh0ZW5zaW9uOjpMb2FkV2lkZ2V0RW5naW5lRGxsTCk6DQorICAgICAgICAoQ1dp
ZGdldEV4dGVuc2lvbjo6U2V0UGFyYW1MKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpB
ZGRPcHRpb25zTWVudUl0ZW0pOg0KKyAgICAgICAgKENXaWRnZXRFeHRlbnNpb246OlNldFJpZ2h0
U29mdEtleUxhYmVsKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpJbnNlcnQpOg0KKyAg
ICAgICAgKENXaWRnZXRFeHRlbnNpb246Okluc2VydFNpYmxpbmcpOg0KKyAgICAgICAgKENXaWRn
ZXRFeHRlbnNpb246OkRlbGV0ZU1lbnVJdGVtKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9u
OjpDbGVhck1lbnVJdGVtcyk6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6UmVwbGFjZU1l
bnVJdGVtKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpHZXRNZW51SXRlbSk6DQorICAg
ICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6R2V0RnJvbU1lbnVJdGVtQ29sbGVjdGlvbik6DQorICAg
ICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6U2V0RGltbWVkKToNCisgICAgICAgIChDV2lkZ2V0RXh0
ZW5zaW9uOjpTZXRNZW51SXRlbU9ic2VydmVyKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9u
OjpHZXRNZW51SXRlbU9ic2VydmVyKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpTZXRN
ZW51T2JzZXJ2ZXIpOg0KKyAgICAgICAgKENXaWRnZXRFeHRlbnNpb246OkdldE1lbnVPYnNlcnZl
cik6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6U2V0UmlnaHRLZXlPYnNlcnZlcik6DQor
ICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6R2V0UmlnaHRLZXlPYnNlcnZlcik6DQorICAgICAg
ICAoQ1dpZGdldEV4dGVuc2lvbjo6UmlnaHRLZXlDYWxsYmFjayk6DQorICAgICAgICAoQ1dpZGdl
dEV4dGVuc2lvbjo6RmluZE5vZGVCeUlkKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpG
aW5kTm9kZUJ5VGV4dCk6DQorICAgICAgICAoQ01lbnVJdGVtOjpOZXdMKToNCisgICAgICAgIChp
T2JqKToNCisgICAgICAgIChDTWVudUl0ZW06OkNvbnN0cnVjdEwpOg0KKyAgICAgICAgKENNZW51
SXRlbTo6fkNNZW51SXRlbSk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9XaWRnZXRQcmVm
ZXJlbmNlcy5jcHA6DQorICAgICAgICAoQ1dpZGdldFByZWZlcmVuY2VzOjpOZXdMKToNCisgICAg
ICAgIChDV2lkZ2V0UHJlZmVyZW5jZXM6Ok5ld0xDKToNCisgICAgICAgIChDV2lkZ2V0UHJlZmVy
ZW5jZXM6OkNXaWRnZXRQcmVmZXJlbmNlcyk6DQorICAgICAgICAoQ1dpZGdldFByZWZlcmVuY2Vz
Ojp+Q1dpZGdldFByZWZlcmVuY2VzKToNCisgICAgICAgIChDV2lkZ2V0UHJlZmVyZW5jZXM6OlBy
ZWZlcmVuY2VMKToNCisgICAgICAgIChDV2lkZ2V0UHJlZmVyZW5jZXM6OlNldFByZWZlcmVuY2VM
KToNCisgICAgICAgIChDV2lkZ2V0UHJlZmVyZW5jZXM6OlNhdmVMKToNCisgICAgICAgIChDV2lk
Z2V0UHJlZmVyZW5jZXM6OkxvYWRMKToNCisgICAgICAgICogQnJvd3NlclZpZXcvc3JjL3dlYmtp
dGJyaWRnZS5jcHA6DQorICAgICAgICAoQ1dlYktpdEJyaWRnZTo6Y3JlYXRlV2lkZ2V0T2JqZWN0
KToNCisgICAgICAgIChDV2ViS2l0QnJpZGdlOjpjcmVhdGVXaWRnZXRNZW51T2JqZWN0KToNCisg
ICAgICAgIChDV2ViS2l0QnJpZGdlOjpjcmVhdGVXaWRnZXRNZW51SXRlbU9iamVjdCk6DQorICAg
ICAgICAqIENoYW5nZUxvZzogICAgICANCisgICAgICAgICogZ3JvdXAvQldJTlNDVy9XRUJLSVRV
LkRFRjoNCisgICAgICAgICogZ3JvdXAvRUFCSS9icm93c2VyZW5naW5lVS5kZWY6DQorDQorDQog
cmFhbGV4YW4sIHJldmlld2VkIGJ5IFlvbmdqdW4NCiAgREVTQzogcmVtb3ZlZCBjb25zdCBmcm9t
IENXbWxEaXNwYXRjaGVyOjpIZWFkZXJzTCANCiAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTMyMDYNCkluZGV4OiBXZWJLaXQvZ3JvdXAvQldJTlNDVy9XRUJLSVRVLkRF
Rg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9ncm91cC9CV0lOU0NXL1dFQktJVFUuREVGCShyZXZp
c2lvbiAyMDkwMSkNCisrKyBXZWJLaXQvZ3JvdXAvQldJTlNDVy9XRUJLSVRVLkRFRgkod29ya2lu
ZyBjb3B5KQ0KQEAgLTEsMzQgKzEsNDcgQEANCiBFWFBPUlRTDQogCT8/MUNCckN0bEBAVUFFQFha
IEAgMSBOT05BTUUgOyBDQnJDdGw6On5DQnJDdGwodm9pZCkNCi0JP0FkZExvYWRFdmVudE9ic2Vy
dmVyTEBDQnJDdGxAQFVBRVhQQVZNQnJDdGxMb2FkRXZlbnRPYnNlcnZlckBAQFogQCAyIE5PTkFN
RSA7IHZvaWQgQ0JyQ3RsOjpBZGRMb2FkRXZlbnRPYnNlcnZlckwoY2xhc3MgTUJyQ3RsTG9hZEV2
ZW50T2JzZXJ2ZXIgKikNCi0JP0FkZE9wdGlvbk1lbnVJdGVtc0xAQ0JyQ3RsQEBVQUVYQUFWQ0Vp
a01lbnVQYW5lQEBISEBaIEAgMyBOT05BTUUgOyB2b2lkIENCckN0bDo6QWRkT3B0aW9uTWVudUl0
ZW1zTChjbGFzcyBDRWlrTWVudVBhbmUgJiwgaW50LCBpbnQpDQotCT9BZGRTdGF0ZUNoYW5nZU9i
c2VydmVyTEBDQnJDdGxAQFVBRVhQQVZNQnJDdGxTdGF0ZUNoYW5nZU9ic2VydmVyQEBAWiBAIDQg
Tk9OQU1FIDsgdm9pZCBDQnJDdGw6OkFkZFN0YXRlQ2hhbmdlT2JzZXJ2ZXJMKGNsYXNzIE1CckN0
bFN0YXRlQ2hhbmdlT2JzZXJ2ZXIgKikNCi0JP0Jyb3dzZXJTZXR0aW5nTEBDQnJDdGxAQFVBRUlJ
QFogQCA1IE5PTkFNRSA7IHVuc2lnbmVkIGludCBDQnJDdGw6OkJyb3dzZXJTZXR0aW5nTCh1bnNp
Z25lZCBpbnQpDQotCT9DZXJ0SW5mb0BDQnJDdGxAQFVBRVBCVlRDZXJ0SW5mb0BAWFogQCA2IE5P
TkFNRSA7IGNsYXNzIFRDZXJ0SW5mbyBjb25zdCAqIENCckN0bDo6Q2VydEluZm8odm9pZCkNCi0J
P0NsZWFyQ2FjaGVAQ0JyQ3RsQEBVQUVJWFogQCA3IE5PTkFNRSA7IHVuc2lnbmVkIGludCBDQnJD
dGw6OkNsZWFyQ2FjaGUodm9pZCkNCi0JP0NsZWFySXRlbUluQ2FjaGVAQ0JyQ3RsQEBVQUVIQUFW
VERlc0MxNkBAQFogQCA4IE5PTkFNRSA7IGludCBDQnJDdGw6OkNsZWFySXRlbUluQ2FjaGUoY2xh
c3MgVERlc0MxNiAmKQ0KLQk/Q29udGVudFNpemVAQ0JyQ3RsQEBVQUU/QVZUU2l6ZUBAWFogQCA5
IE5PTkFNRSA7IGNsYXNzIFRTaXplIENCckN0bDo6Q29udGVudFNpemUodm9pZCkNCi0JP0NyZWF0
ZUJyb3dzZXJDb250cm9sTEBAWUFQQVZDQnJDdGxJbnRlcmZhY2VAQFBBVkNDb2VDb250cm9sQEBW
VFJlY3RAQElJUEFWTUJyQ3RsU29mdGtleXNPYnNlcnZlckBAUEFWTUJyQ3RsTGlua1Jlc29sdmVy
QEBQQVZNQnJDdGxTcGVjaWFsTG9hZE9ic2VydmVyQEBQQVZNQnJDdGxMYXlvdXRPYnNlcnZlckBA
UEFWTUJyQ3RsRGlhbG9nc1Byb3ZpZGVyQEBAWiBAIDEwIE5PTkFNRSA7IGNsYXNzIENCckN0bElu
dGVyZmFjZSAqIENyZWF0ZUJyb3dzZXJDb250cm9sTChjbGFzcyBDQ29lQ29udHJvbCAqLCBjbGFz
cyBUUmVjdCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIGNsYXNzIE1CckN0bFNvZnRrZXlz
T2JzZXJ2ZXIgKiwgY2xhc3MgTUJyQ3RsTGlua1Jlc29sdmVyICosIGNsYXNzIE1CckN0bFNwZWNp
YWxMb2FkT2JzZXJ2ZXIgKiwgY2xhc3MgTUJyQ3RsTGF5b3V0T2JzZXJ2ZXIgKiwgY2xhc3MgTUJy
Q3RsRGlhbG9nc1Byb3ZpZGVyICopDQotCT9Gb2N1c2VkRWxlbWVudFR5cGVAQ0JyQ3RsQEBVQUU/
QVc0VEJyQ3RsRWxlbWVudFR5cGVAVEJyQ3RsRGVmc0BAWFogQCAxMSBOT05BTUUgOyBlbnVtIFRC
ckN0bERlZnM6OlRCckN0bEVsZW1lbnRUeXBlIENCckN0bDo6Rm9jdXNlZEVsZW1lbnRUeXBlKHZv
aWQpDQotCT9IYW5kbGVDb21tYW5kTEBDQnJDdGxAQFVBRVhIQFogQCAxMiBOT05BTUUgOyB2b2lk
IENCckN0bDo6SGFuZGxlQ29tbWFuZEwoaW50KQ0KLQk/SW1hZ2VDb3VudExAQ0JyQ3RsQEBVQUVI
WFogQCAxMyBOT05BTUUgOyBpbnQgQ0JyQ3RsOjpJbWFnZUNvdW50TCh2b2lkKQ0KLQk/SW5pdExv
YWREYXRhTEBDQnJDdGxAQFVBRVhBQlZURGVzQzE2QEBBQlZURGF0YVR5cGVAQFZUVWlkQEBJUEFW
TUJyQ3RsRGF0YUxvYWRTdXBwbGllckBAUEFQQVZNQnJDdGxEYXRhTG9hZENvbnN1bWVyQEBAWiBA
IDE0IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpJbml0TG9hZERhdGFMKGNsYXNzIFREZXNDMTYgY29u
c3QgJiwgY2xhc3MgVERhdGFUeXBlIGNvbnN0ICYsIGNsYXNzIFRVaWQsIHVuc2lnbmVkIGludCwg
Y2xhc3MgTUJyQ3RsRGF0YUxvYWRTdXBwbGllciAqLCBjbGFzcyBNQnJDdGxEYXRhTG9hZENvbnN1
bWVyICogKikNCi0JP0lzVXJsSW5DYWNoZUBDQnJDdGxAQFVBRUhBQVZURGVzQzE2QEBAWiBAIDE1
IE5PTkFNRSA7IGludCBDQnJDdGw6OklzVXJsSW5DYWNoZShjbGFzcyBURGVzQzE2ICYpDQotCT9M
b2FkRGF0YUxAQ0JyQ3RsQEBVQUVYQUJWVERlc0MxNkBAQUJWVERlc0M4QEBBQlZURGF0YVR5cGVA
QFZUVWlkQEBAWiBAIDE2IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpMb2FkRGF0YUwoY2xhc3MgVERl
c0MxNiBjb25zdCAmLCBjbGFzcyBURGVzQzggY29uc3QgJiwgY2xhc3MgVERhdGFUeXBlIGNvbnN0
ICYsIGNsYXNzIFRVaWQpDQotCT9Mb2FkRmlsZUxAQ0JyQ3RsQEBVQUVYQUFWUkZpbGVAQEBaIEAg
MTcgTk9OQU1FIDsgdm9pZCBDQnJDdGw6OkxvYWRGaWxlTChjbGFzcyBSRmlsZSAmKQ0KLQk/TG9h
ZEZpbGVMQENCckN0bEBAVUFFWEFCVlREZXNDMTZAQEBaIEAgMTggTk9OQU1FIDsgdm9pZCBDQnJD
dGw6OkxvYWRGaWxlTChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9Mb2FkVXJsTEBDQnJDdGxA
QFVBRVhBQlZURGVzQzE2QEBIVzRUQnJDdGxDYWNoZU1vZGVAVEJyQ3RsRGVmc0BAQFogQCAxOSBO
T05BTUUgOyB2b2lkIENCckN0bDo6TG9hZFVybEwoY2xhc3MgVERlc0MxNiBjb25zdCAmLCBpbnQs
IGVudW0gVEJyQ3RsRGVmczo6VEJyQ3RsQ2FjaGVNb2RlKQ0KLQk/TWluaW11bVNpemVAQ0JyQ3Rs
QEBVQUU/QVZUU2l6ZUBAWFogQCAyMCBOT05BTUUgOyBjbGFzcyBUU2l6ZSBDQnJDdGw6Ok1pbmlt
dW1TaXplKHZvaWQpDQotCT9OYXZpZ2F0aW9uQXZhaWxhYmxlQENCckN0bEBAVUFFSFc0VEJyQ3Rs
TmF2aWdhdGlvbkRpcmVjdGlvbkBUQnJDdGxEZWZzQEBAWiBAIDIxIE5PTkFNRSA7IGludCBDQnJD
dGw6Ok5hdmlnYXRpb25BdmFpbGFibGUoZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxOYXZpZ2F0aW9u
RGlyZWN0aW9uKQ0KLQk/T2ZmZXJLZXlFdmVudExAQ0JyQ3RsQEBVQUU/QVc0VEtleVJlc3BvbnNl
QEBBQlVUS2V5RXZlbnRAQFc0VEV2ZW50Q29kZUBAQFogQCAyMiBOT05BTUUgOyBlbnVtIFRLZXlS
ZXNwb25zZSBDQnJDdGw6Ok9mZmVyS2V5RXZlbnRMKHN0cnVjdCBUS2V5RXZlbnQgY29uc3QgJiwg
ZW51bSBURXZlbnRDb2RlKQ0KLQk/UGFnZUluZm9MQ0BDQnJDdGxAQFVBRVBBVkhCdWZDMTZAQFc0
VEJyQ3RsUGFnZUluZm9AVEJyQ3RsRGVmc0BAQFogQCAyMyBOT05BTUUgOyBjbGFzcyBIQnVmQzE2
ICogQ0JyQ3RsOjpQYWdlSW5mb0xDKGVudW0gVEJyQ3RsRGVmczo6VEJyQ3RsUGFnZUluZm8pDQot
CT9SZW1vdmVMb2FkRXZlbnRPYnNlcnZlckBDQnJDdGxAQFVBRVhQQVZNQnJDdGxMb2FkRXZlbnRP
YnNlcnZlckBAQFogQCAyNCBOT05BTUUgOyB2b2lkIENCckN0bDo6UmVtb3ZlTG9hZEV2ZW50T2Jz
ZXJ2ZXIoY2xhc3MgTUJyQ3RsTG9hZEV2ZW50T2JzZXJ2ZXIgKikNCi0JP1JlbW92ZVN0YXRlQ2hh
bmdlT2JzZXJ2ZXJAQ0JyQ3RsQEBVQUVYUEFWTUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlckBAQFog
QCAyNSBOT05BTUUgOyB2b2lkIENCckN0bDo6UmVtb3ZlU3RhdGVDaGFuZ2VPYnNlcnZlcihjbGFz
cyBNQnJDdGxTdGF0ZUNoYW5nZU9ic2VydmVyICopDQotCT9TYXZlVG9GaWxlTEBDQnJDdGxAQFVB
RUdBQlZURGVzQzE2QEBAWiBAIDI2IE5PTkFNRSA7IHVuc2lnbmVkIHNob3J0IENCckN0bDo6U2F2
ZVRvRmlsZUwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0QnJvd3NlclNldHRpbmdMQENC
ckN0bEBAVUFFWElJQFogQCAyNyBOT05BTUUgOyB2b2lkIENCckN0bDo6U2V0QnJvd3NlclNldHRp
bmdMKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KQ0KLQk/U2V0Rm9jdXNAQ0JyQ3RsQEBVQUVY
SFc0VERyYXdOb3dAQEBaIEAgMjggTk9OQU1FIDsgdm9pZCBDQnJDdGw6OlNldEZvY3VzKGludCwg
ZW51bSBURHJhd05vdykNCi0JP1NldFBhcmFtTEBDQnJDdGxAQFVBRVhXNFRCckN0bFBhcmFtc0BU
QnJDdGxEZWZzQEBBQlZURGVzQzE2QEBAWiBAIDI5IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpTZXRQ
YXJhbUwoZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxQYXJhbXMsIGNsYXNzIFREZXNDMTYgY29uc3Qg
JikNCi0JP1NldFNlbGZEb3dubG9hZENvbnRlbnRUeXBlc0xAQ0JyQ3RsQEBVQUVYQUFWVERlc0Mx
NkBAQFogQCAzMCBOT05BTUUgOyB2b2lkIENCckN0bDo6U2V0U2VsZkRvd25sb2FkQ29udGVudFR5
cGVzTChjbGFzcyBURGVzQzE2ICYpDQotCT9WZXJzaW9uSW5mb0xDQENCckN0bEBAVUFFUEFWSEJ1
ZkMxNkBAVzRUQnJDdGxWZXJzaW9uSW5mb0BUQnJDdGxEZWZzQEBAWiBAIDMxIE5PTkFNRSA7IGNs
YXNzIEhCdWZDMTYgKiBDQnJDdGw6OlZlcnNpb25JbmZvTEMoZW51bSBUQnJDdGxEZWZzOjpUQnJD
dGxWZXJzaW9uSW5mbykNCi0JP1dNTE9wdGlvbk1lbnVJdGVtc0xAQ0JyQ3RsQEBVQUVQQVY/JFJQ
b2ludGVyQXJyYXlAVlRCckN0bFdtbFNlcnZpY2VPcHRpb25AQEBAWFogQCAzMiBOT05BTUUgOyBj
bGFzcyBSUG9pbnRlckFycmF5PGNsYXNzIFRCckN0bFdtbFNlcnZpY2VPcHRpb24+ICogQ0JyQ3Rs
OjpXTUxPcHRpb25NZW51SXRlbXNMKHZvaWQpDQorCT9BZGRDb21tYW5kT2JzZXJ2ZXJMQENCckN0
bEBAVUFFWFBBVk1CckN0bENvbW1hbmRPYnNlcnZlckBAQFogQCAyIE5PTkFNRSA7IHZvaWQgQ0Jy
Q3RsOjpBZGRDb21tYW5kT2JzZXJ2ZXJMKGNsYXNzIE1CckN0bENvbW1hbmRPYnNlcnZlciAqKQ0K
Kwk/QWRkTG9hZEV2ZW50T2JzZXJ2ZXJMQENCckN0bEBAVUFFWFBBVk1CckN0bExvYWRFdmVudE9i
c2VydmVyQEBAWiBAIDMgTk9OQU1FIDsgdm9pZCBDQnJDdGw6OkFkZExvYWRFdmVudE9ic2VydmVy
TChjbGFzcyBNQnJDdGxMb2FkRXZlbnRPYnNlcnZlciAqKQ0KKwk/QWRkT3B0aW9uTWVudUl0ZW1z
TEBDQnJDdGxAQFVBRVhBQVZDRWlrTWVudVBhbmVAQEhIQFogQCA0IE5PTkFNRSA7IHZvaWQgQ0Jy
Q3RsOjpBZGRPcHRpb25NZW51SXRlbXNMKGNsYXNzIENFaWtNZW51UGFuZSAmLCBpbnQsIGludCkN
CisJP0FkZFN0YXRlQ2hhbmdlT2JzZXJ2ZXJMQENCckN0bEBAVUFFWFBBVk1CckN0bFN0YXRlQ2hh
bmdlT2JzZXJ2ZXJAQEBaIEAgNSBOT05BTUUgOyB2b2lkIENCckN0bDo6QWRkU3RhdGVDaGFuZ2VP
YnNlcnZlckwoY2xhc3MgTUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlciAqKQ0KKwk/QnJvd3NlclNl
dHRpbmdMQENCckN0bEBAVUFFSUlAWiBAIDYgTk9OQU1FIDsgdW5zaWduZWQgaW50IENCckN0bDo6
QnJvd3NlclNldHRpbmdMKHVuc2lnbmVkIGludCkNCisJP0NlcnRJbmZvQENCckN0bEBAVUFFUEJW
VENlcnRJbmZvQEBYWiBAIDcgTk9OQU1FIDsgY2xhc3MgVENlcnRJbmZvIGNvbnN0ICogQ0JyQ3Rs
OjpDZXJ0SW5mbyh2b2lkKQ0KKwk/Q2xlYXJDYWNoZUBDQnJDdGxAQFVBRUlYWiBAIDggTk9OQU1F
IDsgdW5zaWduZWQgaW50IENCckN0bDo6Q2xlYXJDYWNoZSh2b2lkKQ0KKwk/Q2xlYXJJdGVtSW5D
YWNoZUBDQnJDdGxAQFVBRUhBQVZURGVzQzE2QEBAWiBAIDkgTk9OQU1FIDsgaW50IENCckN0bDo6
Q2xlYXJJdGVtSW5DYWNoZShjbGFzcyBURGVzQzE2ICYpDQorCT9Db250ZW50U2l6ZUBDQnJDdGxA
QFVBRT9BVlRTaXplQEBYWiBAIDEwIE5PTkFNRSA7IGNsYXNzIFRTaXplIENCckN0bDo6Q29udGVu
dFNpemUodm9pZCkNCisJP0NyZWF0ZUJyb3dzZXJDb250cm9sTEBAWUFQQVZDQnJDdGxJbnRlcmZh
Y2VAQFBBVkNDb2VDb250cm9sQEBWVFJlY3RAQElJUEFWTUJyQ3RsU29mdGtleXNPYnNlcnZlckBA
UEFWTUJyQ3RsTGlua1Jlc29sdmVyQEBQQVZNQnJDdGxTcGVjaWFsTG9hZE9ic2VydmVyQEBQQVZN
QnJDdGxMYXlvdXRPYnNlcnZlckBAUEFWTUJyQ3RsRGlhbG9nc1Byb3ZpZGVyQEBQQVZNQnJDdGxX
aW5kb3dPYnNlcnZlckBAUEFWTUJyQ3RsRG93bmxvYWRPYnNlcnZlckBAQFogQCAxMSBOT05BTUUg
OyBjbGFzcyBDQnJDdGxJbnRlcmZhY2UgKiBDcmVhdGVCcm93c2VyQ29udHJvbEwoY2xhc3MgQ0Nv
ZUNvbnRyb2wgKiwgY2xhc3MgVFJlY3QsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBjbGFz
cyBNQnJDdGxTb2Z0a2V5c09ic2VydmVyICosIGNsYXNzIE1CckN0bExpbmtSZXNvbHZlciAqLCBj
bGFzcyBNQnJDdGxTcGVjaWFsTG9hZE9ic2VydmVyICosIGNsYXNzIE1CckN0bExheW91dE9ic2Vy
dmVyICosIGNsYXNzIE1CckN0bERpYWxvZ3NQcm92aWRlciAqLCBjbGFzcyBNQnJDdGxXaW5kb3dP
YnNlcnZlciAqLCBjbGFzcyBNQnJDdGxEb3dubG9hZE9ic2VydmVyICopDQorCT9DcmVhdGVXaWRn
ZXRFeHRlbnNpb25MQENCckN0bEBAVUFFUEFWTVdpZGdldEV4dGVuc2lvbkBAQUFWTVdpZGdldENh
bGxiYWNrQEBAWiBAIDEyIE5PTkFNRSA7IGNsYXNzIE1XaWRnZXRFeHRlbnNpb24gKiBDQnJDdGw6
OkNyZWF0ZVdpZGdldEV4dGVuc2lvbkwoY2xhc3MgTVdpZGdldENhbGxiYWNrICYpDQorCT9GaW5k
S2V5d29yZEBDQnJDdGxAQFVBRUhBQlZURGVzQzE2QEBAWiBAIDEzIE5PTkFNRSA7IGludCBDQnJD
dGw6OkZpbmRLZXl3b3JkKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisJP0ZpbmRLZXl3b3JkQWdh
aW5AQ0JyQ3RsQEBVQUU/QVc0VEJyQ3RsRmluZFJlc3BvbnNlQFRCckN0bERlZnNAQEhAWiBAIDE0
IE5PTkFNRSA7IGVudW0gVEJyQ3RsRGVmczo6VEJyQ3RsRmluZFJlc3BvbnNlIENCckN0bDo6Rmlu
ZEtleXdvcmRBZ2FpbihpbnQpDQorCT9Gb2N1c2VkRWxlbWVudFR5cGVAQ0JyQ3RsQEBVQUU/QVc0
VEJyQ3RsRWxlbWVudFR5cGVAVEJyQ3RsRGVmc0BAWFogQCAxNSBOT05BTUUgOyBlbnVtIFRCckN0
bERlZnM6OlRCckN0bEVsZW1lbnRUeXBlIENCckN0bDo6Rm9jdXNlZEVsZW1lbnRUeXBlKHZvaWQp
DQorCT9Gb2N1c2VkSW1hZ2VMQ0BDQnJDdGxAQFVBRVBBVlRCckN0bEltYWdlQ2FycmllckBAWFog
QCAxNiBOT05BTUUgOyBjbGFzcyBUQnJDdGxJbWFnZUNhcnJpZXIgKiBDQnJDdGw6OkZvY3VzZWRJ
bWFnZUxDKHZvaWQpDQorCT9HZXRCaXRtYXBEYXRhQENCckN0bEBAVUFFUEFWQ0d1bEljb25AQEFC
VlREZXNDMTZAQFc0VEJyQ3RsQml0bWFwSW5mb0BUQnJDdGxEZWZzQEBAWiBAIDE3IE5PTkFNRSA7
IGNsYXNzIENHdWxJY29uICogQ0JyQ3RsOjpHZXRCaXRtYXBEYXRhKGNsYXNzIFREZXNDMTYgY29u
c3QgJiwgZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxCaXRtYXBJbmZvKQ0KKwk/SGFuZGxlQ29tbWFu
ZExAQ0JyQ3RsQEBVQUVYSEBaIEAgMTggTk9OQU1FIDsgdm9pZCBDQnJDdGw6OkhhbmRsZUNvbW1h
bmRMKGludCkNCisJP0hhbmRsZURvd25sb2FkQ29tbWFuZExAQ0JyQ3RsQEBVQUVYR1c0VEJyQ3Rs
RG93bmxvYWRDbWRAVEJyQ3RsRGVmc0BAQFogQCAxOSBOT05BTUUgOyB2b2lkIENCckN0bDo6SGFu
ZGxlRG93bmxvYWRDb21tYW5kTCh1bnNpZ25lZCBzaG9ydCwgZW51bSBUQnJDdGxEZWZzOjpUQnJD
dGxEb3dubG9hZENtZCkNCisJP0ltYWdlQ291bnRMQENCckN0bEBAVUFFSFhaIEAgMjAgTk9OQU1F
IDsgaW50IENCckN0bDo6SW1hZ2VDb3VudEwodm9pZCkNCisJP0luaXRMb2FkRGF0YUxAQ0JyQ3Rs
QEBVQUVYQUJWVERlc0MxNkBAQUJWVERhdGFUeXBlQEBWVFVpZEBASVBBVk1CckN0bERhdGFMb2Fk
U3VwcGxpZXJAQFBBUEFWTUJyQ3RsRGF0YUxvYWRDb25zdW1lckBAQFogQCAyMSBOT05BTUUgOyB2
b2lkIENCckN0bDo6SW5pdExvYWREYXRhTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFRE
YXRhVHlwZSBjb25zdCAmLCBjbGFzcyBUVWlkLCB1bnNpZ25lZCBpbnQsIGNsYXNzIE1CckN0bERh
dGFMb2FkU3VwcGxpZXIgKiwgY2xhc3MgTUJyQ3RsRGF0YUxvYWRDb25zdW1lciAqICopDQorCT9J
c1VybEluQ2FjaGVAQ0JyQ3RsQEBVQUVIQUFWVERlc0MxNkBAQFogQCAyMiBOT05BTUUgOyBpbnQg
Q0JyQ3RsOjpJc1VybEluQ2FjaGUoY2xhc3MgVERlc0MxNiAmKQ0KKwk/TG9hZERhdGFMQENCckN0
bEBAVUFFWEFCVlREZXNDMTZAQEFCVlREZXNDOEBAQUJWVERhdGFUeXBlQEBWVFVpZEBAQFogQCAy
MyBOT05BTUUgOyB2b2lkIENCckN0bDo6TG9hZERhdGFMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwg
Y2xhc3MgVERlc0M4IGNvbnN0ICYsIGNsYXNzIFREYXRhVHlwZSBjb25zdCAmLCBjbGFzcyBUVWlk
KQ0KKwk/TG9hZEZpbGVMQENCckN0bEBAVUFFWEFBVlJGaWxlQEBAWiBAIDI0IE5PTkFNRSA7IHZv
aWQgQ0JyQ3RsOjpMb2FkRmlsZUwoY2xhc3MgUkZpbGUgJikNCisJP0xvYWRGaWxlTEBDQnJDdGxA
QFVBRVhBQlZURGVzQzE2QEBAWiBAIDI1IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpMb2FkRmlsZUwo
Y2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKwk/TG9hZFNhdmVkUGFnZUxAQ0JyQ3RsQEBVQUVYQUJW
VERlc0MxNkBAQUFWMkBAWiBAIDI2IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpMb2FkU2F2ZWRQYWdl
TChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREZXNDMTYgJikNCisJP0xvYWRVcmxMQENC
ckN0bEBAVUFFWEFCVlREZXNDMTZAQEhXNFRCckN0bENhY2hlTW9kZUBUQnJDdGxEZWZzQEBAWiBA
IDI3IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpMb2FkVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYs
IGludCwgZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxDYWNoZU1vZGUpDQorCT9NaW5pbXVtU2l6ZUBD
QnJDdGxAQFVBRT9BVlRTaXplQEBYWiBAIDI4IE5PTkFNRSA7IGNsYXNzIFRTaXplIENCckN0bDo6
TWluaW11bVNpemUodm9pZCkNCisJP05hdmlnYXRpb25BdmFpbGFibGVAQ0JyQ3RsQEBVQUVIVzRU
QnJDdGxOYXZpZ2F0aW9uRGlyZWN0aW9uQFRCckN0bERlZnNAQEBaIEAgMjkgTk9OQU1FIDsgaW50
IENCckN0bDo6TmF2aWdhdGlvbkF2YWlsYWJsZShlbnVtIFRCckN0bERlZnM6OlRCckN0bE5hdmln
YXRpb25EaXJlY3Rpb24pDQorCT9PZmZlcktleUV2ZW50TEBDQnJDdGxAQFVBRT9BVzRUS2V5UmVz
cG9uc2VAQEFCVVRLZXlFdmVudEBAVzRURXZlbnRDb2RlQEBAWiBAIDMwIE5PTkFNRSA7IGVudW0g
VEtleVJlc3BvbnNlIENCckN0bDo6T2ZmZXJLZXlFdmVudEwoc3RydWN0IFRLZXlFdmVudCBjb25z
dCAmLCBlbnVtIFRFdmVudENvZGUpDQorCT9Pa1RvRXhpdEBDQnJDdGxAQFVBRUhYWiBAIDMxIE5P
TkFNRSA7IGludCBDQnJDdGw6Ok9rVG9FeGl0KHZvaWQpDQorCT9QYWdlSW5mb0xDQENCckN0bEBA
VUFFUEFWSEJ1ZkMxNkBAVzRUQnJDdGxQYWdlSW5mb0BUQnJDdGxEZWZzQEBAWiBAIDMyIE5PTkFN
RSA7IGNsYXNzIEhCdWZDMTYgKiBDQnJDdGw6OlBhZ2VJbmZvTEMoZW51bSBUQnJDdGxEZWZzOjpU
QnJDdGxQYWdlSW5mbykNCisJP1JlbW92ZUNvbW1hbmRPYnNlcnZlckBDQnJDdGxAQFVBRVhQQVZN
QnJDdGxDb21tYW5kT2JzZXJ2ZXJAQEBaIEAgMzMgTk9OQU1FIDsgdm9pZCBDQnJDdGw6OlJlbW92
ZUNvbW1hbmRPYnNlcnZlcihjbGFzcyBNQnJDdGxDb21tYW5kT2JzZXJ2ZXIgKikNCisJP1JlbW92
ZUxvYWRFdmVudE9ic2VydmVyQENCckN0bEBAVUFFWFBBVk1CckN0bExvYWRFdmVudE9ic2VydmVy
QEBAWiBAIDM0IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpSZW1vdmVMb2FkRXZlbnRPYnNlcnZlcihj
bGFzcyBNQnJDdGxMb2FkRXZlbnRPYnNlcnZlciAqKQ0KKwk/UmVtb3ZlU3RhdGVDaGFuZ2VPYnNl
cnZlckBDQnJDdGxAQFVBRVhQQVZNQnJDdGxTdGF0ZUNoYW5nZU9ic2VydmVyQEBAWiBAIDM1IE5P
TkFNRSA7IHZvaWQgQ0JyQ3RsOjpSZW1vdmVTdGF0ZUNoYW5nZU9ic2VydmVyKGNsYXNzIE1CckN0
bFN0YXRlQ2hhbmdlT2JzZXJ2ZXIgKikNCisJP1JpZ2h0S2V5Q2FsbGJhY2tAQ0JyQ3RsQEBRQUVY
WFogQCAzNiBOT05BTUUgOyB2b2lkIENCckN0bDo6UmlnaHRLZXlDYWxsYmFjayh2b2lkKQ0KKwk/
U2F2ZVRvRmlsZUxAQ0JyQ3RsQEBVQUVHQUJWVERlc0MxNkBAQFogQCAzNyBOT05BTUUgOyB1bnNp
Z25lZCBzaG9ydCBDQnJDdGw6OlNhdmVUb0ZpbGVMKGNsYXNzIFREZXNDMTYgY29uc3QgJikNCisJ
P1NldEJyb3dzZXJTZXR0aW5nTEBDQnJDdGxAQFVBRVhJSUBaIEAgMzggTk9OQU1FIDsgdm9pZCBD
QnJDdGw6OlNldEJyb3dzZXJTZXR0aW5nTCh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCkNCisJ
P1NldEZvY3VzQENCckN0bEBAVUFFWEhXNFREcmF3Tm93QEBAWiBAIDM5IE5PTkFNRSA7IHZvaWQg
Q0JyQ3RsOjpTZXRGb2N1cyhpbnQsIGVudW0gVERyYXdOb3cpDQorCT9TZXRQYXJhbUxAQ0JyQ3Rs
QEBVQUVYVzRUQnJDdGxQYXJhbXNAVEJyQ3RsRGVmc0BAQUJWVERlc0MxNkBAQFogQCA0MCBOT05B
TUUgOyB2b2lkIENCckN0bDo6U2V0UGFyYW1MKGVudW0gVEJyQ3RsRGVmczo6VEJyQ3RsUGFyYW1z
LCBjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorCT9TZXRTZWxmRG93bmxvYWRDb250ZW50VHlwZXNM
QENCckN0bEBAVUFFWEFBVlREZXNDMTZAQEBaIEAgNDEgTk9OQU1FIDsgdm9pZCBDQnJDdGw6OlNl
dFNlbGZEb3dubG9hZENvbnRlbnRUeXBlc0woY2xhc3MgVERlc0MxNiAmKQ0KKwk/U3Vic2NyaWJl
VG9NZW51SXRlbXNMQENCckN0bEBAVUFFQUJWPyRSUG9pbnRlckFycmF5QFZUQnJDdGxTdWJzY3Jp
YmVUb0BAQEBYWiBAIDQyIE5PTkFNRSA7IGNsYXNzIFJQb2ludGVyQXJyYXk8Y2xhc3MgVEJyQ3Rs
U3Vic2NyaWJlVG8+IGNvbnN0ICYgQ0JyQ3RsOjpTdWJzY3JpYmVUb01lbnVJdGVtc0wodm9pZCkN
CisJP1ZlcnNpb25JbmZvTENAQ0JyQ3RsQEBVQUVQQVZIQnVmQzE2QEBXNFRCckN0bFZlcnNpb25J
bmZvQFRCckN0bERlZnNAQEBaIEAgNDMgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENCckN0bDo6
VmVyc2lvbkluZm9MQyhlbnVtIFRCckN0bERlZnM6OlRCckN0bFZlcnNpb25JbmZvKQ0KKwk/V01M
T3B0aW9uTWVudUl0ZW1zTEBDQnJDdGxAQFVBRVBBVj8kUlBvaW50ZXJBcnJheUBWVEJyQ3RsV21s
U2VydmljZU9wdGlvbkBAQEBYWiBAIDQ0IE5PTkFNRSA7IGNsYXNzIFJQb2ludGVyQXJyYXk8Y2xh
c3MgVEJyQ3RsV21sU2VydmljZU9wdGlvbj4gKiBDQnJDdGw6OldNTE9wdGlvbk1lbnVJdGVtc0wo
dm9pZCkNCisJP1pvb21MZXZlbHNAQ0JyQ3RsQEBVQkVQQVY/JFJBcnJheUBJQEBYWiBAIDQ1IE5P
TkFNRSA7IGNsYXNzIFJBcnJheTx1bnNpZ25lZCBpbnQ+ICogQ0JyQ3RsOjpab29tTGV2ZWxzKHZv
aWQpIGNvbnN0DQogDQpJbmRleDogV2ViS2l0L2dyb3VwL0VBQkkvYnJvd3NlcmVuZ2luZVUuZGVm
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L2dyb3VwL0VBQkkvYnJvd3NlcmVuZ2luZVUuZGVmCShy
ZXZpc2lvbiAyMDkwMSkNCisrKyBXZWJLaXQvZ3JvdXAvRUFCSS9icm93c2VyZW5naW5lVS5kZWYJ
KHdvcmtpbmcgY29weSkNCkBAIC0xLDQ5ICsxLDUwIEBADQogRVhQT1JUUw0KLSAgICBfWjIxQ3Jl
YXRlQnJvd3NlckNvbnRyb2xMUDExQ0NvZUNvbnRyb2w1VFJlY3RqalAyMk1CckN0bFNvZnRrZXlz
T2JzZXJ2ZXJQMThNQnJDdGxMaW5rUmVzb2x2ZXJQMjVNQnJDdGxTcGVjaWFsTG9hZE9ic2VydmVy
UDIwTUJyQ3RsTGF5b3V0T2JzZXJ2ZXJQMjFNQnJDdGxEaWFsb2dzUHJvdmlkZXJQMjBNQnJDdGxX
aW5kb3dPYnNlcnZlclAyMk1CckN0bERvd25sb2FkT2JzZXJ2ZXIgQCAxIE5PTkFNRQ0KLSAgICBf
Wk42Q0JyQ3RsMTBDbGVhckNhY2hlRXYgQCAyIE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsMTBQYWdl
SW5mb0xDRU4xMFRCckN0bERlZnMxNFRCckN0bFBhZ2VJbmZvRSBAIDMgTk9OQU1FDQotICAgIF9a
TjZDQnJDdGwxMUNvbnRlbnRTaXplRXYgQCA0IE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsMTFGaW5k
S2V5d29yZEVSSzdURGVzQzE2IEAgNSBOT05BTUUNCi0gICAgX1pONkNCckN0bDExSW1hZ2VDb3Vu
dExFdiBAIDYgTk9OQU1FDQotICAgIF9aTjZDQnJDdGwxMU1pbmltdW1TaXplRXYgQCA3IE5PTkFN
RQ0KLSAgICBfWk42Q0JyQ3RsMTFTYXZlVG9GaWxlTEVSSzdURGVzQzE2IEAgOCBOT05BTUUNCi0g
ICAgX1pONkNCckN0bDEySXNVcmxJbkNhY2hlRVI3VERlc0MxNiBAIDkgTk9OQU1FDQotICAgIF9a
TjZDQnJDdGwxM0luaXRMb2FkRGF0YUxFUks3VERlc0MxNlJLOVREYXRhVHlwZTRUVWlkalAyMk1C
ckN0bERhdGFMb2FkU3VwcGxpZXJQUDIyTUJyQ3RsRGF0YUxvYWRDb25zdW1lciBAIDEwIE5PTkFN
RQ0KLSAgICBfWk42Q0JyQ3RsMTNWZXJzaW9uSW5mb0xDRU4xMFRCckN0bERlZnMxN1RCckN0bFZl
cnNpb25JbmZvRSBAIDExIE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsMTRIYW5kbGVDb21tYW5kTEVp
IEAgMTIgTk9OQU1FDQotICAgIF9aTjZDQnJDdGwxNExvYWRTYXZlZFBhZ2VMRVJLN1REZXNDMTZS
UzBfIEAgMTMgTk9OQU1FDQotICAgIF9aTjZDQnJDdGwxNE9mZmVyS2V5RXZlbnRMRVJLOVRLZXlF
dmVudDEwVEV2ZW50Q29kZSBAIDE0IE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsMTVCcm93c2VyU2V0
dGluZ0xFaiBAIDE1IE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsMTZDbGVhckl0ZW1JbkNhY2hlRVI3
VERlc0MxNiBAIDE2IE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsMTZGaW5kS2V5d29yZEFnYWluRWkg
QCAxNyBOT05BTUUNCi0gICAgX1pONkNCckN0bDE4Rm9jdXNlZEVsZW1lbnRUeXBlRXYgQCAxOCBO
T05BTUUNCi0gICAgX1pONkNCckN0bDE4U2V0QnJvd3NlclNldHRpbmdMRWpqIEAgMTkgTk9OQU1F
DQotICAgIF9aTjZDQnJDdGwxOUFkZE9wdGlvbk1lbnVJdGVtc0xFUjEyQ0Vpa01lbnVQYW5laWkg
QCAyMCBOT05BTUUNCi0gICAgX1pONkNCckN0bDE5TmF2aWdhdGlvbkF2YWlsYWJsZUVOMTBUQnJD
dGxEZWZzMjVUQnJDdGxOYXZpZ2F0aW9uRGlyZWN0aW9uRSBAIDIxIE5PTkFNRQ0KLSAgICBfWk42
Q0JyQ3RsMTlXTUxPcHRpb25NZW51SXRlbXNMRXYgQCAyMiBOT05BTUUNCi0gICAgX1pONkNCckN0
bDIxQWRkTG9hZEV2ZW50T2JzZXJ2ZXJMRVAyM01CckN0bExvYWRFdmVudE9ic2VydmVyIEAgMjMg
Tk9OQU1FDQotICAgIF9aTjZDQnJDdGwyMkhhbmRsZURvd25sb2FkQ29tbWFuZExFdE4xMFRCckN0
bERlZnMxN1RCckN0bERvd25sb2FkQ21kRSBAIDI0IE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsMjNB
ZGRTdGF0ZUNoYW5nZU9ic2VydmVyTEVQMjVNQnJDdGxTdGF0ZUNoYW5nZU9ic2VydmVyIEAgMjUg
Tk9OQU1FDQotICAgIF9aTjZDQnJDdGwyM1JlbW92ZUxvYWRFdmVudE9ic2VydmVyRVAyM01CckN0
bExvYWRFdmVudE9ic2VydmVyIEAgMjYgTk9OQU1FDQotICAgIF9aTjZDQnJDdGwyNVJlbW92ZVN0
YXRlQ2hhbmdlT2JzZXJ2ZXJFUDI1TUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlciBAIDI3IE5PTkFN
RQ0KLSAgICBfWk42Q0JyQ3RsMjhTZXRTZWxmRG93bmxvYWRDb250ZW50VHlwZXNMRVI3VERlc0Mx
NiBAIDI4IE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsOENlcnRJbmZvRXYgQCAyOSBOT05BTUUNCi0g
ICAgX1pONkNCckN0bDhMb2FkVXJsTEVSSzdURGVzQzE2aU4xMFRCckN0bERlZnMxNVRCckN0bENh
Y2hlTW9kZUUgQCAzMCBOT05BTUUNCi0gICAgX1pONkNCckN0bDhPa1RvRXhpdEV2IEAgMzEgTk9O
QU1FDQotICAgIF9aTjZDQnJDdGw4U2V0Rm9jdXNFaThURHJhd05vdyBAIDMyIE5PTkFNRQ0KLSAg
ICBfWk42Q0JyQ3RsOUxvYWREYXRhTEVSSzdURGVzQzE2Uks2VERlc0M4Uks5VERhdGFUeXBlNFRV
aWQgQCAzMyBOT05BTUUNCi0gICAgX1pONkNCckN0bDlMb2FkRmlsZUxFUjVSRmlsZSBAIDM0IE5P
TkFNRQ0KLSAgICBfWk42Q0JyQ3RsOUxvYWRGaWxlTEVSSzdURGVzQzE2IEAgMzUgTk9OQU1FDQot
ICAgIF9aTjZDQnJDdGw5U2V0UGFyYW1MRU4xMFRCckN0bERlZnMxMlRCckN0bFBhcmFtc0VSSzdU
RGVzQzE2IEAgMzYgTk9OQU1FDQotICAgIF9aTjZDQnJDdGxEMEV2IEAgMzcgTk9OQU1FDQotICAg
IF9aTjZDQnJDdGxEMUV2IEAgMzggTk9OQU1FDQotICAgIF9aTjZDQnJDdGxEMkV2IEAgMzkgTk9O
QU1FDQotICAgIF9aTks2Q0JyQ3RsMTBab29tTGV2ZWxzRXYgQCA0MCBOT05BTUUNCi0gICAgX1pU
STZDQnJDdGwgQCA0MSBOT05BTUUgOyAjPFRJPiMNCi0gICAgX1pUVjZDQnJDdGwgQCA0MiBOT05B
TUUgOyAjPFZUPiMNCi0gICAgX1pONkNCckN0bDIxU3Vic2NyaWJlVG9NZW51SXRlbXNMRXYgQCA0
MyBOT05BTUUNCi0gICAgX1pONkNCckN0bDEzR2V0Qml0bWFwRGF0YUVSSzdURGVzQzE2TjEwVEJy
Q3RsRGVmczE2VEJyQ3RsQml0bWFwSW5mb0UgQCA0NCBOT05BTUUNCi0gICAgX1pONkNCckN0bDE5
QWRkQ29tbWFuZE9ic2VydmVyTEVQMjFNQnJDdGxDb21tYW5kT2JzZXJ2ZXIgQCA0NSBOT05BTUUN
Ci0gICAgX1pONkNCckN0bDIxUmVtb3ZlQ29tbWFuZE9ic2VydmVyRVAyMU1CckN0bENvbW1hbmRP
YnNlcnZlciBAIDQ2IE5PTkFNRQ0KLSAgICBfWk42Q0JyQ3RsMTRGb2N1c2VkSW1hZ2VMQ0V2IEAg
NDcgTk9OQU1FDQorCV9aMjFDcmVhdGVCcm93c2VyQ29udHJvbExQMTFDQ29lQ29udHJvbDVUUmVj
dGpqUDIyTUJyQ3RsU29mdGtleXNPYnNlcnZlclAxOE1CckN0bExpbmtSZXNvbHZlclAyNU1CckN0
bFNwZWNpYWxMb2FkT2JzZXJ2ZXJQMjBNQnJDdGxMYXlvdXRPYnNlcnZlclAyMU1CckN0bERpYWxv
Z3NQcm92aWRlclAyME1CckN0bFdpbmRvd09ic2VydmVyUDIyTUJyQ3RsRG93bmxvYWRPYnNlcnZl
ciBAIDEgTk9OQU1FDQorCV9aTjZDQnJDdGwxMENsZWFyQ2FjaGVFdiBAIDIgTk9OQU1FDQorCV9a
TjZDQnJDdGwxMFBhZ2VJbmZvTENFTjEwVEJyQ3RsRGVmczE0VEJyQ3RsUGFnZUluZm9FIEAgMyBO
T05BTUUNCisJX1pONkNCckN0bDExQ29udGVudFNpemVFdiBAIDQgTk9OQU1FDQorCV9aTjZDQnJD
dGwxMUZpbmRLZXl3b3JkRVJLN1REZXNDMTYgQCA1IE5PTkFNRQ0KKwlfWk42Q0JyQ3RsMTFJbWFn
ZUNvdW50TEV2IEAgNiBOT05BTUUNCisJX1pONkNCckN0bDExTWluaW11bVNpemVFdiBAIDcgTk9O
QU1FDQorCV9aTjZDQnJDdGwxMVNhdmVUb0ZpbGVMRVJLN1REZXNDMTYgQCA4IE5PTkFNRQ0KKwlf
Wk42Q0JyQ3RsMTJJc1VybEluQ2FjaGVFUjdURGVzQzE2IEAgOSBOT05BTUUNCisJX1pONkNCckN0
bDEzR2V0Qml0bWFwRGF0YUVSSzdURGVzQzE2TjEwVEJyQ3RsRGVmczE2VEJyQ3RsQml0bWFwSW5m
b0UgQCAxMCBOT05BTUUNCisJX1pONkNCckN0bDEzSW5pdExvYWREYXRhTEVSSzdURGVzQzE2Uks5
VERhdGFUeXBlNFRVaWRqUDIyTUJyQ3RsRGF0YUxvYWRTdXBwbGllclBQMjJNQnJDdGxEYXRhTG9h
ZENvbnN1bWVyIEAgMTEgTk9OQU1FDQorCV9aTjZDQnJDdGwxM1ZlcnNpb25JbmZvTENFTjEwVEJy
Q3RsRGVmczE3VEJyQ3RsVmVyc2lvbkluZm9FIEAgMTIgTk9OQU1FDQorCV9aTjZDQnJDdGwxNEZv
Y3VzZWRJbWFnZUxDRXYgQCAxMyBOT05BTUUNCisJX1pONkNCckN0bDE0SGFuZGxlQ29tbWFuZExF
aSBAIDE0IE5PTkFNRQ0KKwlfWk42Q0JyQ3RsMTRMb2FkU2F2ZWRQYWdlTEVSSzdURGVzQzE2UlMw
XyBAIDE1IE5PTkFNRQ0KKwlfWk42Q0JyQ3RsMTRPZmZlcktleUV2ZW50TEVSSzlUS2V5RXZlbnQx
MFRFdmVudENvZGUgQCAxNiBOT05BTUUNCisJX1pONkNCckN0bDE1QnJvd3NlclNldHRpbmdMRWog
QCAxNyBOT05BTUUNCisJX1pONkNCckN0bDE2Q2xlYXJJdGVtSW5DYWNoZUVSN1REZXNDMTYgQCAx
OCBOT05BTUUNCisJX1pONkNCckN0bDE2RmluZEtleXdvcmRBZ2FpbkVpIEAgMTkgTk9OQU1FDQor
CV9aTjZDQnJDdGwxOEZvY3VzZWRFbGVtZW50VHlwZUV2IEAgMjAgTk9OQU1FDQorCV9aTjZDQnJD
dGwxOFNldEJyb3dzZXJTZXR0aW5nTEVqaiBAIDIxIE5PTkFNRQ0KKwlfWk42Q0JyQ3RsMTlBZGRD
b21tYW5kT2JzZXJ2ZXJMRVAyMU1CckN0bENvbW1hbmRPYnNlcnZlciBAIDIyIE5PTkFNRQ0KKwlf
Wk42Q0JyQ3RsMTlBZGRPcHRpb25NZW51SXRlbXNMRVIxMkNFaWtNZW51UGFuZWlpIEAgMjMgTk9O
QU1FDQorCV9aTjZDQnJDdGwxOU5hdmlnYXRpb25BdmFpbGFibGVFTjEwVEJyQ3RsRGVmczI1VEJy
Q3RsTmF2aWdhdGlvbkRpcmVjdGlvbkUgQCAyNCBOT05BTUUNCisJX1pONkNCckN0bDE5V01MT3B0
aW9uTWVudUl0ZW1zTEV2IEAgMjUgTk9OQU1FDQorCV9aTjZDQnJDdGwyMUFkZExvYWRFdmVudE9i
c2VydmVyTEVQMjNNQnJDdGxMb2FkRXZlbnRPYnNlcnZlciBAIDI2IE5PTkFNRQ0KKwlfWk42Q0Jy
Q3RsMjFSZW1vdmVDb21tYW5kT2JzZXJ2ZXJFUDIxTUJyQ3RsQ29tbWFuZE9ic2VydmVyIEAgMjcg
Tk9OQU1FDQorCV9aTjZDQnJDdGwyMVN1YnNjcmliZVRvTWVudUl0ZW1zTEV2IEAgMjggTk9OQU1F
DQorCV9aTjZDQnJDdGwyMkhhbmRsZURvd25sb2FkQ29tbWFuZExFdE4xMFRCckN0bERlZnMxN1RC
ckN0bERvd25sb2FkQ21kRSBAIDI5IE5PTkFNRQ0KKwlfWk42Q0JyQ3RsMjNBZGRTdGF0ZUNoYW5n
ZU9ic2VydmVyTEVQMjVNQnJDdGxTdGF0ZUNoYW5nZU9ic2VydmVyIEAgMzAgTk9OQU1FDQorCV9a
TjZDQnJDdGwyM1JlbW92ZUxvYWRFdmVudE9ic2VydmVyRVAyM01CckN0bExvYWRFdmVudE9ic2Vy
dmVyIEAgMzEgTk9OQU1FDQorCV9aTjZDQnJDdGwyNVJlbW92ZVN0YXRlQ2hhbmdlT2JzZXJ2ZXJF
UDI1TUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlciBAIDMyIE5PTkFNRQ0KKwlfWk42Q0JyQ3RsMjhT
ZXRTZWxmRG93bmxvYWRDb250ZW50VHlwZXNMRVI3VERlc0MxNiBAIDMzIE5PTkFNRQ0KKwlfWk42
Q0JyQ3RsOENlcnRJbmZvRXYgQCAzNCBOT05BTUUNCisJX1pONkNCckN0bDhMb2FkVXJsTEVSSzdU
RGVzQzE2aU4xMFRCckN0bERlZnMxNVRCckN0bENhY2hlTW9kZUUgQCAzNSBOT05BTUUNCisJX1pO
NkNCckN0bDhPa1RvRXhpdEV2IEAgMzYgTk9OQU1FDQorCV9aTjZDQnJDdGw4U2V0Rm9jdXNFaThU
RHJhd05vdyBAIDM3IE5PTkFNRQ0KKwlfWk42Q0JyQ3RsOUxvYWREYXRhTEVSSzdURGVzQzE2Uks2
VERlc0M4Uks5VERhdGFUeXBlNFRVaWQgQCAzOCBOT05BTUUNCisJX1pONkNCckN0bDlMb2FkRmls
ZUxFUjVSRmlsZSBAIDM5IE5PTkFNRQ0KKwlfWk42Q0JyQ3RsOUxvYWRGaWxlTEVSSzdURGVzQzE2
IEAgNDAgTk9OQU1FDQorCV9aTjZDQnJDdGw5U2V0UGFyYW1MRU4xMFRCckN0bERlZnMxMlRCckN0
bFBhcmFtc0VSSzdURGVzQzE2IEAgNDEgTk9OQU1FDQorCV9aTjZDQnJDdGxEMEV2IEAgNDIgTk9O
QU1FDQorCV9aTjZDQnJDdGxEMUV2IEAgNDMgTk9OQU1FDQorCV9aTjZDQnJDdGxEMkV2IEAgNDQg
Tk9OQU1FDQorCV9aTks2Q0JyQ3RsMTBab29tTGV2ZWxzRXYgQCA0NSBOT05BTUUNCisJX1pUSTZD
QnJDdGwgQCA0NiBOT05BTUUgOyAjPFRJPiMNCisJX1pUVjZDQnJDdGwgQCA0NyBOT05BTUUgOyAj
PFZUPiMNCisJX1pONkNCckN0bDIyQ3JlYXRlV2lkZ2V0RXh0ZW5zaW9uTEVSMTVNV2lkZ2V0Q2Fs
bGJhY2sgQCA0OCBOT05BTUUNCiANCg==
</data>
<flag name="review"
          id="5765"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14233</attachid>
            <date>2007-04-27 12:15:39 -0700</date>
            <delta_ts>2007-04-27 12:43:54 -0700</delta_ts>
            <desc>patch for code review</desc>
            <filename>widget_menu.patch</filename>
            <type>text/plain</type>
            <size>30815</size>
            <attacher name="Sornalatha Rathnasamy">sornalatha.rathnasamy</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIxMTQ5KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSw0ICsxLDEzIEBADQogcmF0aG5hc2EsIHJldmlld2VkIGJ5IHpidWp0YXMNCisgREVT
QzogV2lkZ2V0IE1lbnUgQVBJDQorIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNDk0DQorDQorICAgICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENI
QU5HRUQNCisNCisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93LmNwcDoNCisgICAgICAg
IChXaW5kb3c6OmdldCk6ICAgICAgDQorDQorcmF0aG5hc2EsIHJldmlld2VkIGJ5IHpidWp0YXMN
CiAgREVTQzogd2lkZXQgbWVudSBhcGkgaW1wbGVtZW50YXRpb24NCiAgaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0OTQNCiANCkluZGV4OiBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX3dpbmRvdy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pz
X3dpbmRvdy5jcHAJKHJldmlzaW9uIDIxMTIyKQ0KKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNf
d2luZG93LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTgyMiwxOSArODIyLDMxIEBADQogICAgICAg
cmV0dXJuIFZhbHVlKGxvY2F0aW9uYmFyKGV4ZWMpKTsKICNpZmRlZiBSRF9CUk9XU0VSX1dJREdF
VFMKICAgICBjYXNlIF9XaWRnZXQ6Ci0gICAgICAgIHJldHVybiBWYWx1ZShtX3dpZGdldCA/IG1f
d2lkZ2V0IDoKLSAgICAgICAgICAgICAgICAgICAoY29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+
bV93aWRnZXQgPSBLV1EobV9wYXJ0KS0+Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4ZWMpKSk7CisgICAg
ICBpZiAoIG1fd2lkZ2V0ICkKKyAgICAgICAgcmV0dXJuIFZhbHVlKG1fd2lkZ2V0KTsKKyAgICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuICggKChjb25zdF9jYXN0PFdpbmRvdyo+KHRoaXMpLT5tX3dp
ZGdldCA9IEtXUShtX3BhcnQpLT5jcmVhdGVXaWRnZXRPYmplY3QoZXhlYykpKT8KKyAgICAgICAg
ICBWYWx1ZShjb25zdF9jYXN0PFdpbmRvdyo+KHRoaXMpLT5tX3dpZGdldCk6IFVuZGVmaW5lZCgp
KTsKICAgICBjYXNlIE1lbnU6CiAgICAgICBpZiAoICFtX3dpZGdldCApCi0gICAgICAgICAgICAo
Y29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+bV93aWRnZXQgPSBLV1EobV9wYXJ0KS0+Y3JlYXRl
V2lkZ2V0T2JqZWN0KGV4ZWMpKTsgICAgICAgIAotICAgICAgcmV0dXJuIFZhbHVlKG1fd2lkZ2V0
TWVudSA/IG1fd2lkZ2V0TWVudSA6IAotICAgICAgICAgICAgY29uc3RfY2FzdDxXaW5kb3cqPih0
aGlzKS0+bV93aWRnZXRNZW51ID0gS1dRKG1fcGFydCktPmNyZWF0ZVdpZGdldE1lbnVPYmplY3Qo
ZXhlYykpOworICAgICAgICAoY29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+bV93aWRnZXQgPSBL
V1EobV9wYXJ0KS0+Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4ZWMpKTsgICAgICAgIAorICAgICAgaWYg
KCEoY29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+bV93aWRnZXQpKQorICAgICAgICByZXR1cm4g
VW5kZWZpbmVkKCk7CisgICAgICBpZiAoIG1fd2lkZ2V0TWVudSApCisgICAgICAgIHJldHVybiBW
YWx1ZShtX3dpZGdldE1lbnUpOworICAgICAgZWxzZQorICAgICAgICByZXR1cm4gKCAoKGNvbnN0
X2Nhc3Q8V2luZG93Kj4odGhpcyktPm1fd2lkZ2V0TWVudSA9IEtXUShtX3BhcnQpLT5jcmVhdGVX
aWRnZXRNZW51T2JqZWN0KGV4ZWMpKSk/CisgICAgICAgICAgVmFsdWUoY29uc3RfY2FzdDxXaW5k
b3cqPih0aGlzKS0+bV93aWRnZXRNZW51KTogVW5kZWZpbmVkKCkpOwogICAgIGNhc2UgTWVudUl0
ZW06CiAgICAgICBpZiAoICFtX3dpZGdldCApCi0gICAgICAgICAgICAoY29uc3RfY2FzdDxXaW5k
b3cqPih0aGlzKS0+bV93aWRnZXQgPSBLV1EobV9wYXJ0KS0+Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4
ZWMpKTsgIAorICAgICAgICAoY29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+bV93aWRnZXQgPSBL
V1EobV9wYXJ0KS0+Y3JlYXRlV2lkZ2V0T2JqZWN0KGV4ZWMpKTsgICAgICAgIAorICAgICAgaWYg
KCEoY29uc3RfY2FzdDxXaW5kb3cqPih0aGlzKS0+bV93aWRnZXQpKQorICAgICAgICByZXR1cm4g
VW5kZWZpbmVkKCk7CiAgICAgICBpZiAoICFtX3dpZGdldE1lbnUgKQotICAgICAgICAgICAgKGNv
bnN0X2Nhc3Q8V2luZG93Kj4odGhpcyktPm1fd2lkZ2V0TWVudSA9IEtXUShtX3BhcnQpLT5jcmVh
dGVXaWRnZXRNZW51T2JqZWN0KGV4ZWMpKTsgCi0gICAgICByZXR1cm4gVmFsdWUoS1dRKG1fcGFy
dCktPmNyZWF0ZVdpZGdldE1lbnVJdGVtT2JqZWN0KGV4ZWMpKTsKKyAgICAgICAgKGNvbnN0X2Nh
c3Q8V2luZG93Kj4odGhpcyktPm1fd2lkZ2V0TWVudSA9IEtXUShtX3BhcnQpLT5jcmVhdGVXaWRn
ZXRNZW51T2JqZWN0KGV4ZWMpKTsgICAgICAgIAorICAgICAgaWYgKCEoY29uc3RfY2FzdDxXaW5k
b3cqPih0aGlzKS0+bV93aWRnZXRNZW51KSkKKyAgICAgICAgcmV0dXJuIFVuZGVmaW5lZCgpOwor
ICAgICAgcmV0dXJuIEtXUShtX3BhcnQpLT5jcmVhdGVXaWRnZXRNZW51SXRlbU9iamVjdChleGVj
KSA/IFZhbHVlKEtXUShtX3BhcnQpLT5jcmVhdGVXaWRnZXRNZW51SXRlbU9iamVjdChleGVjKSk6
VW5kZWZpbmVkKCk7ICAgCiAjZW5kaWYKICAgICBjYXNlIE1lbnViYXI6CiAgICAgICByZXR1cm4g
VmFsdWUobWVudWJhcihleGVjKSk7CkluZGV4OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0Jy
Q3RsSW50ZXJmYWNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5j
L0JyQ3RsSW50ZXJmYWNlLmgJKHJldmlzaW9uIDIxMTIyKQ0KKysrIFdlYktpdC9Ccm93c2VyQ29u
dHJvbC9pbmMvQnJDdGxJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTkzOCw3ICs5Mzgs
MTMgQEANCiAgICAgICAgICovDQogICAgICAgICB2aXJ0dWFsIHZvaWQgU2V0UGFyYW1MKFRCckN0
bERlZnM6OlRCckN0bFdpZGdldFBhcmFtcyBhUGFyYW0sIFRVaW50IGFWYWx1ZSkgPSAwOw0KIA0K
LSAgICAgICAgdmlydHVhbCBUQm9vbCBSaWdodEtleUNhbGxiYWNrKCkgPSAwOw0KKyAgICAgICAg
LyoqDQorICAgICAgICAqIE1ldGhvZCB0byBpbnZva2UgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHJp
Z2h0IHNvZnQga2V5DQorICAgICAgICAqIEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtIG5v
bmUNCisgICAgICAgICogQHJldHVybiBFVHJ1ZSBpZiB0aGVyZSBpcyBhIHJpZ2h0c29mdGtleSBj
YWxsYmFjaywgZWxzZSBFRmFsc2UNCisgICAgICAgICovDQorICAgICAgICB2aXJ0dWFsIFRCb29s
IEhhbmRsZUNvbW1hbmRMKCBUSW50IGFDb21tYW5kSWQgKSA9IDA7DQogDQogICAgIH07DQogI2Vu
ZGlmICAgICAgLy8gQlJDVExJTlRFUkZBQ0VfSA0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9p
bmMvV2lkZ2V0RXh0ZW5zaW9uLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcv
aW5jL1dpZGdldEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyMTEyMikNCisrKyBXZWJLaXQvQnJvd3Nl
clZpZXcvaW5jL1dpZGdldEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMjA1LDEwICsy
MDUsOSBAQA0KICAgICAgICAgKiBNZXRob2QgRGVsZXRlTWVudUl0ZW0NCiAgICAgICAgICogQHNp
bmNlIDMuMg0KICAgICAgICAgKiBAcGFyYW0gY29tbWFuZCBJRCBvZiB0aGUgbWVudSBpdGVtDQot
ICAgICAgICAqIEBwYXJhbSBjb21tYW5kIElEIG9mIHRoZSBwYXJlbnQgbWVudSBpdGVtDQogICAg
ICAgICAqIEByZXR1cm4gbm9uZQ0KICAgICAgICAgKi8NCi0gICAgICAgIHZvaWQgRGVsZXRlTWVu
dUl0ZW0oIFRJbnQgYUNtZElkLCBUSW50IGFQYXJlbnRDbWRJZCApOw0KKyAgICAgICAgdm9pZCBE
ZWxldGVNZW51SXRlbSggVEludCBhQ21kSWQgKTsNCiAgICAgICAgIA0KICAgICAgICAgLyoqDQog
ICAgICAgICAqIE1ldGhvZCBDbGVhck1lbnVJdGVtcw0KQEAgLTIzMSwxNCArMjMwLDE0IEBADQog
ICAgICAgICAgICAgVEludCBuZXdDbWRJZCwgVEludCBuZXdEaW1tZWQgKTsNCiANCiAgICAgICAg
IC8qKg0KLSAgICAgICAgKiBNZXRob2QgR2V0TWVudUl0ZW0NCisgICAgICAgICogTWV0aG9kIE1l
bnVJdGVtDQogICAgICAgICAqIEBzaW5jZSAzLjINCiAgICAgICAgICogQHBhcmFtIHRleHQvbGFi
ZWwgZm9yIHRoZSBtZW51IGl0ZW0NCiAgICAgICAgICogQHBhcmFtIGNvbW1hbmQgSUQgb2YgdGhl
IG1lbnUgaXRlbQ0KICAgICAgICAgKiBAcGFyYW0gYm9vbGVhbiBmbGFnIHRvIGRpbSBvciB1bmRp
bSB0aGUgbWVudSBpdGVtDQogICAgICAgICAqIEByZXR1cm4gbm9uZQ0KICAgICAgICAgKi8NCi0g
ICAgICAgIHZvaWQgR2V0TWVudUl0ZW0oIFREZXMmIHRleHRWYWwsIFRJbnQmIGNtZElkLCBUQm9v
bCYgZGltU3RhdCApOw0KKyAgICAgICAgdm9pZCBNZW51SXRlbSggVERlcyYgdGV4dFZhbCwgVElu
dCYgY21kSWQsIFRCb29sJiBkaW1TdGF0ICk7DQogDQogICAgICAgICAvKioNCiAgICAgICAgICog
TWV0aG9kIFNldERpbW1lZA0KQEAgLTI2NSw3ICsyNjQsNyBAQA0KICAgICAgICAgKiBAcGFyYW0g
Y29tbWFuZCBJRCBvZiB0aGUgbWVudSBpdGVtDQogICAgICAgICAqIEByZXR1cm4gY2FsbGJhY2sg
ZnVuY3Rpb24NCiAgICAgICAgICovDQotICAgICAgICBXaWRnZXRFdmVudEhhbmRsZXIqIEdldE1l
bnVJdGVtT2JzZXJ2ZXIoIFRJbnQgYUNtZElkICk7DQorICAgICAgICBXaWRnZXRFdmVudEhhbmRs
ZXIqIE1lbnVJdGVtT2JzZXJ2ZXIoIFRJbnQgYUNtZElkICk7DQogDQogICAgICAgICAvKioNCiAg
ICAgICAgICogTWV0aG9kIFNldE1lbnVPYnNlcnZlcg0KQEAgLTI4MSw3ICsyODAsNyBAQA0KICAg
ICAgICAgKiBAcGFyYW0gDQogICAgICAgICAqIEByZXR1cm4gY2FsbGJhY2sgZnVuY3Rpb24NCiAg
ICAgICAgICovDQotICAgICAgICBXaWRnZXRFdmVudEhhbmRsZXIqJiBHZXRNZW51T2JzZXJ2ZXIo
KTsNCisgICAgICAgIFdpZGdldEV2ZW50SGFuZGxlciogTWVudU9ic2VydmVyKCk7DQogDQogICAg
ICAgICAvKioNCiAgICAgICAgICogTWV0aG9kIFNldFJpZ2h0S2V5T2JzZXJ2ZXINCkBAIC0yOTEs
MTQgKzI5MCwxMyBAQA0KICAgICAgICAgKi8NCiAgICAgICAgIHZvaWQgU2V0UmlnaHRLZXlPYnNl
cnZlciggV2lkZ2V0RXZlbnRIYW5kbGVyKiBhTWVudUNhbGxiYWNrICk7DQogICAgICAgICANCi0N
CiAgICAgICAgIC8qKg0KICAgICAgICAgKiBNZXRob2QgR2V0TWVudU9ic2VydmVyDQogICAgICAg
ICAqIEBzaW5jZSAzLjINCiAgICAgICAgICogQHBhcmFtIA0KICAgICAgICAgKiBAcmV0dXJuIGNh
bGxiYWNrIGZ1bmN0aW9uDQogICAgICAgICAqLw0KLSAgICAgICAgV2lkZ2V0RXZlbnRIYW5kbGVy
KiYgR2V0UmlnaHRLZXlPYnNlcnZlcigpOw0KKyAgICAgICAgV2lkZ2V0RXZlbnRIYW5kbGVyKiBS
aWdodEtleU9ic2VydmVyKCk7DQogDQogICAgICAgICAvKioNCiAgICAgICAgICogTWV0aG9kIEdl
dFdpZGdldElkDQpAQCAtNDQzLDcgKzQ0MSw3IEBADQogICAgICAgICAqIEBwYXJhbSBub25lDQog
ICAgICAgICAqIEByZXR1cm4gVGJvb2wNCiAgICAgICAgICovDQotICAgICAgICBUQm9vbCBSaWdo
dEtleUNhbGxiYWNrKCk7DQorICAgICAgICBUQm9vbCBIYW5kbGVDb21tYW5kTCggVEludCBhQ29t
bWFuZElkICk7DQogDQogICAgICAgICAvKioNCiAgICAgICAgICogTWV0aG9kIGNyZWF0ZVdpZGdl
dE9iamVjdA0KQEAgLTQ3MCwyMCArNDY4LDEzIEBADQogICAgICAgICB2b2lkKiBjcmVhdGVXaWRn
ZXRNZW51SXRlbU9iamVjdCggdm9pZCogYUV4ZWMgKTsNCiANCiAgICAgcHJpdmF0ZToNCi0gICAg
ICAgICAvKioNCisgICAgICAgIC8qKg0KICAgICAgICAgKiBNZXRob2QgTG9hZFdpZGdldEVuZ2lu
ZURsbEwNCiAgICAgICAgICogQHNpbmNlIDMuMg0KICAgICAgICAgKiBAcmV0dXJuIHZvaWQNCiAg
ICAgICAgICovDQogICAgICAgICB2b2lkIExvYWRXaWRnZXRFbmdpbmVEbGxMKCk7DQotDQotICAg
ICAgICAgLyoqDQotICAgICAgICAqIE1ldGhvZCBDcmVhdGVBcHBIYXNoVGFibGVMDQotICAgICAg
ICAqIEBzaW5jZSAzLjINCi0gICAgICAgICogQHJldHVybiB2b2lkDQotICAgICAgICAqLw0KLSAg
ICAgICAgdm9pZCBDcmVhdGVBcHBIYXNoVGFibGVMKCk7DQotDQorICAgICAgICANCiAgICAgICAg
IC8qDQogICAgICAgICAqIE1ldGhvZCBMYXVuY2hBcHBsaWNhdGlvbkwNCiAgICAgICAgICogQHNp
bmNlIDMuMg0KQEAgLTUyMiw3ICs1MTMsNiBAQA0KICAgICAgICAgSEJ1ZkMqICAgICAgICAgICAg
ICAgICAgaVdpZGdldEJ1bmRsZUlkOw0KICAgICAgICAgTVdpZGdldEVuZ2luZUJyaWRnZSogICAg
aVdpZGdldEVuZ2luZUJyaWRnZTsNCiAgICAgICAgIE1XaWRnZXRDYWxsYmFjayogICAgICAgIGlX
aWRnZXRDYWxsYmFjazsNCi0gICAgICAgIFJQdHJIYXNoTWFwPFREZXNDLFRJbnQ+IGlBcHBVaWRN
YXA7DQogICAgICAgICBSTGlicmFyeSAgICAgICAgICAgICAgICBpTGlicmFyeTsNCiAgICAgICAg
IENNZW51SXRlbSogICAgICAgICAgICAgIGlNZW51Um9vdDsNCiAgICAgICAgIFdpZGdldEV2ZW50
SGFuZGxlciogICAgIGlNZW51Q2FsbGJhY2s7DQpAQCAtNTQ4LDIzICs1MzgsMjIgQEANCiAgICAg
ICAgIHZvaWQgQWRkTWVudUl0ZW0oIENFaWtNZW51UGFuZSYgYU1lbnVQYW5lLCBDTWVudUl0ZW0q
IGFOb2RlICk7DQogDQogICAgICAgICAvKg0KLSAgICAgICAgKiBNZXRob2QgSW5zZXJ0DQorICAg
ICAgICAqIE1ldGhvZCBBcHBlbmQNCiAgICAgICAgICogQHNpbmNlIDMuMg0KLSAgICAgICAgKiBA
cGFyYW0gcm9vdCBvZiB0aGUgdHJlZQ0KKyAgICAgICAgKiBAcGFyYW0gcGFyZW50IG1lbnUgaXRl
bQ0KICAgICAgICAgKiBAcGFyYW0gbWVudSBpdGVtIHRvIGJlIGluc2VydGVkDQotICAgICAgICAq
IEBwYXJhbSBwYXJlbnQgY29tbWFuZCBpZCBvZiB0aGUgbWVudSBpdGVtIHRvIGJlIGluc2VydGVk
DQogICAgICAgICAqIEByZXR1cm4gVEJvb2wNCiAgICAgICAgICovDQotICAgICAgICBUQm9vbCBJ
bnNlcnQoIENNZW51SXRlbSogcm9vdCwgQ01lbnVJdGVtKiBpdGVtLCBUSW50IHBhcmVudElkICk7
DQorICAgICAgICBUQm9vbCBBcHBlbmQoIENNZW51SXRlbSogcm9vdCwgQ01lbnVJdGVtKiBpdGVt
ICk7DQogDQogICAgICAgICAvKg0KLSAgICAgICAgKiBNZXRob2QgSW5zZXJ0U2libGluZw0KKyAg
ICAgICAgKiBNZXRob2QgQXBwZW5kU2libGluZw0KICAgICAgICAgKiBAc2luY2UgMy4yDQogICAg
ICAgICAqIEBwYXJhbSByb290IG9mIHRoZSB0cmVlDQogICAgICAgICAqIEBwYXJhbSBtZW51IGl0
ZW0gdG8gYmUgaW5zZXJ0ZWQNCiAgICAgICAgICogQHJldHVybiB2b2lkDQogICAgICAgICAqLw0K
LSAgICAgICAgdm9pZCBJbnNlcnRTaWJsaW5nKCBDTWVudUl0ZW0qIHJvb3QsIENNZW51SXRlbSog
aXRlbSApOw0KKyAgICAgICAgdm9pZCBBcHBlbmRTaWJsaW5nKCBDTWVudUl0ZW0qIHJvb3QsIENN
ZW51SXRlbSogaXRlbSApOw0KIA0KICAgICAgICAgLyoNCiAgICAgICAgICogTWV0aG9kIEZpbmRO
b2RlQnlJZA0KQEAgLTU5Myw3ICs1ODIsOCBAQA0KICAgICAgICAgLyoqDQogICAgICAgICAqIENv
bnN0cnVjdG9yICAgICAgIA0KICAgICAgICAgKi8NCi0gICAgICAgIHN0YXRpYyBDTWVudUl0ZW0q
IE5ld0woIGNvbnN0IFREZXNDMTYmIGFUZXh0LCBUSW50IGFDbWRJZCwgdm9pZCogYU9iaiA9IE5V
TEwgKTsNCisgICAgICAgIHN0YXRpYyBDTWVudUl0ZW0qIE5ld0woIGNvbnN0IFREZXNDMTYmIGFU
ZXh0LCBUSW50IGFDbWRJZCwgDQorICAgICAgICAgICAgQ01lbnVJdGVtKiBhUGFyZW50ID0gTlVM
TCwgdm9pZCogYU9iaiA9IE5VTEwgKTsNCiANCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBEZXN0
cnVjdG9yLg0KQEAgLTYwOSw3ICs1OTksOCBAQA0KICAgICAgICAgLyoqDQogICAgICAgICAqIEMr
KyBjb25zdHJ1Y3Rvci4NCiAgICAgICAgICovDQotICAgICAgICBDTWVudUl0ZW0oIGNvbnN0IFRE
ZXNDMTYmIGFUZXh0LCBUSW50IGFDbWRJZCwgdm9pZCogYU9iaiA9IE5VTEwgKTsgICAgICAgDQor
ICAgICAgICBDTWVudUl0ZW0oIGNvbnN0IFREZXNDMTYmIGFUZXh0LCBUSW50IGFDbWRJZCwgQ01l
bnVJdGVtKiBhUGFyZW50ID0gTlVMTCwNCisgICAgICAgICAgICB2b2lkKiBhT2JqID0gTlVMTCAp
OyAgICAgICANCiANCiAgICAgcHVibGljOg0KIA0KQEAgLTYzOSw3ICs2MzAsNyBAQA0KICAgICAg
ICAgKiBAcGFyYW0gbm9uZQ0KICAgICAgICAgKiBAcmV0dXJuIGZpcnN0IGNoaWxkIG9mIG1lbnUg
aXRlbQ0KICAgICAgICAgKi8NCi0gICAgICAgIENNZW51SXRlbSomIEZpcnN0Q2hpbGQoKSB7IHJl
dHVybiBpRmlyc3RDaGlsZDsgfQ0KKyAgICAgICAgQ01lbnVJdGVtKiBGaXJzdENoaWxkKCkgeyBy
ZXR1cm4gaUZpcnN0Q2hpbGQ7IH0NCiANCiAgICAgICAgIC8qDQogICAgICAgICAqIE1ldGhvZCBO
ZXh0U2libGluZygpDQpAQCAtNjQ3LDcgKzYzOCw3IEBADQogICAgICAgICAqIEBwYXJhbSBub25l
DQogICAgICAgICAqIEByZXR1cm4gbmV4dCBzaWJsaW5nIG9mIG1lbnUgaXRlbQ0KICAgICAgICAg
Ki8NCi0gICAgICAgIENNZW51SXRlbSomIE5leHRTaWJsaW5nKCkgeyByZXR1cm4gaU5leHRTaWJs
aW5nOyB9DQorICAgICAgICBDTWVudUl0ZW0qIE5leHRTaWJsaW5nKCkgeyByZXR1cm4gaU5leHRT
aWJsaW5nOyB9DQogICAgICAgICANCiAgICAgICAgIC8qDQogICAgICAgICAqIE1ldGhvZCBEaW1t
ZWQoKQ0KQEAgLTY2Myw3ICs2NTQsNyBAQA0KICAgICAgICAgKiBAcGFyYW0gbm9uZQ0KICAgICAg
ICAgKiBAcmV0dXJuIG9uc2VsZWN0IGNhbGxiYWNrIGZ1bmN0aW9uIG9mIG1lbnUgaXRlbQ0KICAg
ICAgICAgKi8NCi0gICAgICAgIFdpZGdldEV2ZW50SGFuZGxlciomIENhbGxiYWNrKCkgeyByZXR1
cm4gaUNhbGxiYWNrOyB9DQorICAgICAgICBXaWRnZXRFdmVudEhhbmRsZXIqIENhbGxiYWNrKCkg
eyByZXR1cm4gaUNhbGxiYWNrOyB9DQogDQogICAgICAgICAvKg0KICAgICAgICAgKiBNZXRob2Qg
T2JqKCkNCkBAIC02NzEsOSArNjYyLDE3IEBADQogICAgICAgICAqIEBwYXJhbSBub25lDQogICAg
ICAgICAqIEByZXR1cm4gbWVudSBpdGVtIGphdmFzY3JpcHQgb2JqZWN0DQogICAgICAgICAqLw0K
LSAgICAgICAgdm9pZComIE9iaigpIHsgcmV0dXJuIGlPYmo7IH0NCisgICAgICAgIHZvaWQqIE9i
aigpIHsgcmV0dXJuIGlPYmo7IH0NCiANCiAgICAgICAgIC8qDQorICAgICAgICAqIE1ldGhvZCBQ
YXJlbnQoKQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSBub25lDQor
ICAgICAgICAqIEByZXR1cm4gcGFyZW50IG1lbnUgaXRlbQ0KKyAgICAgICAgKi8NCisgICAgICAg
IENNZW51SXRlbSogUGFyZW50KCkgeyByZXR1cm4gaVBhcmVudDsgfQ0KKw0KKyAgICAgICAgLyoN
CiAgICAgICAgICogTWV0aG9kIFNldFRleHQoKQ0KICAgICAgICAgKiBAc2luY2UgMy4yDQogICAg
ICAgICAqIEBwYXJhbSB0ZXh0IG9mIG1lbnUgaXRlbQ0KQEAgLTcwMSw3ICs3MDAsNyBAQA0KICAg
ICAgICAgKiBAcGFyYW0gZmlyc3QgY2hpbGQgb2YgbWVudSBpdGVtDQogICAgICAgICAqIEByZXR1
cm4gbm9uZQ0KICAgICAgICAgKi8NCi0gICAgICAgIHZvaWQgU2V0Rmlyc3RDaGlsZCggQ01lbnVJ
dGVtKiYgYUZpcnN0Q2hpbGQgKSB7IGlGaXJzdENoaWxkID0gYUZpcnN0Q2hpbGQ7IH0NCisgICAg
ICAgIHZvaWQgU2V0Rmlyc3RDaGlsZCggQ01lbnVJdGVtKiBhRmlyc3RDaGlsZCApIHsgaUZpcnN0
Q2hpbGQgPSBhRmlyc3RDaGlsZDsgfQ0KICAgICAgICAgDQogICAgICAgICAvKg0KICAgICAgICAg
KiBNZXRob2QgU2V0TmV4dFNpYmxpbmcoKQ0KQEAgLTcwOSw3ICs3MDgsNyBAQA0KICAgICAgICAg
KiBAcGFyYW0gbmV4dCBzaWJsaW5nIG9mIG1lbnUgaXRlbQ0KICAgICAgICAgKiBAcmV0dXJuIG5v
bmUNCiAgICAgICAgICovDQotICAgICAgICB2b2lkIFNldE5leHRTaWJsaW5nKCBDTWVudUl0ZW0q
JiBhTmV4dFNpYmxpbmcgKSB7IGlOZXh0U2libGluZyA9IGFOZXh0U2libGluZzsgfQ0KKyAgICAg
ICAgdm9pZCBTZXROZXh0U2libGluZyggQ01lbnVJdGVtKiBhTmV4dFNpYmxpbmcgKSB7IGlOZXh0
U2libGluZyA9IGFOZXh0U2libGluZzsgfQ0KICAgICAgICAgDQogICAgICAgICAvKg0KICAgICAg
ICAgKiBNZXRob2QgU2V0RGltbWVkKCkNCkBAIC03MjUsNyArNzI0LDcgQEANCiAgICAgICAgICog
QHBhcmFtIGNhbGxiYWNrIGZ1bmN0aW9uDQogICAgICAgICAqIEByZXR1cm4gbm9uZQ0KICAgICAg
ICAgKi8NCi0gICAgICAgIHZvaWQgU2V0Q2FsbGJhY2soIFdpZGdldEV2ZW50SGFuZGxlciomIGFD
YWxsYmFjayApIHsgaUNhbGxiYWNrID0gYUNhbGxiYWNrOyB9DQorICAgICAgICB2b2lkIFNldENh
bGxiYWNrKCBXaWRnZXRFdmVudEhhbmRsZXIqIGFDYWxsYmFjayApIHsgaUNhbGxiYWNrID0gYUNh
bGxiYWNrOyB9DQogDQogICAgICAgICAvKg0KICAgICAgICAgKiBNZXRob2QgU2V0T2JqKCkNCkBA
IC03MzMsMTEgKzczMiwxMiBAQA0KICAgICAgICAgKiBAcGFyYW0gbWVudSBpdGVtIGphdmFzY3Jp
cHQgb2JqZWN0DQogICAgICAgICAqIEByZXR1cm4gbm9uZQ0KICAgICAgICAgKi8NCi0gICAgICAg
IHZvaWQgU2V0T2JqKCB2b2lkKiYgYU9iaiApIHsgaU9iaiA9IGFPYmo7IH0NCisgICAgICAgIHZv
aWQgU2V0T2JqKCB2b2lkKiBhT2JqICkgeyBpT2JqID0gYU9iajsgfQ0KIA0KICAgICBwcml2YXRl
Og0KICAgICAgICAgSEJ1ZkMqICAgICAgICAgICAgICAgICAgaVRleHQ7Ly9kYXRhDQogICAgICAg
ICBUSW50ICAgICAgICAgICAgICAgICAgICBpQ21kSWQ7Ly9kYXRhDQorICAgICAgICBDTWVudUl0
ZW0qICAgICAgICAgICAgICBpUGFyZW50Oy8vZGF0YQ0KICAgICAgICAgQ01lbnVJdGVtKiAgICAg
ICAgICAgICAgaUZpcnN0Q2hpbGQ7Ly9sZWZ0IG5vZGUNCiAgICAgICAgIENNZW51SXRlbSogICAg
ICAgICAgICAgIGlOZXh0U2libGluZzsvL3JpZ2h0IG5vZGUNCiAgICAgICAgIFRCb29sICAgICAg
ICAgICAgICAgICAgIGlEaW1tZWQ7Ly9FVHJ1ZSB0byBkaW0gdGhpcyBtZW51IGl0ZW0uIEVGYWxz
ZSB0byB1bi1kaW0gdGhpcyBtZW51IGl0ZW0uIA0KSW5kZXg6IFdlYktpdC9Ccm93c2VyVmlldy9z
cmMvV2lkZ2V0RXh0ZW5zaW9uLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmll
dy9zcmMvV2lkZ2V0RXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gMjExMjIpDQorKysgV2ViS2l0L0Jy
b3dzZXJWaWV3L3NyYy9XaWRnZXRFeHRlbnNpb24uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzAs
MTYgKzcwLDExIEBADQogDQogLy8gTE9DQUwgQ09OU1RBTlRTIEFORCBNQUNST1MNCiBjb25zdCBU
SW50IEtPcHRpb25zQ21kSWQgPSA2MDAwOw0KLWNvbnN0IFRJbnQgS01heE9wdGlvbnNNZW51ID0g
MjU7DQorY29uc3QgVEludCBLTWF4T3B0aW9uc01lbnUgPSA2MzsNCiBjb25zdCBUSW50IEtNYXhP
cHRpb25zTWVudUl0ZW1TaXplID0gMjU2OyAvL2J5dGVzDQogY29uc3QgVEludCBLTWVudUl0ZW1D
b21tYW5kSWRCYXNlID0gMjAwMDA7DQogDQotY29uc3QgVEludCBLTWVkaWFHYWxsZXJ5VWlkID0g
MHgxMDFGODU5OTsNCi1fTElUKEtNZWRpYUdhbGxlcnksIm1lZGlhZ2FsbGVyeSIpOw0KIGNvbnN0
IFRJbnQgS1dlYkJyb3dzZXJVaWQgPSAweDEwMDA4RDM5Ow0KLV9MSVQoS1dlYkJyb3dzZXIsIndl
YmJyb3dzZXIiKTsNCi1jb25zdCBUSW50IEtDYW1BcHBFbmdpbmVVaWQgPSAweDEwMUY4NTdBOw0K
LV9MSVQoS0NhbUFwcEVuZ2luZSwiY2FtZXJhIik7DQogDQogLy8gTU9EVUxFIERBVEEgU1RSVUNU
VVJFUw0KIHVzaW5nIG5hbWVzcGFjZSBLSlM7DQpAQCAtMTQyLDE0ICsxMzcsMTMgQEANCiAgICAg
ZGVsZXRlIGlXaWRnZXRFbmdpbmVCcmlkZ2U7DQogICAgIGRlbGV0ZSBpV2lkZ2V0QmFzZVBhdGg7
DQogICAgIGRlbGV0ZSBpV2lkZ2V0QnVuZGxlSWQ7DQotICAgIGlBcHBVaWRNYXAuUmVzZXRBbmRE
ZXN0cm95KCk7DQotICAgIGlMaWJyYXJ5LkNsb3NlKCk7DQogICAgIC8vIGRlbGV0ZSB0cmVlDQog
ICAgIERlbGV0ZVRyZWUoIGlNZW51Um9vdCApOyAgIA0KKyAgICBpTGlicmFyeS5DbG9zZSgpOw0K
ICAgICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS8vIENXaWRnZXRFeHRlbnNpb246
OmRlbFRyZWUNCisvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpEZWxldGVUcmVlDQogLy8NCiAvLw0KIC8v
DQpAQCAtMTg1LDM3ICsxNzksMTAgQEANCiAgICAgaVdpZGdldFJlbmRlcmVyID0gbmV3ICggRUxl
YXZlICkgVFdpZGdldFJlbmRlcmVyKCAqaVdlYktpdFZpZXcgKTsNCiAgICAgTG9hZFdpZGdldEVu
Z2luZURsbEwoKTsNCiAgICAgaVdpZGdldEVuZ2luZUJyaWRnZS0+U2V0T2JzZXJ2ZXIoICp0aGlz
ICk7DQotICAgIENyZWF0ZUFwcEhhc2hUYWJsZUwoKTsNCiAgICAgaVJlc291cmNlSWQgPSBSX0NB
U0NBREVfTUVOVV8xOw0KICAgICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS8vIENX
aWRnZXRFeHRlbnNpb246OkNyZWF0ZUFwcEhhc2hUYWJsZUwNCi0vLw0KLS8vDQotLy8NCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQotLy8NCi12b2lkIENXaWRnZXRFeHRlbnNpb246OkNyZWF0ZUFw
cEhhc2hUYWJsZUwoKQ0KLSAgICB7DQotICAgIFRJbnQqIHVpZG1nID0gbmV3IFRJbnQoIEtNZWRp
YUdhbGxlcnlVaWQgKTsNCi0gICAgSEJ1ZkMqIGJ1Zm1lZGlhID0gSEJ1ZkM6Ok5ld0woIFRQdHJD
KCBLTWVkaWFHYWxsZXJ5ICkuTGVuZ3RoKCkgKTsNCi0gICAgKmJ1Zm1lZGlhID0gS01lZGlhR2Fs
bGVyeTsNCi0NCi0gICAgVEludCogdWlkd2ViID0gbmV3IFRJbnQoIEtXZWJCcm93c2VyVWlkICk7
DQotICAgIEhCdWZDKiBidWZ3ZWIgPSBIQnVmQzo6TmV3TCggVFB0ckMoIEtXZWJCcm93c2VyICku
TGVuZ3RoKCkgKTsNCi0gICAgKmJ1ZndlYiA9IEtXZWJCcm93c2VyOw0KLQ0KLSAgICBUSW50KiB1
aWRjYW0gPSBuZXcgVEludCggS0NhbUFwcEVuZ2luZVVpZCApOw0KLSAgICBIQnVmQyogYnVmY2Ft
ID0gSEJ1ZkM6Ok5ld0woIFRQdHJDKCBLQ2FtQXBwRW5naW5lICkuTGVuZ3RoKCkgKTsNCi0gICAg
KmJ1ZmNhbSA9IEtDYW1BcHBFbmdpbmU7DQotDQotICAgIGlBcHBVaWRNYXAuSW5zZXJ0TCggYnVm
bWVkaWEsdWlkbWcgKTsNCi0gICAgaUFwcFVpZE1hcC5JbnNlcnRMKCBidWZ3ZWIsIHVpZHdlYiAp
Ow0KLSAgICBpQXBwVWlkTWFwLkluc2VydEwoIGJ1ZmNhbSwgdWlkY2FtICk7DQotICAgIH0NCi0N
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ1dpZGdldEV4dGVuc2lvbjo6TGF1bmNoQXBw
bGljYXRpb25MDQogLy8NCiAvLw0KQEAgLTM2Myw2ICszMzAsNTggQEANCiAgICAgICAgIH0NCiAg
ICAgfQ0KIA0KKy8vIFRoZSBiaW5hcnkgdHJlZSByZXByZXNlbnRhdGlvbiBvZiBhIG11bHRpd2F5
IHRyZWUgaXMgYmFzZWQgb24gDQorLy8gZmlyc3QgY2hpbGQtbmV4dCBzaWJsaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIHRoZSB0cmVlLiBJbiB0aGlzIHJlcHJlc2VudGF0aW9uIA0KKy8vIGV2ZXJ5IG5v
ZGUgaXMgbGlua2VkIHdpdGggaXRzIGxlZnRtb3N0IGNoaWxkIGFuZCBpdHMgbmV4dCAocmlnaHQg
bmVhcmVzdCkNCisvLyBzaWJsaW5nLiANCisNCisvKiANCitFeGFtcGxlOiBDb25zaWRlciB0aGUg
Zm9sbG93aW5nIG11bHRpd2F5IHRyZWUgDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgMSAg
ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAvIHwgXA0KKyAgICAgICAg
ICAgICAgICAgICAgIC8gIHwgIFwNCisgICAgICAgICAgICAgICAgICAgIC8gICB8ICAgXA0KKyAg
ICAgICAgICAgICAgICAgICAyICAgIDMgICAgNA0KKyAgICAgICAgICAgICAgICAgIC8gXCAgICAg
ICAgfA0KKyAgICAgICAgICAgICAgICAgNSAgIDYgICAgICAgNw0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvIFwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICA4ICAgOQ0KKw0KKw0K
K1RoaXMgdHJlZSBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gZmlyc3QgY2hpbGQtbmV4dCBzaWJsaW5n
IG1hbm5lciBhcyBmb2xsb3dzIDoNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAxDQorICAg
ICAgICAgICAgICAgICAgICAgICAvDQorICAgICAgICAgICAgICAgICAgICAgIC8NCisgICAgICAg
ICAgICAgICAgICAgICAvDQorICAgICAgICAgICAgICAgICAgICAyLS0tMy0tLTQNCisgICAgICAg
ICAgICAgICAgICAgLyAgICAgICAvDQorICAgICAgICAgICAgICAgICAgNS0tLTYgICA3DQorICAg
ICAgICAgICAgICAgICAgICAgICAgIC8NCisgICAgICAgICAgICAgICAgICAgICAgICA4LS0tOQ0K
Kw0KKw0KK0lmIHdlIGxvb2sgYXQgdGhlIGZpcnN0IGNoaWxkLW5leHQgc2libGluZyByZXByZXNl
bnRhdGlvbiBvZiB0aGUgdHJlZSBjbG9zZWx5LCANCit3ZSB3aWxsIHNlZSB0aGF0IGl0IGZvcm1z
IGEgYmluYXJ5IHRyZWUuIFRvIHNlZSB0aGlzIGJldHRlciwgcm90YXRlIGV2ZXJ5IA0KK25leHQt
c2libGluZyBlZGdlIDQ1IGRlZ3JlZXMgY2xvY2t3aXNlLiBBZnRlciB0aGF0LCB0aGUgZm9sbG93
aW5nIGJpbmFyeSB0cmVlIGlzIGdvdDoNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAxDQor
ICAgICAgICAgICAgICAgICAgICAgICAvDQorICAgICAgICAgICAgICAgICAgICAgIDINCisgICAg
ICAgICAgICAgICAgICAgICAvIFwNCisgICAgICAgICAgICAgICAgICAgIDUgICAzDQorICAgICAg
ICAgICAgICAgICAgICAgXCAgIFwNCisgICAgICAgICAgICAgICAgICAgICAgNiAgIDQNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgLw0KKyAgICAgICAgICAgICAgICAgICAgICAgIDcNCisgICAg
ICAgICAgICAgICAgICAgICAgIC8NCisgICAgICAgICAgICAgICAgICAgICAgOA0KKyAgICAgICAg
ICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgIDkNCisNCisqLw0KKw0K
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25N
ZW51SXRlbXNMDQogLy8NCkBAIC0zNzEsNyArMzkwLDcgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogLy8NCiB2b2lkIENXaWRnZXRFeHRlbnNpb246OkFkZE9wdGlvbk1lbnVJdGVtc0woIA0K
LSAgICBDRWlrTWVudVBhbmUmIGFNZW51UGFuZSxUSW50IGFSZXNvdXJjZUlkICkNCisgICAgQ0Vp
a01lbnVQYW5lJiBhTWVudVBhbmUsIFRJbnQgYVJlc291cmNlSWQgKQ0KICAgICB7DQogICAgIENN
ZW51SXRlbSogbm9kZSA9IE5VTEw7DQogICAgIENNZW51SXRlbSogcGFyZW50Tm9kZSA9IE5VTEw7
DQpAQCAtMzk1LDcgKzQxNCw3IEBADQogICAgICAgICB9ICAgICAgIA0KICAgICBlbHNlIGlmICgg
YVJlc291cmNlSWQgPj0gUl9DQVNDQURFX01FTlVfMSApIC8vb25lIG9mIHRoZSBjYXNjYWRlIG1l
bnUgcGFuZQ0KICAgICAgICAgeyAgIA0KLSAgICAgICAgZm9yIChUSW50IGkgPSAwOyBpIDwgaUNh
c2NhZGVBcnIuQ291bnQoKTsgaSsrICkNCisgICAgICAgIGZvciAoIFRJbnQgaSA9IDA7IGkgPCBp
Q2FzY2FkZUFyci5Db3VudCgpOyBpKysgKQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICBp
ZiAoIGlDYXNjYWRlQXJyW2ldLmlSZXNvdXJjZUlkID09IGFSZXNvdXJjZUlkICkNCiAgICAgICAg
ICAgICAgICAgew0KQEAgLTQzOCwxMCArNDU3LDE1IEBADQogdm9pZCBDV2lkZ2V0RXh0ZW5zaW9u
OjpBZGRNZW51SXRlbSggQ0Vpa01lbnVQYW5lJiBhTWVudVBhbmUsIENNZW51SXRlbSogYU5vZGUg
KQ0KICAgICB7DQogICAgIENFaWtNZW51UGFuZUl0ZW06OlNEYXRhIG1lbnVEYXRhOw0KLSAgICBt
ZW51RGF0YS5pQ29tbWFuZElkID0gYU5vZGUtPkNtZElkKCkrS01lbnVJdGVtQ29tbWFuZElkQmFz
ZTsNCisgICAgbWVudURhdGEuaUNvbW1hbmRJZCA9IGFOb2RlLT5DbWRJZCgpICsgS01lbnVJdGVt
Q29tbWFuZElkQmFzZTsNCiANCiAgICAgaWYgKCBhTm9kZS0+Rmlyc3RDaGlsZCgpICkNCi0gICAg
ICAgIG1lbnVEYXRhLmlDYXNjYWRlSWQgPSBpUmVzb3VyY2VJZDsNCisgICAgICAgIHsNCisgICAg
ICAgIGlmICggaVJlc291cmNlSWQgPiBSX0NBU0NBREVfTUVOVV8xICsgS01heE9wdGlvbnNNZW51
ICkNCisgICAgICAgICAgICBtZW51RGF0YS5pQ2FzY2FkZUlkID0gMDsNCisgICAgICAgIGVsc2UN
CisgICAgICAgICAgICBtZW51RGF0YS5pQ2FzY2FkZUlkID0gaVJlc291cmNlSWQ7DQorICAgICAg
ICB9DQogICAgIGVsc2UNCiAgICAgICAgIG1lbnVEYXRhLmlDYXNjYWRlSWQgPSAwOw0KIA0KQEAg
LTYzMywxNiArNjU3LDE5IEBADQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIHZvaWQg
Q1dpZGdldEV4dGVuc2lvbjo6QWRkT3B0aW9uc01lbnVJdGVtKCANCi0gICAgY29uc3QgVERlc0Mm
IGFUZXh0LCBUSW50IGFDbWRJZCwgVEludCBhUGFyZW50SWQsIHZvaWQqIGlPYmogKQ0KKyAgICBj
b25zdCBURGVzQyYgYVRleHQsIFRJbnQgYUNtZElkLCBUSW50IGFQYXJlbnRJZCwgdm9pZCogYU9i
aiApDQogICAgIHsgICANCi0gICAgaWYgKCBpTWVudVJvb3QgPT0gTlVMTCApIA0KKyAgICBpZiAo
ICFpTWVudVJvb3QgKSANCiAgICAgICAgIHsgDQogICAgICAgICBpTWVudVJvb3QgPSBDTWVudUl0
ZW06Ok5ld0woIF9MKCIiKSwgLTEgKTsNCiAgICAgICAgIH0gICAgDQogICAgIGlmICggYVRleHQu
TGVuZ3RoKCkgPiAwICkNCiAgICAgICAgIHsNCi0gICAgICAgIENNZW51SXRlbSogaXRlbSA9IENN
ZW51SXRlbTo6TmV3TCggYVRleHQsIGFDbWRJZCwgaU9iaiApOyANCi0gICAgICAgIEluc2VydCgg
aU1lbnVSb290LCBpdGVtLCBhUGFyZW50SWQgKTsgICAgDQorICAgICAgICBDTWVudUl0ZW0qIHBh
cmVudCA9IEZpbmROb2RlQnlJZCggaU1lbnVSb290LCBhUGFyZW50SWQgKTsNCisgICAgICAgIGlm
ICggIXBhcmVudCApDQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgQ01lbnVJdGVtKiBp
dGVtID0gQ01lbnVJdGVtOjpOZXdMKCBhVGV4dCwgYUNtZElkLCBwYXJlbnQsIGFPYmogKTsgDQor
ICAgICAgICBBcHBlbmQoIHBhcmVudCwgaXRlbSApOyAgICANCiAgICAgICAgIH0NCiAgICAgfQ0K
IA0KQEAgLTY2MSw0NSArNjg4LDM3IEBADQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KLS8vIENXaWRnZXRFeHRlbnNpb246Okluc2VydA0KKy8vIENXaWRnZXRFeHRlbnNpb246
OkFwcGVuZA0KIC8vDQogLy8NCiAvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCi1U
Qm9vbCBDV2lkZ2V0RXh0ZW5zaW9uOjpJbnNlcnQoIA0KLSAgICBDTWVudUl0ZW0qIGFSb290LCBD
TWVudUl0ZW0qIGFJdGVtLCBUSW50IGFQYXJlbnRJZCApDQorVEJvb2wgQ1dpZGdldEV4dGVuc2lv
bjo6QXBwZW5kKCANCisgICAgQ01lbnVJdGVtKiBhUGFyZW50LCBDTWVudUl0ZW0qIGFJdGVtICkN
CiAgICAgeyAgDQotICAgIGlmICggYVJvb3QgKQ0KLSAgICAgICAgew0KLSAgICAgICAgaWYgKCBh
Um9vdC0+Q21kSWQoKSA9PSBhUGFyZW50SWQgKSANCi0gICAgICAgICAgICB7DQotICAgICAgICAg
ICAgaWYgKCBhUm9vdC0+Rmlyc3RDaGlsZCgpID09IE5VTEwgKSAvL2ZpcnN0IGNoaWxkICANCi0g
ICAgICAgICAgICAgICAgeyANCi0gICAgICAgICAgICAgICAgYVJvb3QtPlNldEZpcnN0Q2hpbGQo
IGFJdGVtICk7IA0KLSAgICAgICAgICAgICAgICB9IA0KLSAgICAgICAgICAgIGVsc2UgLy9pbnNl
cnQgYXMgc2libGluZyBvZiBmaXJzdCBjaGlsZA0KLSAgICAgICAgICAgICAgICB7IA0KLSAgICAg
ICAgICAgICAgICBJbnNlcnRTaWJsaW5nKCBhUm9vdC0+Rmlyc3RDaGlsZCgpLCBhSXRlbSApOw0K
LSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgcmV0dXJuIHRydWU7DQotICAgICAgICAg
ICAgfQ0KLSAgICAgICAgaWYgKCBJbnNlcnQoIGFSb290LT5GaXJzdENoaWxkKCksIGFJdGVtLCBh
UGFyZW50SWQgKSApDQotICAgICAgICAgICAgcmV0dXJuIHRydWU7DQotICAgICAgICBpZiAoIElu
c2VydCggYVJvb3QtPk5leHRTaWJsaW5nKCksIGFJdGVtLCBhUGFyZW50SWQgKSApDQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgIA0KKyAgICBpZiAoICFhUGFyZW50ICkNCisgICAg
ICAgIHJldHVybiBFRmFsc2U7DQorDQorICAgIGlmICggYVBhcmVudC0+Rmlyc3RDaGlsZCgpID09
IE5VTEwgKSAvL2ZpcnN0IGNoaWxkICANCisgICAgICAgIHsgDQorICAgICAgICBhUGFyZW50LT5T
ZXRGaXJzdENoaWxkKCBhSXRlbSApOyANCisgICAgICAgIH0gDQorICAgIGVsc2UgLy9pbnNlcnQg
YXMgc2libGluZyBvZiBmaXJzdCBjaGlsZA0KKyAgICAgICAgeyANCisgICAgICAgIEFwcGVuZFNp
YmxpbmcoIGFQYXJlbnQtPkZpcnN0Q2hpbGQoKSwgYUl0ZW0gKTsNCiAgICAgICAgIH0NCi0gICAg
cmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICANCisgICAgcmV0dXJuIEVUcnVlOyAg
ICAgICAgICAgIA0KICAgICB9IA0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLy8gQ1dp
ZGdldEV4dGVuc2lvbjo6SW5zZXJ0U2libGluZw0KKy8vIENXaWRnZXRFeHRlbnNpb246OkFwcGVu
ZFNpYmxpbmcNCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQot
dm9pZCBDV2lkZ2V0RXh0ZW5zaW9uOjpJbnNlcnRTaWJsaW5nKCBDTWVudUl0ZW0qIGFSb290LCBD
TWVudUl0ZW0qIGFJdGVtICkNCit2b2lkIENXaWRnZXRFeHRlbnNpb246OkFwcGVuZFNpYmxpbmco
IENNZW51SXRlbSogYVJvb3QsIENNZW51SXRlbSogYUl0ZW0gKQ0KICAgICB7DQogICAgIGlmICgg
YVJvb3QgJiYgKCBhUm9vdC0+TmV4dFNpYmxpbmcoKSA9PSBOVUxMICkgKSAvL2ZpcnN0IHNpYmxp
bmcNCiAgICAgICAgIHsNCkBAIC03MDcsNyArNzI2LDcgQEANCiAgICAgICAgIH0NCiAgICAgZWxz
ZQ0KICAgICAgICAgew0KLSAgICAgICAgSW5zZXJ0U2libGluZyggYVJvb3QtPk5leHRTaWJsaW5n
KCksIGFJdGVtICk7DQorICAgICAgICBBcHBlbmRTaWJsaW5nKCBhUm9vdC0+TmV4dFNpYmxpbmco
KSwgYUl0ZW0gKTsNCiAgICAgICAgIH0NCiANCiAgICAgcmV0dXJuOw0KQEAgLTcyMCwxOSArNzM5
LDIzIEBADQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCi12b2lkIENXaWRnZXRF
eHRlbnNpb246OkRlbGV0ZU1lbnVJdGVtKCBUSW50IGFDbWRJZCwgVEludCBhUGFyZW50Q21kSWQg
KQ0KK3ZvaWQgQ1dpZGdldEV4dGVuc2lvbjo6RGVsZXRlTWVudUl0ZW0oIFRJbnQgYUNtZElkICkN
CiAgICAgew0KLSAgICBDTWVudUl0ZW0qIG5vZGUgPSBOVUxMOw0KLSAgICBub2RlID0gRmluZE5v
ZGVCeUlkKCBpTWVudVJvb3QsIGFQYXJlbnRDbWRJZCApOyANCisgICAgQ01lbnVJdGVtKiBub2Rl
ID0gRmluZE5vZGVCeUlkKCBpTWVudVJvb3QsIGFDbWRJZCApOyANCiANCi0gICAgaWYgKCBub2Rl
ICYmIG5vZGUtPkZpcnN0Q2hpbGQoKSApDQorICAgIGlmICggIW5vZGUgKQ0KKyAgICAgICAgcmV0
dXJuOw0KKw0KKyAgICBDTWVudUl0ZW0qIHBhcmVudCA9IG5vZGUtPlBhcmVudCgpOw0KKw0KKyAg
ICBpZiAoIHBhcmVudCAmJiBwYXJlbnQtPkZpcnN0Q2hpbGQoKSApDQogICAgICAgICB7DQogICAg
ICAgICAvL2l0IGNvdWxkIGJlIGZpcnN0IGNoaWxkDQotICAgICAgICBpZiAoIG5vZGUtPkZpcnN0
Q2hpbGQoKS0+Q21kSWQoKSA9PSBhQ21kSWQgICkNCisgICAgICAgIGlmICggcGFyZW50LT5GaXJz
dENoaWxkKCktPkNtZElkKCkgPT0gYUNtZElkICApDQogICAgICAgICAgICAgew0KLSAgICAgICAg
ICAgIENNZW51SXRlbSogdGVtcEZpcnN0Q2hpbGQgPSBub2RlLT5GaXJzdENoaWxkKCk7DQorICAg
ICAgICAgICAgQ01lbnVJdGVtKiB0ZW1wRmlyc3RDaGlsZCA9IHBhcmVudC0+Rmlyc3RDaGlsZCgp
Ow0KICAgICAgICAgICAgIC8vdGhlIHNpYmxpbmcgb2YgZmlyc3RjaGlsZCB3aWxsIGJlIHRoZSBu
ZXcgZmlyc3RjaGlsZA0KLSAgICAgICAgICAgIG5vZGUtPlNldEZpcnN0Q2hpbGQoIG5vZGUtPkZp
cnN0Q2hpbGQoKS0+TmV4dFNpYmxpbmcoKSApOw0KKyAgICAgICAgICAgIHBhcmVudC0+U2V0Rmly
c3RDaGlsZCggcGFyZW50LT5GaXJzdENoaWxkKCktPk5leHRTaWJsaW5nKCkgKTsNCiAgICAgICAg
ICAgICBEZWxldGVUcmVlKCB0ZW1wRmlyc3RDaGlsZCApOw0KICAgICAgICAgICAgIHRlbXBGaXJz
dENoaWxkID0gTlVMTDsNCiAgICAgICAgICAgICByZXR1cm47DQpAQCAtNzQwLDcgKzc2Myw3IEBA
DQogICAgICAgICAvL29yIG9uZSBvZiB0aGUgc2libGluZyBvZiBmaXJzdGNoaWxkDQogICAgICAg
ICBlbHNlIA0KICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBDTWVudUl0ZW0qIHByZXYgPSBu
b2RlLT5GaXJzdENoaWxkKCk7DQorICAgICAgICAgICAgQ01lbnVJdGVtKiBwcmV2ID0gcGFyZW50
LT5GaXJzdENoaWxkKCk7DQogICAgICAgICAgICAgQ01lbnVJdGVtKiBpdGVtID0gTlVMTDsNCiAg
ICAgICAgICAgICBpZiAoIHByZXYgKQ0KICAgICAgICAgICAgICAgICBpdGVtID0gcHJldi0+TmV4
dFNpYmxpbmcoKTsNCkBAIC03OTcsMTMgKzgyMCwxMyBAQA0KICAgICB9DQogDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KLS8vIENXaWRnZXRFeHRlbnNpb246OkdldE1lbnVJdGVtDQorLy8gQ1dp
ZGdldEV4dGVuc2lvbjo6TWVudUl0ZW0NCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQogLy8NCi12b2lkIENXaWRnZXRFeHRlbnNpb246OkdldE1lbnVJdGVtKCANCit2b2lk
IENXaWRnZXRFeHRlbnNpb246Ok1lbnVJdGVtKCANCiAgICAgVERlcyYgdGV4dFZhbCwgVEludCYg
Y21kSWQsIFRCb29sJiBkaW1TdGF0ICkNCiAgICAgew0KICAgICBDTWVudUl0ZW0qIG5vZGUgPSBO
VUxMOw0KQEAgLTg5MiwxMyArOTE1LDEzIEBADQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQotLy8gQ1dpZGdldEV4dGVuc2lvbjo6R2V0TWVudUl0ZW1PYnNlcnZlcg0KKy8vIENX
aWRnZXRFeHRlbnNpb246Ok1lbnVJdGVtT2JzZXJ2ZXINCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQogLy8NCi1XaWRnZXRFdmVudEhhbmRsZXIqIENXaWRnZXRFeHRlbnNp
b246OkdldE1lbnVJdGVtT2JzZXJ2ZXIoIFRJbnQgYUNtZElkICkNCitXaWRnZXRFdmVudEhhbmRs
ZXIqIENXaWRnZXRFeHRlbnNpb246Ok1lbnVJdGVtT2JzZXJ2ZXIoIFRJbnQgYUNtZElkICkNCiAg
ICAgew0KICAgICBDTWVudUl0ZW0qIG5vZGUgPSBOVUxMOw0KICAgICBub2RlID0gRmluZE5vZGVC
eUlkKCBpTWVudVJvb3QsIGFDbWRJZCApOyANCkBAIC05MjIsMTMgKzk0NSwxMyBAQA0KICAgICB9
DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS8vIENXaWRnZXRFeHRlbnNpb246OkdldE1l
bnVPYnNlcnZlcg0KKy8vIENXaWRnZXRFeHRlbnNpb246Ok1lbnVPYnNlcnZlcg0KIC8vDQogLy8N
CiAvLw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KLVdpZGdldEV2ZW50SGFuZGxlciom
IENXaWRnZXRFeHRlbnNpb246OkdldE1lbnVPYnNlcnZlcigpDQorV2lkZ2V0RXZlbnRIYW5kbGVy
KiBDV2lkZ2V0RXh0ZW5zaW9uOjpNZW51T2JzZXJ2ZXIoKQ0KICAgICB7ICANCiAgICAgcmV0dXJu
IGlNZW51Q2FsbGJhY2s7DQogICAgIH0NCkBAIC05NTIsMjEgKzk3NSwyMSBAQA0KIC8vDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQotV2lkZ2V0RXZlbnRIYW5kbGVyKiYgQ1dpZGdldEV4
dGVuc2lvbjo6R2V0UmlnaHRLZXlPYnNlcnZlcigpDQorV2lkZ2V0RXZlbnRIYW5kbGVyKiBDV2lk
Z2V0RXh0ZW5zaW9uOjpSaWdodEtleU9ic2VydmVyKCkNCiAgICAgeyAgDQogICAgIHJldHVybiBp
UmlnaHRLZXlDYWxsYmFjazsNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0v
LyBDV2lkZ2V0RXh0ZW5zaW9uOjpSaWdodEtleUNhbGxiYWNrDQorLy8gQ1dpZGdldEV4dGVuc2lv
bjo6SGFuZGxlQ29tbWFuZEwNCiAvLw0KIC8vDQogLy8NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogLy8NCi1UQm9vbCBDV2lkZ2V0RXh0ZW5zaW9uOjpSaWdodEtleUNhbGxiYWNrKCkNCitUQm9v
bCBDV2lkZ2V0RXh0ZW5zaW9uOjpIYW5kbGVDb21tYW5kTCggVEludCBhQ29tbWFuZElkICkNCiAg
ICAgew0KLSAgICBpZiAoIGlXaWRnZXRFbmdpbmVCcmlkZ2UgKQ0KKyAgICBpZiAoIGlXaWRnZXRF
bmdpbmVCcmlkZ2UgJiYgYUNvbW1hbmRJZCA9PSBFQWtuU29mdGtleUV4aXQgKQ0KICAgICAgICAg
ew0KICAgICAgICAgcmV0dXJuIGlXaWRnZXRFbmdpbmVCcmlkZ2UtPlJpZ2h0U29mdEtleVByZXNz
ZWQoKTsNCiAgICAgICAgIH0NCkBAIC0xMDUxLDkgKzEwNzQsOSBAQA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLw0KIENNZW51SXRlbSogQ01lbnVJdGVtOjpOZXdMKA0KLSAgICBjb25zdCBU
RGVzQzE2JiBhVGV4dCwgVEludCBhQ21kSWQsIHZvaWQqIGFPYmogKQ0KKyAgICBjb25zdCBURGVz
QzE2JiBhVGV4dCwgVEludCBhQ21kSWQsIENNZW51SXRlbSogYVBhcmVudCwgdm9pZCogYU9iaiAp
DQogICAgIHsNCi0gICAgQ01lbnVJdGVtKiBzZWxmID0gbmV3ICggRUxlYXZlICkgQ01lbnVJdGVt
KCBhVGV4dCwgYUNtZElkLCBhT2JqICk7DQorICAgIENNZW51SXRlbSogc2VsZiA9IG5ldyAoIEVM
ZWF2ZSApIENNZW51SXRlbSggYVRleHQsIGFDbWRJZCwgYVBhcmVudCwgYU9iaiApOw0KICAgICBD
bGVhbnVwU3RhY2s6OlB1c2hMKCBzZWxmICk7DQogICAgIHNlbGYtPkNvbnN0cnVjdEwoKTsNCiAg
ICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsNCkBAIC0xMDY4LDEzICsxMDkxLDExIEBADQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogQ01lbnVJdGVtOjpDTWVudUl0ZW0oDQotICAgIGNvbnN0
IFREZXNDMTYmIGFUZXh0LCBUSW50IGFDbWRJZCwgdm9pZCogYU9iaiApDQotICAgIDppQ21kSWQo
IGFDbWRJZCApLA0KLSAgICBpT2JqKCBhT2JqICkNCisgICAgY29uc3QgVERlc0MxNiYgYVRleHQs
IFRJbnQgYUNtZElkLCBDTWVudUl0ZW0qIGFQYXJlbnQsIHZvaWQqIGFPYmogKQ0KKyAgICA6aUNt
ZElkKCBhQ21kSWQgKSwgaVBhcmVudCggYVBhcmVudCApLCBpT2JqKCBhT2JqICkNCiAgICAgew0K
ICAgICBpVGV4dCA9IGFUZXh0LkFsbG9jKCk7DQogICAgIGlEaW1tZWQgPSBFRmFsc2U7DQotICAg
IGlDYWxsYmFjayA9IE5VTEw7DQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpJ
bmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRQcmVmZXJlbmNlcy5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dpZGdldFByZWZlcmVuY2VzLmNwcAko
cmV2aXNpb24gMjExMjIpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XaWRnZXRQcmVmZXJl
bmNlcy5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xNjMsNyArMTYzLDYgQEANCiAgICAgICAgICAg
ICAgICAgSEJ1ZkMqIGZpbGVQYXRoID0gSEJ1ZkM6Ok5ld0xDKCByZXMtPkxlbmd0aCgpICk7DQog
DQogICAgICAgICAgICAgICAgIFRQdHIgZk5hbWUoIGZpbGVQYXRoLT5EZXMoKSApOw0KLSAgICAg
ICAgICAgICAgICAvL2ZOYW1lLkFwcGVuZCggKmlCYXNlUGF0aCApOw0KICAgICAgICAgICAgICAg
ICBmTmFtZS5BcHBlbmQoICpyZXMgKTsNCiANCiAgICAgICAgICAgICAgICAgUkZpbGVSZWFkU3Ry
ZWFtIHJlYWRTdHJlYW07DQpAQCAtMTg4LDcgKzE4Nyw3IEBADQogICAgICAgICAgICAgICAgIENs
ZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgyKTsgLy9maWxlUGF0aCxmcw0KICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgfSAgICAgICAgDQotICAgICAgICBlbHNlIGlmICggKnNpemUg
PiAwICkNCisgICAgICAgIGVsc2UgaWYgKCAqc2l6ZSA+PSAwICkNCiAgICAgICAgICAgICB7DQog
ICAgICAgICAgICAgYVZhbHVlLlNldCggKnJlcyApOw0KICAgICAgICAgICAgIHJTdWNjZXNzID0g
S0Vyck5vbmU7DQpAQCAtMjEyLDcgKzIxMSw3IEBADQogICAgIGlmICggIWlCYXNlUGF0aCAmJiAo
aVdpZGdldEV4dGVuc2lvbi0+V2lkZ2V0QmFzZVBhdGgoKS5MZW5ndGgoKSA+IDApICkNCiAgICAg
ICAgIGlCYXNlUGF0aCA9IGlXaWRnZXRFeHRlbnNpb24tPldpZGdldEJhc2VQYXRoKCkuQWxsb2NM
KCk7DQogDQotICAgIGlmICggYUtleS5MZW5ndGgoKSA8PSBLTWF4S2V5VmFsdWVTaXplICYmIGFW
YWx1ZS5MZW5ndGgoKSA+IDAgKQ0KKyAgICBpZiAoIGFLZXkuTGVuZ3RoKCkgPD0gS01heEtleVZh
bHVlU2l6ZSApDQogICAgICAgICB7DQogICAgICAgICBIQnVmQyoga2V5ID0gSEJ1ZkM6Ok5ld0xD
KCBhS2V5Lkxlbmd0aCgpICsgS01heEludExlbmd0aCArIDEgKTsNCiAgICAgICAgIGtleS0+RGVz
KCkuRm9ybWF0KCBLS2V5Rm9ybWF0LCBpV2lkZ2V0RXh0ZW5zaW9uLT5HZXRXaWRnZXRJZCgpLCAm
YUtleSApOw0KQEAgLTIyMiw5ICsyMjEsMTAgQEANCiAgICAgICAgICAgICBIQnVmQyogdmFsdWUg
PSBhVmFsdWUuQWxsb2NMQygpOw0KICAgICAgICAgICAgIGlNYXAuSW5zZXJ0TCgga2V5LCB2YWx1
ZSApOw0KICAgICAgICAgICAgIFRJbnQqIHNpemUgPSBuZXcgVEludChhVmFsdWUuTGVuZ3RoKCkp
Ow0KLSAgICAgICAgICAgIGlTaXplTWFwLkluc2VydEwoIGtleSwgc2l6ZSApOw0KLSAgICAgICAg
ICAgIENsZWFudXBTdGFjazo6UG9wKCB2YWx1ZSApOw0KLSAgICAgICAgICAgIENsZWFudXBTdGFj
azo6UG9wKCBrZXkgKTsNCisgICAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiBrZXkgYW5kIGlu
c2VydCB0aGF0DQorICAgICAgICAgICAgSEJ1ZkMqIG5ld0tleSA9IGtleS0+QWxsb2NMQygpOw0K
KyAgICAgICAgICAgIGlTaXplTWFwLkluc2VydEwoIG5ld0tleSwgc2l6ZSApOw0KKyAgICAgICAg
ICAgIENsZWFudXBTdGFjazo6UG9wKCAzICk7Ly9uZXdLZXksdmFsdWUsa2V5ICAgICAgICAgICAN
CiAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgfQ0KICAgICAgICAgZWxzZQ0KQEAg
LTI0MiwyMiArMjQyLDI0IEBADQogICAgICAgICAgICAgICAgICAgICBFRmlsZVdyaXRlfEVGaWxl
U2hhcmVFeGNsdXNpdmUgKTsNCiAgICAgICAgICAgICAgICAgQ2xlYW51cENsb3NlUHVzaEwoIGZp
bGUgKTsNCiANCi0gICAgICAgICAgICAgICAgSEJ1ZkMqIGZpbGVQYXRoID0gSEJ1ZkM6Ok5ld0xD
KCBpQmFzZVBhdGgtPkxlbmd0aCgpIA0KLSAgICAgICAgICAgICAgICAgICAgKyB0ZW1wRmlsZU5h
bWUuTGVuZ3RoKCkgKTsNCisgICAgICAgICAgICAgICAgSEJ1ZkMqIGZpbGVQYXRoID0gSEJ1ZkM6
Ok5ld0xDKCB0ZW1wRmlsZU5hbWUuTGVuZ3RoKCkgKTsNCiANCiAgICAgICAgICAgICAgICAgVFB0
ciBmTmFtZSggZmlsZVBhdGgtPkRlcygpICk7DQotICAgICAgICAgICAgICAgIGZOYW1lLkFwcGVu
ZCggKmlCYXNlUGF0aCApOyAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICBmTmFtZS5B
cHBlbmQoIHRlbXBGaWxlTmFtZSApOw0KICAgICAgICAgICAgICAgICBpTWFwLkluc2VydEwoIGtl
eSwgZmlsZVBhdGggKTsNCiAgICAgICAgICAgICAgICAgVEludCogc2l6ZSA9IG5ldyBUSW50KCBh
VmFsdWUuTGVuZ3RoKCkgKTsNCi0gICAgICAgICAgICAgICAgaVNpemVNYXAuSW5zZXJ0TCgga2V5
LCBzaXplICk7DQorICAgICAgICAgICAgICAgIC8vIG1ha2UgYSBjb3B5IG9mIGtleSBhbmQgaW5z
ZXJ0IHRoYXQNCisgICAgICAgICAgICAgICAgSEJ1ZkMqIG5ld0tleSA9IGtleS0+QWxsb2NMQygp
Ow0KKyAgICAgICAgICAgICAgICBpU2l6ZU1hcC5JbnNlcnRMKCBuZXdLZXksIHNpemUgKTsNCiAN
CiAgICAgICAgICAgICAgICAgUkZpbGVXcml0ZVN0cmVhbSB3cml0ZVN0cmVhbSggZmlsZSApOw0K
ICAgICAgICAgICAgICAgICBDbGVhbnVwQ2xvc2VQdXNoTCggd3JpdGVTdHJlYW0gKTsgICAgICAg
IA0KICAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUludDMyTCggYVZhbHVlLkxlbmd0
aCgpICk7DQogICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtLldyaXRlTCggYVZhbHVlICk7ICAg
ICAgICAgICAgIA0KICAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Db21taXRMKCk7DQotICAg
ICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSggMyApOyAvL3dyaXRlU3Ry
ZWFtLCBmaWxlLGZzDQorICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJv
eSgpOyAvL3dyaXRlU3RyZWFtDQorICAgICAgICAgICAgICAgIENsZWFudXBTdGFjazo6UG9wKCAy
ICk7Ly9uZXdLZXksZmlsZVBhdGgNCisgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3BB
bmREZXN0cm95KCAyICk7IC8vZmlsZSxmcw0KICAgICAgICAgICAgICAgICBDbGVhbnVwU3RhY2s6
OlBvcCgga2V5ICk7DQogICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICAg
fSAgICAgICAgICAgDQpAQCAtMzE5LDYgKzMyMSw4IEBADQogICAgICAgICAgICAgICAgIFRJbnQq
IHNpemUgPSBpU2l6ZU1hcC5GaW5kKCAqa2V5ICk7DQogICAgICAgICAgICAgICAgIGlmICggc2l6
ZSApDQogICAgICAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbS5Xcml0ZUludDMyTCggKnNpemUg
KTsNCisgICAgICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgd3JpdGVTdHJl
YW0uV3JpdGVJbnQzMkwoIDAgKTsNCiAgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAg
IHdyaXRlU3RyZWFtLkNvbW1pdEwoKTsNCkBAIC0zNzYsOCArMzgwLDEwIEBADQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhZFN0cmVhbS5SZWFkTCggcHRydmFsdWUsIGxlbiApOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGlNYXAuSW5zZXJ0TCgga2V5LCB2YWx1ZSApOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnQgKnNpemUgPSBuZXcgVEludCAoIHJlYWRTdHJlYW0uUmVhZElu
dDMyTCgpICk7DQotICAgICAgICAgICAgICAgICAgICAgICAgaVNpemVNYXAuSW5zZXJ0TCgga2V5
LCBzaXplICk7DQotICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYW51cFN0YWNrOjpQb3AoIDIg
KTsgLy92YWx1ZSxrZXkNCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIGEgY29weSBv
ZiBrZXkgYW5kIGluc2VydCB0aGF0DQorICAgICAgICAgICAgICAgICAgICAgICAgSEJ1ZkMqIG5l
d0tleSA9IGtleS0+QWxsb2NMQygpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlTaXplTWFw
Lkluc2VydEwoIG5ld0tleSwgc2l6ZSApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIENsZWFu
dXBTdGFjazo6UG9wKCAzICk7IC8vbmV3S2V5LHZhbHVlLGtleQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAg
ICAgICB7DQpJbmRleDogV2ViS2l0L0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIxMTQ5KQ0KKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkNCkBAIC0xLDMgKzEsNDEgQEANCityYXRobmFzYSwgcmV2aWV3ZWQgYnkgemJ1anRhcw0K
KyBERVNDOiBXaWRnZXQgTWVudSBBUEkNCisgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM0OTQNCisNCisgICAgICAgICogQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsSW50
ZXJmYWNlLmg6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L2luYy9XaWRnZXRFeHRlbnNpb24uaDoN
CisgICAgICAgIChDTWVudUl0ZW06OkZpcnN0Q2hpbGQpOg0KKyAgICAgICAgKENNZW51SXRlbTo6
TmV4dFNpYmxpbmcpOg0KKyAgICAgICAgKENNZW51SXRlbTo6Q2FsbGJhY2spOg0KKyAgICAgICAg
KENNZW51SXRlbTo6T2JqKToNCisgICAgICAgIChDTWVudUl0ZW06OlBhcmVudCk6DQorICAgICAg
ICAoQ01lbnVJdGVtOjpTZXRGaXJzdENoaWxkKToNCisgICAgICAgIChDTWVudUl0ZW06OlNldE5l
eHRTaWJsaW5nKToNCisgICAgICAgIChDTWVudUl0ZW06OlNldENhbGxiYWNrKToNCisgICAgICAg
IChDTWVudUl0ZW06OlNldE9iaik6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9XaWRnZXRF
eHRlbnNpb24uY3BwOg0KKyAgICAgICAgKENXaWRnZXRFeHRlbnNpb246On5DV2lkZ2V0RXh0ZW5z
aW9uKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpDb25zdHJ1Y3RMKToNCisgICAgICAg
IChDV2lkZ2V0RXh0ZW5zaW9uOjpBZGRPcHRpb25NZW51SXRlbXNMKToNCisgICAgICAgIChDV2lk
Z2V0RXh0ZW5zaW9uOjpBZGRNZW51SXRlbSk6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6
QWRkT3B0aW9uc01lbnVJdGVtKToNCisgICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpBcHBlbmQp
Og0KKyAgICAgICAgKENXaWRnZXRFeHRlbnNpb246OkFwcGVuZFNpYmxpbmcpOg0KKyAgICAgICAg
KENXaWRnZXRFeHRlbnNpb246OkRlbGV0ZU1lbnVJdGVtKToNCisgICAgICAgIChDV2lkZ2V0RXh0
ZW5zaW9uOjpNZW51SXRlbSk6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6TWVudUl0ZW1P
YnNlcnZlcik6DQorICAgICAgICAoQ1dpZGdldEV4dGVuc2lvbjo6TWVudU9ic2VydmVyKToNCisg
ICAgICAgIChDV2lkZ2V0RXh0ZW5zaW9uOjpSaWdodEtleU9ic2VydmVyKToNCisgICAgICAgIChD
V2lkZ2V0RXh0ZW5zaW9uOjpIYW5kbGVDb21tYW5kTCk6DQorICAgICAgICAoQ01lbnVJdGVtOjpO
ZXdMKToNCisgICAgICAgIChpT2JqKToNCisgICAgICAgICogQnJvd3NlclZpZXcvc3JjL1dpZGdl
dFByZWZlcmVuY2VzLmNwcDoNCisgICAgICAgIChDV2lkZ2V0UHJlZmVyZW5jZXM6OlByZWZlcmVu
Y2VMKToNCisgICAgICAgIChDV2lkZ2V0UHJlZmVyZW5jZXM6OlNldFByZWZlcmVuY2VMKToNCisg
ICAgICAgIChDV2lkZ2V0UHJlZmVyZW5jZXM6OlNhdmVMKToNCisgICAgICAgIChDV2lkZ2V0UHJl
ZmVyZW5jZXM6OkxvYWRMKTogICAgICAgDQorDQorDQogeWFkYXZhbGwsIHJldmlld2VkIGJ5IDx6
YnVqdGFzQGdtYWlsLmNvbT4NCiAgREVTQzogRml4IGJ1aWxkIGJyZWFrDQogIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDk3DQo=
</data>
<flag name="review"
          id="5796"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>