<?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>47281</bug_id>
          
          <creation_ts>2010-10-06 11:05:44 -0700</creation_ts>
          <short_desc>Rename toRef/toWK to toAPI/toImpl</short_desc>
          <delta_ts>2010-10-06 14:31:48 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>290447</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-06 11:05:44 -0700</bug_when>
    <thetext>Rename toRef/toWK to toAPI/toImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290451</commentid>
    <comment_count>1</comment_count>
      <attachid>69961</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-06 11:08:25 -0700</bug_when>
    <thetext>Created attachment 69961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290454</commentid>
    <comment_count>2</comment_count>
      <attachid>69961</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-06 11:10:33 -0700</bug_when>
    <thetext>Comment on attachment 69961
Patch

Sam Weinig reviewed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290462</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-06 11:17:03 -0700</bug_when>
    <thetext>Committed r69214: &lt;http://trac.webkit.org/changeset/69214&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290579</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-06 14:31:48 -0700</bug_when>
    <thetext>And a trivial buildfix landed in http://trac.webkit.org/changeset/69232 , which
weren&apos;t necessary if you waited for the green EWS status bubbles ...

Qt EWS is quite fast, I don&apos;t think if you can&apos;t wait 5-10 minutes before set r+ ...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69961</attachid>
            <date>2010-10-06 11:08:25 -0700</date>
            <delta_ts>2010-10-06 11:10:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47281-20101006110824.patch</filename>
            <type>text/plain</type>
            <size>133843</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MTI1MWY5MWIxZDMyOTQ0OGQ3MmM0NDZhZDY3OTdlYjBhYTRkZDA3MC4uNWVmMWIzN2QyZThjNDZh
N2Q2MmQyZTdlMjljMzhlZjgzNTllNGI0YiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxMC0xMC0wNiAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSB0b1JlZi90b1dLIHRvIHRvQVBJL3Rv
SW1wbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcy
ODEKKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0FycmF5LmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8uY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9X
S0RhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9XS0Vycm9yLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tNdXRhYmxlQXJyYXkuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0
aW9uYXJ5LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICog
U2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9X
S1N0cmluZy5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHA6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YuY3BwOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9jZi9XS1VSTENGLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2YvV0tVUkxS
ZXF1ZXN0Q0YuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTFJlc3BvbnNlQ0Yu
Y3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW06
CisgICAgICAgICogU2hhcmVkL0FQSS9jL21hYy9XS1VSTFJlcXVlc3ROUy5tbToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvbWFjL1dLVVJMUmVzcG9uc2VOUy5tbToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2Mvd2luL1dLQ2VydGlmaWNhdGVJbmZvV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQmFja0Zvcndh
cmRMaXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLTmF2aWdhdGlvbkRhdGEuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3BhY2UuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy93aW4vV0tDb250ZXh0V2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
d2luL1dLVmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdR
dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkZvcm1DbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJIaXN0b3J5Q2xpZW50
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MYXllckJhY2tlZERy
YXdpbmdBcmVhUHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL3F0L0NodW5rZWRVcGRh
dGVEcmF3aW5nQXJlYVByb3h5UXQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL3F0L0luamVjdGVkQnVuZGxlUXQuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcDoKKwogMjAxMC0x
MC0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0FycmF5LmNwcCBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCmluZGV4IDY1NmE0
Y2NkNjE0MDk1ZTE3ZmMwYWMzNDRmYzAyOTVjNWYwNzA1YmYuLjllMjBiN2VkZThjZmZjMzEzMjli
ODhhZjQzNTI4ZDBlZTczOGQ5N2IgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
QXJyYXkuY3BwCisrKyBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCkBAIC0zMiwy
MSArMzIsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tBcnJheUdl
dFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKEltbXV0YWJsZUFycmF5OjpBUElUeXBlKTsK
KyAgICByZXR1cm4gdG9BUEkoSW1tdXRhYmxlQXJyYXk6OkFQSVR5cGUpOwogfQogCiBXS0FycmF5
UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZhbHVl
cykKIHsKICAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGFycmF5ID0gSW1tdXRhYmxlQXJyYXk6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PEFQSU9iamVjdCoqPihjb25zdF9jYXN0PHZvaWQqKj4o
dmFsdWVzKSksIG51bWJlck9mVmFsdWVzKTsKLSAgICByZXR1cm4gdG9SZWYoYXJyYXkucmVsZWFz
ZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGFycmF5LnJlbGVhc2UoKS5yZWxl
YXNlUmVmKCkpOwogfQogCiBXS1R5cGVSZWYgV0tBcnJheUdldEl0ZW1BdEluZGV4KFdLQXJyYXlS
ZWYgYXJyYXlSZWYsIHNpemVfdCBpbmRleCkKIHsKLSAgICByZXR1cm4gdG9XSyhhcnJheVJlZikt
PmF0KGluZGV4KTsKKyAgICByZXR1cm4gdG9JbXBsKGFycmF5UmVmKS0+YXQoaW5kZXgpOwogfQog
CiBzaXplX3QgV0tBcnJheUdldFNpemUoV0tBcnJheVJlZiBhcnJheVJlZikKIHsKLSAgICByZXR1
cm4gdG9XSyhhcnJheVJlZiktPnNpemUoKTsKKyAgICByZXR1cm4gdG9JbXBsKGFycmF5UmVmKS0+
c2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDZXJ0aWZpY2F0
ZUluZm8uY3BwIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8uY3BwCmlu
ZGV4IDk0ZGVkNzBjOTg2YjY2MjdkMTM5OWExMzdiODM2NjgzMGI1ZDQwMWYuLmM1YTNhZDlmY2Ni
NzNlYTQzNTdlNWFjMmFjNGE1YTdiYzkzOWEyMWYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQ2VydGlmaWNhdGVJbmZvLmNwcAorKysgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0NlcnRpZmljYXRlSW5mby5jcHAKQEAgLTMyLDUgKzMyLDUgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAogV0tUeXBlSUQgV0tDZXJ0aWZpY2F0ZUluZm9HZXRUeXBlSUQoKQogewotICAgIHJl
dHVybiB0b1JlZihXZWJDZXJ0aWZpY2F0ZUluZm86OkFQSVR5cGUpOworICAgIHJldHVybiB0b0FQ
SShXZWJDZXJ0aWZpY2F0ZUluZm86OkFQSVR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tEYXRhLmNwcCBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGF0YS5jcHAK
aW5kZXggMTE5NmE1NTIzMDhkNTM4ZDFjNDQ2YTQyZjI2NTJjMzkwY2I2ZjM2NS4uYWVmZTc5NTA2
NzExZDBhNDdmNWQxMzY2MzQwZDQ5YTM3ZTMxODY0OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tEYXRhLmNwcAorKysgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RhdGEuY3Bw
CkBAIC0zMiwyMSArMzIsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQg
V0tEYXRhR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9SZWYoV2ViRGF0YTo6QVBJVHlwZSk7
CisgICAgcmV0dXJuIHRvQVBJKFdlYkRhdGE6OkFQSVR5cGUpOwogfQogCiBXS0RhdGFSZWYgV0tE
YXRhQ3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBSZWZQdHI8V2ViRGF0YT4gZGF0YSA9IFdlYkRhdGE6OmNyZWF0ZShieXRlcywgc2l6ZSk7Ci0g
ICAgcmV0dXJuIHRvUmVmKGRhdGEucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJu
IHRvQVBJKGRhdGEucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CiB9CiAKIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIFdLRGF0YUdldEJ5dGVzKFdLRGF0YVJlZiBkYXRhUmVmKQogewotICAgIHJldHVybiB0
b1dLKGRhdGFSZWYpLT5ieXRlcygpOworICAgIHJldHVybiB0b0ltcGwoZGF0YVJlZiktPmJ5dGVz
KCk7CiB9CiAKIHNpemVfdCBXS0RhdGFHZXRTaXplKFdLRGF0YVJlZiBkYXRhUmVmKQogewotICAg
IHJldHVybiB0b1dLKGRhdGFSZWYpLT5zaXplKCk7CisgICAgcmV0dXJuIHRvSW1wbChkYXRhUmVm
KS0+c2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tEaWN0aW9u
YXJ5LmNwcCBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAKaW5kZXggMTgw
NzI5ZDI4Y2UwNzliMDRiNDZiZGUxNzM3MzFjOWMxMmFmNWUwNS4uNmIzMzZiZmMwNjNkMWM2Nzg2
MzQ4YmFmNmJmZTdkYjEwNDZkMTlmYiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tEaWN0aW9uYXJ5LmNwcAorKysgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnku
Y3BwCkBAIC0zMywyMSArMzMsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBl
SUQgV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9SZWYoSW1tdXRhYmxl
RGljdGlvbmFyeTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJKEltbXV0YWJsZURpY3Rpb25h
cnk6OkFQSVR5cGUpOwogfQogCiBXS1R5cGVSZWYgV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShX
S0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZiwgV0tTdHJpbmdSZWYga2V5KQogewotICAgIHJl
dHVybiB0b1dLKGRpY3Rpb25hcnlSZWYpLT5nZXQodG9XSyhrZXkpLT5zdHJpbmcoKSk7CisgICAg
cmV0dXJuIHRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+Z2V0KHRvSW1wbChrZXkpLT5zdHJpbmcoKSk7
CiB9CiAKIHNpemVfdCBXS0RpY3Rpb25hcnlHZXRTaXplKFdLRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5UmVmKQogewotICAgIHJldHVybiB0b1dLKGRpY3Rpb25hcnlSZWYpLT5zaXplKCk7CisgICAg
cmV0dXJuIHRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+c2l6ZSgpOwogfQogCiBXS0FycmF5UmVmIFdL
RGljdGlvbmFyeUNvcHlLZXlzKFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVmKQogewotICAg
IFJlZlB0cjxJbW11dGFibGVBcnJheT4ga2V5cyA9IHRvV0soZGljdGlvbmFyeVJlZiktPmtleXMo
KTsKLSAgICByZXR1cm4gdG9SZWYoa2V5cy5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICBS
ZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGtleXMgPSB0b0ltcGwoZGljdGlvbmFyeVJlZiktPmtleXMo
KTsKKyAgICByZXR1cm4gdG9BUEkoa2V5cy5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKIH0KZGlm
ZiAtLWdpdCBhL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRXJyb3IuY3BwIGIvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tFcnJvci5jcHAKaW5kZXggMmY0N2MzZWE4NjJkZTc4MGRiMjQ3MDEyNGNlNjE2
NjIxMWU2OWE2Zi4uYWE4NDMyYmUwMjc4MGZlNTEyZmZlNDliYjI2NTVhOGRlZjAxOTdhOSAxMDA2
NDQKLS0tIGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tFcnJvci5jcHAKKysrIGIvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tFcnJvci5jcHAKQEAgLTMyLDUgKzMyLDUgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogV0tUeXBlSUQgV0tFcnJvckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRv
UmVmKFdlYkVycm9yOjpBUElUeXBlKTsKKyAgICByZXR1cm4gdG9BUEkoV2ViRXJyb3I6OkFQSVR5
cGUpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXku
Y3BwIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuY3BwCmluZGV4IDlkMTIx
ZTA2NGVjM2U3YjM3ZTI5YTg0YmNkY2IwNzk5OTlmOTQxYWQuLjQ4ZjU1N2JlZDFhZjgyZTBjNWI3
MGEwZjQ0ZWU3YTRiN2U0OTdhNjkgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
TXV0YWJsZUFycmF5LmNwcAorKysgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS011dGFibGVBcnJh
eS5jcHAKQEAgLTMzLDE1ICszMywxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tNdXRh
YmxlQXJyYXlSZWYgV0tNdXRhYmxlQXJyYXlDcmVhdGUoKQogewogICAgIFJlZlB0cjxNdXRhYmxl
QXJyYXk+IGFycmF5ID0gTXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKLSAgICByZXR1cm4gdG9SZWYo
YXJyYXkucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGFycmF5LnJl
bGVhc2UoKS5yZWxlYXNlUmVmKCkpOwogfQogCiBib29sIFdLQXJyYXlJc011dGFibGUoV0tBcnJh
eVJlZiBhcnJheVJlZikKIHsKLSAgICByZXR1cm4gdG9XSyhhcnJheVJlZiktPmlzTXV0YWJsZSgp
OworICAgIHJldHVybiB0b0ltcGwoYXJyYXlSZWYpLT5pc011dGFibGUoKTsKIH0KIAogdm9pZCBX
S0FycmF5QXBwZW5kSXRlbShXS011dGFibGVBcnJheVJlZiBhcnJheVJlZiwgV0tUeXBlUmVmIGl0
ZW1SZWYpCiB7Ci0gICAgdG9XSyhhcnJheVJlZiktPmFwcGVuZCh0b1dLKGl0ZW1SZWYpKTsKKyAg
ICB0b0ltcGwoYXJyYXlSZWYpLT5hcHBlbmQodG9JbXBsKGl0ZW1SZWYpKTsKIH0KZGlmZiAtLWdp
dCBhL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwIGIvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAKaW5kZXggMjIyMjYwYzcwMGM0
ZWQyZGZkMmYwNmUzNzJlMzg0ZDQ0OGUzYjk1ZC4uZGY5ZjVhN2ZhNTViNDBkZTdhZDU3YjBhNjRl
Nzg1ZDU2ODg4NjU2MyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxl
RGljdGlvbmFyeS5jcHAKKysrIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlv
bmFyeS5jcHAKQEAgLTMzLDIwICszMywyMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogV0tN
dXRhYmxlRGljdGlvbmFyeVJlZiBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkKIHsKICAgICBS
ZWZQdHI8TXV0YWJsZURpY3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBNdXRhYmxlRGljdGlvbmFyeTo6
Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIHRvUmVmKGRpY3Rpb25hcnkucmVsZWFzZSgpLnJlbGVhc2VS
ZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGRpY3Rpb25hcnkucmVsZWFzZSgpLnJlbGVhc2VSZWYo
KSk7CiB9CiAKIGJvb2wgV0tEaWN0aW9uYXJ5SXNNdXRhYmxlKFdLRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5UmVmKQogewotICAgIHJldHVybiB0b1dLKGRpY3Rpb25hcnlSZWYpLT5pc011dGFibGUo
KTsKKyAgICByZXR1cm4gdG9JbXBsKGRpY3Rpb25hcnlSZWYpLT5pc011dGFibGUoKTsKIH0KIAog
Ym9vbCBXS0RpY3Rpb25hcnlBZGRJdGVtKFdLTXV0YWJsZURpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eVJlZiwgV0tTdHJpbmdSZWYga2V5UmVmLCBXS1R5cGVSZWYgaXRlbVJlZikKIHsKLSAgICByZXR1
cm4gdG9XSyhkaWN0aW9uYXJ5UmVmKS0+YWRkKHRvV0soa2V5UmVmKS0+c3RyaW5nKCksIHRvV0so
aXRlbVJlZikpOworICAgIHJldHVybiB0b0ltcGwoZGljdGlvbmFyeVJlZiktPmFkZCh0b0ltcGwo
a2V5UmVmKS0+c3RyaW5nKCksIHRvSW1wbChpdGVtUmVmKSk7CiB9CiAKIGJvb2wgV0tEaWN0aW9u
YXJ5U2V0SXRlbShXS011dGFibGVEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5n
UmVmIGtleVJlZiwgV0tUeXBlUmVmIGl0ZW1SZWYpCiB7Ci0gICAgcmV0dXJuIHRvV0soZGljdGlv
bmFyeVJlZiktPnNldCh0b1dLKGtleVJlZiktPnN0cmluZygpLCB0b1dLKGl0ZW1SZWYpKTsKKyAg
ICByZXR1cm4gdG9JbXBsKGRpY3Rpb25hcnlSZWYpLT5zZXQodG9JbXBsKGtleVJlZiktPnN0cmlu
ZygpLCB0b0ltcGwoaXRlbVJlZikpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tOdW1iZXIuY3BwIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCmluZGV4
IDc5N2RiNzkyM2MzYjkzZTU5ZWNmM2U3ZjkxNDk2NjcyOWQxODZjMjQuLjRhNDEzZTEwZWMyZGRk
NTcyZDQyOTU4OTY2MTUwMTJjMWMyODM3NjQgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLTnVtYmVyLmNwcAorKysgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS051bWJlci5jcHAK
QEAgLTMyLDQ4ICszMiw0OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJRCBX
S0Jvb2xlYW5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b1JlZihXZWJCb29sZWFuOjpBUElU
eXBlKTsKKyAgICByZXR1cm4gdG9BUEkoV2ViQm9vbGVhbjo6QVBJVHlwZSk7CiB9CiAKIFdLQm9v
bGVhblJlZiBXS0Jvb2xlYW5DcmVhdGUoYm9vbCB2YWx1ZSkKIHsKICAgICBSZWZQdHI8V2ViQm9v
bGVhbj4gYm9vbGVhbk9iamVjdCA9IFdlYkJvb2xlYW46OmNyZWF0ZSh2YWx1ZSk7Ci0gICAgcmV0
dXJuIHRvUmVmKGJvb2xlYW5PYmplY3QucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0
dXJuIHRvQVBJKGJvb2xlYW5PYmplY3QucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CiB9CiAKIGJv
b2wgV0tCb29sZWFuR2V0VmFsdWUoV0tCb29sZWFuUmVmIGJvb2xlYW5SZWYpCiB7Ci0gICAgcmV0
dXJuIHRvV0soYm9vbGVhblJlZiktPnZhbHVlKCk7CisgICAgcmV0dXJuIHRvSW1wbChib29sZWFu
UmVmKS0+dmFsdWUoKTsKIH0KIAogV0tUeXBlSUQgV0tEb3VibGVHZXRUeXBlSUQoKQogewotICAg
IHJldHVybiB0b1JlZihXZWJEb3VibGU6OkFQSVR5cGUpOworICAgIHJldHVybiB0b0FQSShXZWJE
b3VibGU6OkFQSVR5cGUpOwogfQogCiBXS0RvdWJsZVJlZiBXS0RvdWJsZUNyZWF0ZShkb3VibGUg
dmFsdWUpCiB7CiAgICAgUmVmUHRyPFdlYkRvdWJsZT4gZG91YmxlT2JqZWN0ID0gV2ViRG91Ymxl
OjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b1JlZihkb3VibGVPYmplY3QucmVsZWFzZSgp
LnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGRvdWJsZU9iamVjdC5yZWxlYXNlKCku
cmVsZWFzZVJlZigpKTsKIH0KIAogZG91YmxlIFdLRG91YmxlR2V0VmFsdWUoV0tEb3VibGVSZWYg
ZG91YmxlUmVmKQogewotICAgIHJldHVybiB0b1dLKGRvdWJsZVJlZiktPnZhbHVlKCk7CisgICAg
cmV0dXJuIHRvSW1wbChkb3VibGVSZWYpLT52YWx1ZSgpOwogfQogCiBXS1R5cGVJRCBXS1VJbnQ2
NEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKFdlYlVJbnQ2NDo6QVBJVHlwZSk7Cisg
ICAgcmV0dXJuIHRvQVBJKFdlYlVJbnQ2NDo6QVBJVHlwZSk7CiB9CiAKIFdLVUludDY0UmVmIFdL
VUludDY0Q3JlYXRlKHVpbnQ2NF90IHZhbHVlKQogewogICAgIFJlZlB0cjxXZWJVSW50NjQ+IHVp
bnQ2NE9iamVjdCA9IFdlYlVJbnQ2NDo6Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9SZWYo
dWludDY0T2JqZWN0LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh1
aW50NjRPYmplY3QucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CiB9CiAKIHVpbnQ2NF90IFdLVUlu
dDY0R2V0VmFsdWUoV0tVSW50NjRSZWYgdWludDY0UmVmKQogewotICAgIHJldHVybiB0b1dLKHVp
bnQ2NFJlZiktPnZhbHVlKCk7CisgICAgcmV0dXJuIHRvSW1wbCh1aW50NjRSZWYpLT52YWx1ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCmluZGV4IDQyOThlODU2MmY3ZjM5ZjA4Njg0MTZiYzc0NGUwMDYyODQ1ZDQyMzAuLmUzOTQw
YThmMWNhNjFhNDgwNjgzNjFmNzUxNTFlMjQ1N2NlNWU3NWEgMTAwNjQ0Ci0tLSBhL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTMyLDE2ICszMiwxNiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJRCBXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6QVBJVHlwZSk7CiB9CiAKIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVl
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHRvUmVmKHNlcmlhbGl6
ZWRWYWx1ZS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoc2VyaWFsaXpl
ZFZhbHVlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVlUmVmIFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2NyaXB0
VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7Ci0gICAgcmV0dXJuIHRvV0soc2NyaXB0VmFsdWVSZWYpLT5kZXNlcmlhbGl6ZShjb250ZXh0
UmVmLCBleGNlcHRpb24pOworICAgIHJldHVybiB0b0ltcGwoc2NyaXB0VmFsdWVSZWYpLT5kZXNl
cmlhbGl6ZShjb250ZXh0UmVmLCBleGNlcHRpb24pOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmggYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1No
YXJlZEFQSUNhc3QuaAppbmRleCBhYWY1ZmU0ZWJjNWMzYjU0MjMwZDk0ZWJlNDdhY2I5YzkyOGY5
NjA1Li4zMGY1Zjk2MjlmZDViY2ZmMzAxY2ZlYjk0ZmQxNDUyMWI4OGYzNzFlIDEwMDY0NAotLS0g
YS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIG9wZXJhdG9yIEFQSVR5cGUoKSB7IHJldHVybiB0b1JlZihtX2lt
cGwuZ2V0KCkpOyB9CisgICAgb3BlcmF0b3IgQVBJVHlwZSgpIHsgcmV0dXJuIHRvQVBJKG1faW1w
bC5nZXQoKSk7IH0KIAogcHJpdmF0ZToKICAgICBSZWZQdHI8SW1wbFR5cGU+IG1faW1wbDsKQEAg
LTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIC8qIE9wYXF1ZSB0eXBpbmcgY29udmVuaWVuY2UgbWV0
aG9kcyAqLwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHR5cGVuYW1lIEFQSVR5cGVJ
bmZvPFQ+OjpJbXBsVHlwZSB0b1dLKFQgdCkKK2lubGluZSB0eXBlbmFtZSBBUElUeXBlSW5mbzxU
Pjo6SW1wbFR5cGUgdG9JbXBsKFQgdCkKIHsKICAgICAvLyBBbiBleGFtcGxlIG9mIHRoZSBjb252
ZXJzaW9ucyB0aGF0IHRha2UgcGxhY2U6CiAgICAgLy8gY29uc3Qgc3RydWN0IE9wYXF1ZVdLQXJy
YXkqIC0+IGNvbnN0IHN0cnVjdCBPcGFxdWVXS0FycmF5IC0+IHN0cnVjdCBPcGFxdWVXS0FycmF5
IC0+IHN0cnVjdCBPcGFxdWVXS0FycmF5KiAtPiBJbW11dGFibGVBcnJheSoKQEAgLTEwMCwxNCAr
MTAwLDE0IEBAIGlubGluZSB0eXBlbmFtZSBBUElUeXBlSW5mbzxUPjo6SW1wbFR5cGUgdG9XSyhU
IHQpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdHlwZW5hbWUgSW1wbFR5cGVJ
bmZvPFQ+OjpBUElUeXBlIHRvUmVmKFQgdCkKK2lubGluZSB0eXBlbmFtZSBJbXBsVHlwZUluZm88
VD46OkFQSVR5cGUgdG9BUEkoVCB0KQogewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHR5
cGVuYW1lIEltcGxUeXBlSW5mbzxUPjo6QVBJVHlwZT4odCk7CiB9CiAKIC8qIFNwZWNpYWwgY2Fz
ZXMuICovCiAKLWlubGluZSBQcm94eWluZ1JlZlB0cjxXZWJTdHJpbmc+IHRvUmVmKFN0cmluZ0lt
cGwqIHN0cmluZykKK2lubGluZSBQcm94eWluZ1JlZlB0cjxXZWJTdHJpbmc+IHRvQVBJKFN0cmlu
Z0ltcGwqIHN0cmluZykKIHsKICAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nID8gc3RyaW5n
IDogU3RyaW5nSW1wbDo6ZW1wdHkoKTsKICAgICByZXR1cm4gUHJveHlpbmdSZWZQdHI8V2ViU3Ry
aW5nPihXZWJTdHJpbmc6OmNyZWF0ZShTdHJpbmcoaW1wbCkpKTsKQEAgLTExOSw0MiArMTE5LDQy
IEBAIGlubGluZSBQcm94eWluZ1JlZlB0cjxXZWJVUkw+IHRvVVJMUmVmKFN0cmluZ0ltcGwqIHN0
cmluZykKICAgICByZXR1cm4gUHJveHlpbmdSZWZQdHI8V2ViVVJMPihXZWJVUkw6OmNyZWF0ZShT
dHJpbmcoaW1wbCkpKTsKIH0KIAotaW5saW5lIFdLU3RyaW5nUmVmIHRvQ29waWVkUmVmKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoraW5saW5lIFdLU3RyaW5nUmVmIHRvQ29waWVkQVBJKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewogICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmcuaW1wbCgpID8g
c3RyaW5nLmltcGwoKSA6IFN0cmluZ0ltcGw6OmVtcHR5KCk7CiAgICAgUmVmUHRyPFdlYlN0cmlu
Zz4gd2ViU3RyaW5nID0gV2ViU3RyaW5nOjpjcmVhdGUoU3RyaW5nKGltcGwpKTsKLSAgICByZXR1
cm4gdG9SZWYod2ViU3RyaW5nLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0
b0FQSSh3ZWJTdHJpbmcucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CiB9CiAKLWlubGluZSBXS1VS
TFJlZiB0b0NvcGllZFVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKK2lubGluZSBXS1VSTFJl
ZiB0b0NvcGllZFVSTEFQSShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBTdHJpbmdJbXBs
KiBpbXBsID0gc3RyaW5nLmltcGwoKSA/IHN0cmluZy5pbXBsKCkgOiBTdHJpbmdJbXBsOjplbXB0
eSgpOwogICAgIFJlZlB0cjxXZWJVUkw+IHdlYlVSTCA9IFdlYlVSTDo6Y3JlYXRlKFN0cmluZyhp
bXBsKSk7Ci0gICAgcmV0dXJuIHRvUmVmKHdlYlVSTC5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsK
KyAgICByZXR1cm4gdG9BUEkod2ViVVJMLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOwogfQogCiBp
bmxpbmUgU3RyaW5nIHRvV1RGU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKIHsKICAgICBp
ZiAoIXN0cmluZ1JlZikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB0b1dL
KHN0cmluZ1JlZiktPnN0cmluZygpOworICAgIHJldHVybiB0b0ltcGwoc3RyaW5nUmVmKS0+c3Ry
aW5nKCk7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9XVEZTdHJpbmcoV0tVUkxSZWYgdXJsUmVmKQog
ewogICAgIGlmICghdXJsUmVmKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJu
IHRvV0sodXJsUmVmKS0+c3RyaW5nKCk7CisgICAgcmV0dXJuIHRvSW1wbCh1cmxSZWYpLT5zdHJp
bmcoKTsKIH0KIAogLyogRW51bSBjb252ZXJzaW9ucyAqLwogCi1pbmxpbmUgV0tUeXBlSUQgdG9S
ZWYoQVBJT2JqZWN0OjpUeXBlIHR5cGUpCitpbmxpbmUgV0tUeXBlSUQgdG9BUEkoQVBJT2JqZWN0
OjpUeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdLVHlwZUlEPih0eXBlKTsK
IH0KIAotaW5saW5lIFdLRXZlbnRNb2RpZmllcnMgdG9SZWYoV2ViRXZlbnQ6Ok1vZGlmaWVycyBt
b2RpZmllcnMpCitpbmxpbmUgV0tFdmVudE1vZGlmaWVycyB0b0FQSShXZWJFdmVudDo6TW9kaWZp
ZXJzIG1vZGlmaWVycykKIHsKICAgICBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzID0gMDsK
ICAgICBpZiAobW9kaWZpZXJzICYgV2ViRXZlbnQ6OlNoaWZ0S2V5KQpAQCAtMTY4LDcgKzE2OCw3
IEBAIGlubGluZSBXS0V2ZW50TW9kaWZpZXJzIHRvUmVmKFdlYkV2ZW50OjpNb2RpZmllcnMgbW9k
aWZpZXJzKQogICAgIHJldHVybiB3a01vZGlmaWVyczsKIH0KIAotaW5saW5lIFdLRXZlbnRNb3Vz
ZUJ1dHRvbiB0b1JlZihXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24pCitpbmxpbmUg
V0tFdmVudE1vdXNlQnV0dG9uIHRvQVBJKFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRv
bikKIHsKICAgICBXS0V2ZW50TW91c2VCdXR0b24gd2tNb3VzZUJ1dHRvbiA9IGtXS0V2ZW50TW91
c2VCdXR0b25Ob0J1dHRvbjsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
dHJpbmcuY3BwIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCmluZGV4IGJmNDg0
ZTI4ZGZiN2QzZDFiYTczYTQ0YTRmMDY4N2Y0M2JlY2Y2MzkuLjE0ZjQwZmFlNWI4ZDhhM2QxYTNl
MTNlYTdjZmQwZjU1NWVlNDM5NjAgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U3RyaW5nLmNwcAorKysgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKQEAgLTMy
LDQ3ICszMiw0NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJRCBXS1N0cmlu
Z0dldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKFdlYlN0cmluZzo6QVBJVHlwZSk7Cisg
ICAgcmV0dXJuIHRvQVBJKFdlYlN0cmluZzo6QVBJVHlwZSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKIHsKICAgICBS
ZWZQdHI8V2ViU3RyaW5nPiB3ZWJTdHJpbmcgPSBXZWJTdHJpbmc6OmNyZWF0ZUZyb21VVEY4U3Ry
aW5nKHN0cmluZyk7Ci0gICAgcmV0dXJuIHRvUmVmKHdlYlN0cmluZy5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2ViU3RyaW5nLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwog
fQogCiBib29sIFdLU3RyaW5nSXNFbXB0eShXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7Ci0gICAg
cmV0dXJuIHRvV0soc3RyaW5nUmVmKS0+aXNFbXB0eSgpOworICAgIHJldHVybiB0b0ltcGwoc3Ry
aW5nUmVmKS0+aXNFbXB0eSgpOwogfQogCiBzaXplX3QgV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKIHsKLSAgICByZXR1cm4gdG9XSyhzdHJp
bmdSZWYpLT5tYXhpbXVtVVRGOENTdHJpbmdTaXplKCk7CisgICAgcmV0dXJuIHRvSW1wbChzdHJp
bmdSZWYpLT5tYXhpbXVtVVRGOENTdHJpbmdTaXplKCk7CiB9CiAKIHNpemVfdCBXS1N0cmluZ0dl
dFVURjhDU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY2hhciogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSkKIHsKLSAgICByZXR1cm4gdG9XSyhzdHJpbmdSZWYpLT5nZXRVVEY4Q1N0cmlu
ZyhidWZmZXIsIGJ1ZmZlclNpemUpOworICAgIHJldHVybiB0b0ltcGwoc3RyaW5nUmVmKS0+Z2V0
VVRGOENTdHJpbmcoYnVmZmVyLCBidWZmZXJTaXplKTsKIH0KIAogYm9vbCBXS1N0cmluZ0lzRXF1
YWwoV0tTdHJpbmdSZWYgYVJlZiwgV0tTdHJpbmdSZWYgYlJlZikKIHsKLSAgICByZXR1cm4gdG9X
SyhhUmVmKS0+ZXF1YWwodG9XSyhiUmVmKSk7CisgICAgcmV0dXJuIHRvSW1wbChhUmVmKS0+ZXF1
YWwodG9JbXBsKGJSZWYpKTsKIH0KIAogYm9vbCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KFdLU3RyaW5nUmVmIGFSZWYsIGNvbnN0IGNoYXIqIGIpCiB7Ci0gICAgcmV0dXJuIHRvV0soYVJl
ZiktPmVxdWFsVG9VVEY4U3RyaW5nKGIpOworICAgIHJldHVybiB0b0ltcGwoYVJlZiktPmVxdWFs
VG9VVEY4U3RyaW5nKGIpOwogfQogCiBXS1N0cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0
cmluZyhKU1N0cmluZ1JlZiBqc1N0cmluZ1JlZikKIHsKICAgICBSZWZQdHI8V2ViU3RyaW5nPiB3
ZWJTdHJpbmcgPSBXZWJTdHJpbmc6OmNyZWF0ZShqc1N0cmluZ1JlZik7Ci0gICAgcmV0dXJuIHRv
UmVmKHdlYlN0cmluZy5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod2Vi
U3RyaW5nLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBKU1N0cmluZ1JlZiBXS1N0cmluZ0Nv
cHlKU1N0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJuIHRvV0soc3Ry
aW5nUmVmKS0+Y3JlYXRlSlNTdHJpbmcoKTsKKyAgICByZXR1cm4gdG9JbXBsKHN0cmluZ1JlZikt
PmNyZWF0ZUpTU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1R5cGUuY3BwIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tUeXBlLmNwcAppbmRleCAwMGEzZDUy
MmNjNjZlNmU3ZmM3ZjRkYTFkOWEyYzhlMGQxZWY0NDg5Li5hNDk5NzM3NjhiZDcwZjQ5NWZjY2Mz
ZTE0NWQ2OWY0MjQxZTI0YjI3IDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1R5
cGUuY3BwCisrKyBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tHZXRUeXBlSUQoV0tU
eXBlUmVmIHR5cGVSZWYpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKHN0YXRpY19jYXN0PEFQSU9iamVj
dCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KHR5cGVSZWYpKS0+dHlwZSgpKTsKKyAgICByZXR1cm4gdG9B
UEkoc3RhdGljX2Nhc3Q8QVBJT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4odHlwZVJlZikpLT50
eXBlKCkpOwogfQogCiBXS1R5cGVSZWYgV0tSZXRhaW4oV0tUeXBlUmVmIHR5cGVSZWYpCmRpZmYg
LS1naXQgYS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAgYi9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1VSTC5jcHAKaW5kZXggYjUyNTgzMzIxNGE3NzQ0MzU0YTRlZDFlNmI1N2JjZDZkYWJi
NGJiMy4uMDE3NjIyM2UzMDM2OWU3MjkwMzI1ZGM2MjI1OWMxOTExMWFiODc4ZiAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCisrKyBiL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLVVJMLmNwcApAQCAtMzEsNSArMzEsNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CiBXS1R5cGVJRCBXS1VSTEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKFdlYlVSTDo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYlVSTDo6QVBJVHlwZSk7CiB9CmRpZmYgLS1n
aXQgYS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwIGIvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAppbmRleCBkYzA3NzMwYzZhYTM2ZjA2MGQ5NDNiZjMx
ZTRjYTZlMGFkZmZhOGRmLi4wNjA2MjdiZjRhZmY0NzhjOWZlMDkzZDkxMzYxYWUzN2ExOTg0NzZj
IDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCisrKyBi
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKQEAgLTMyLDUgKzMyLDUgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tVUkxSZXF1ZXN0R2V0VHlwZUlE
KCkKIHsKLSAgICByZXR1cm4gdG9SZWYoV2ViVVJMUmVxdWVzdDo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIHRvQVBJKFdlYlVSTFJlcXVlc3Q6OkFQSVR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1VSTFJlc3BvbnNlLmNwcAppbmRleCAyODVjMTI3MTY5MGI3Y2IzOWYzZTAxZGUyOTFhYTFmZTg5
ZjE2MTYzLi4xMjUzN2JkNGQ0NjQ3Mjk0MDIxNTBiNTY3MTdhZjk1ZWE0ZmI4ZDZiIDEwMDY0NAot
LS0gYS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcAorKysgYi9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtMzIsNiArMzIsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJRCBXS1VSTFJlc3BvbnNlR2V0VHlwZUlEKCkKIHsK
LSAgICByZXR1cm4gdG9SZWYoV2ViVVJMUmVzcG9uc2U6OkFQSVR5cGUpOworICAgIHJldHVybiB0
b0FQSShXZWJVUkxSZXNwb25zZTo6QVBJVHlwZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIv
U2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YuY3BwIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Yv
V0tTdHJpbmdDRi5jcHAKaW5kZXggMWJiM2I2OTJmMzNiNDFjZmFkZjU1YjVjMGQzNWNhNjc3Yjg0
ZmU4OS4uYjg5MTEwZTEwYmMxZDA4ZmY1ZGEwZDAzYjY3ODlkZTllYmY5ODgyYSAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5jcHAKKysrIGIvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5jcHAKQEAgLTM0LDE0ICszNCwxNCBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmco
Q0ZTdHJpbmdSZWYgY2ZTdHJpbmcpCiB7CiAgICAgU3RyaW5nIHN0cmluZyhjZlN0cmluZyk7Ci0g
ICAgcmV0dXJuIHRvQ29waWVkUmVmKHN0cmluZyk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHN0
cmluZyk7CiB9CiAKIENGU3RyaW5nUmVmIFdLU3RyaW5nQ29weUNGU3RyaW5nKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvclJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQogewotICAgIEFTU0VSVCgh
dG9XSyhzdHJpbmdSZWYpLT5zdHJpbmcoKS5pc051bGwoKSk7CisgICAgQVNTRVJUKCF0b0ltcGwo
c3RyaW5nUmVmKS0+c3RyaW5nKCkuaXNOdWxsKCkpOwogCiAgICAgLy8gTk9URTogVGhpcyBkb2Vz
IG5vdCB1c2UgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKSBzaW5jZSB0aGF0IGZ1bmN0aW9u
CiAgICAgLy8gZXhwZWN0cyB0byBiZSBjYWxsZWQgb24gdGhlIHRocmVhZCBydW5uaW5nIFdlYkNv
cmUuCi0gICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYWxsb2NhdG9yUmVm
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPih0b1dLKHN0cmluZ1JlZiktPnN0cmlu
ZygpLmNoYXJhY3RlcnMoKSksIHRvV0soc3RyaW5nUmVmKS0+c3RyaW5nKCkubGVuZ3RoKCkpOwor
ICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGFsbG9jYXRvclJlZiwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4odG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygp
LmNoYXJhY3RlcnMoKSksIHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5sZW5ndGgoKSk7CiB9
CmRpZmYgLS1naXQgYS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcCBiL1dlYktp
dDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCmluZGV4IDNmNGNmNTEzY2I2MDA2OWRmZjJi
NDFlZDMyMmMyNWNkMDRmZDdlNzEuLmE0NjI3Y2UzM2IzODk0NjMzOTI5YjdmNDg4N2FhNjJmMjhm
YWNlNTEgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCisr
KyBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCkBAIC0zOCwxMiArMzgsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0aENGVVJM
KENGVVJMUmVmIGNmVVJMKQogewogICAgIFN0cmluZyB1cmxTdHJpbmcoQ0ZVUkxHZXRTdHJpbmco
Y2ZVUkwpKTsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxSZWYodXJsU3RyaW5nKTsKKyAgICByZXR1
cm4gdG9Db3BpZWRVUkxBUEkodXJsU3RyaW5nKTsKIH0KIAogQ0ZVUkxSZWYgV0tVUkxDb3B5Q0ZV
UkwoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yUmVmLCBXS1VSTFJlZiBVUkxSZWYpCiB7Ci0gICAg
QVNTRVJUKCF0b1dLKFVSTFJlZiktPnN0cmluZygpLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIXRv
SW1wbChVUkxSZWYpLT5zdHJpbmcoKS5pc051bGwoKSk7CiAKICAgICAvLyBXZSBmaXJzdCBjcmVh
dGUgYSBDU3RyaW5nIGFuZCB0aGVuIGNyZWF0ZSB0aGUgQ0ZVUkwgZnJvbSBpdC4gVGhpcyB3aWxs
IGVuc3VyZSB0aGF0IHRoZSBDRlVSTCBpcyBzdG9yZWQgaW4gCiAgICAgLy8gVVRGLTggd2hpY2gg
dXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBlY3Qu
CkBAIC01Miw3ICs1Miw3IEBAIENGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENGQWxsb2NhdG9yUmVm
IGFsbG9jYXRvclJlZiwgV0tVUkxSZWYgVVJMUmVmKQogICAgIC8vIG1ham9yIGRpZmZlcm5jZSBi
ZWluZyB0aGF0IEtVUkwgZG9lcyBub3QgZG8gYSBVVEYtOCBjb252ZXJzaW9uIGFuZCBpbnN0ZWFk
IGNob3BzIG9mZiB0aGUgaGlnaCBiaXRzIG9mIHRoZSBVVEYtMTYKICAgICAvLyBjaGFyYWN0ZXIg
c2VxdWVuY2UuCiAKLSAgICBDU3RyaW5nIGJ1ZmZlciA9IHRvV0soVVJMUmVmKS0+c3RyaW5nKCku
dXRmOCgpOworICAgIENTdHJpbmcgYnVmZmVyID0gdG9JbXBsKFVSTFJlZiktPnN0cmluZygpLnV0
ZjgoKTsKICAgICBDRlVSTFJlZiByZXN1bHQgPSBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihi
dWZmZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIDAs
IHRydWUpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdF
bmNvZGluZ0lTT0xhdGluMSwgMCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9jZi9XS1VSTFJlcXVlc3RDRi5jcHAgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VS
TFJlcXVlc3RDRi5jcHAKaW5kZXggZDljMTI3ZjQ4OGVjMDc0MWQ3ZDBkZmI3ODI2YWI1MjExOWYz
OWY3Mi4uOThjODAxYWU3ZmFkODJhMmVlOWUxMzg0NDA1NDMxOGZlYjU0ZmNkYiAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxSZXF1ZXN0Q0YuY3BwCisrKyBiL1dlYktp
dDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMUmVxdWVzdENGLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBA
IFdLVVJMUmVxdWVzdFJlZiBXS1VSTFJlcXVlc3RDcmVhdGVXaXRoQ0ZVUkxSZXF1ZXN0KENGVVJM
UmVxdWVzdFJlZiB1cmxSZXF1ZXN0KQogewogICAgIENGVVJMUmVxdWVzdFJlZiBjb3BpZWRVUkxS
ZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxS
ZXF1ZXN0KTsKICAgICBSZWZQdHI8V2ViVVJMUmVxdWVzdD4gcmVxdWVzdCA9IFdlYlVSTFJlcXVl
c3Q6OmNyZWF0ZShjb3BpZWRVUkxSZXF1ZXN0KTsKLSAgICByZXR1cm4gdG9SZWYocmVxdWVzdC5y
ZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEkocmVxdWVzdC5yZWxlYXNl
KCkucmVsZWFzZVJlZigpKTsKIH0KIAogQ0ZVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENvcHlD
RlVSTFJlcXVlc3QoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1
ZXN0KQogewotICAgIHJldHVybiBDRlVSTFJlcXVlc3RDcmVhdGVDb3B5KGFsbG9jLCB0b1dLKHVy
bFJlcXVlc3QpLT5wbGF0Zm9ybVJlcXVlc3QoKSk7CisgICAgcmV0dXJuIENGVVJMUmVxdWVzdENy
ZWF0ZUNvcHkoYWxsb2MsIHRvSW1wbCh1cmxSZXF1ZXN0KS0+cGxhdGZvcm1SZXF1ZXN0KCkpOwog
fQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxSZXNwb25zZUNGLmNw
cCBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMUmVzcG9uc2VDRi5jcHAKaW5kZXggYjdi
NDZiM2FkNGIxNGQ0MTcxYjE5MTI3OWNmNjk0MzU1MGMwMzMzMy4uMzZkM2YwMDFiYmY5ZmZlMWQ5
OWFmZjY2YWNlYWMzNzFhZTBjOWM1OSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
Y2YvV0tVUkxSZXNwb25zZUNGLmNwcAorKysgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VS
TFJlc3BvbnNlQ0YuY3BwCkBAIC0zNCwxMCArMzQsMTAgQEAgV0tVUkxSZXNwb25zZVJlZiBXS1VS
TFJlc3BvbnNlQ3JlYXRlV2l0aENGVVJMUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiB1cmxSZXNw
b24KIHsKICAgICBDRlVSTFJlc3BvbnNlUmVmIGNvcGllZFVSTFJlc3BvbnNlID0gQ0ZVUkxSZXNw
b25zZUNyZWF0ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVzcG9uc2UpOwogICAgIFJl
ZlB0cjxXZWJVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBXZWJVUkxSZXNwb25zZTo6Y3JlYXRlKGNv
cGllZFVSTFJlc3BvbnNlKTsKLSAgICByZXR1cm4gdG9SZWYocmVzcG9uc2UucmVsZWFzZSgpLnJl
bGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHJlc3BvbnNlLnJlbGVhc2UoKS5yZWxlYXNl
UmVmKCkpOwogfQogCiBDRlVSTFJlc3BvbnNlUmVmIFdLVVJMUmVzcG9uc2VDb3B5Q0ZVUkxSZXNw
b25zZShDRkFsbG9jYXRvclJlZiBhbGxvYywgV0tVUkxSZXNwb25zZVJlZiB1cmxSZXNwb25zZSkK
IHsKLSAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZUNvcHkoYWxsb2MsIHRvV0sodXJsUmVz
cG9uc2UpLT5wbGF0Zm9ybVJlc3BvbnNlKCkpOworICAgIHJldHVybiBDRlVSTFJlc3BvbnNlQ3Jl
YXRlQ29weShhbGxvYywgdG9JbXBsKHVybFJlc3BvbnNlKS0+cGxhdGZvcm1SZXNwb25zZSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRpZmljYXRlSW5m
b01hYy5tbSBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5t
bQppbmRleCAxNDU1OTA5NjRlYjRjMGQ1OWQ3ZWRiMDEwMDA1MmUyZTUyM2E2NzdkLi43NjBkYmJk
N2UyYTQ4NWY3NDRlNWEzMGNjMmUyNjk4OWE1MGY2NmFlIDEwMDY0NAotLS0gYS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0KKysrIGIvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvbWFjL1dLQ2VydGlmaWNhdGVJbmZvTWFjLm1tCkBAIC0zMiw1ICszMiw1IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIENGQXJyYXlSZWYgV0tDZXJ0aWZpY2F0ZUluZm9HZXRQ
ZWVyQ2VydGlmaWNhdGVzKFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlSW5mb1JlZikK
IHsKLSAgICByZXR1cm4gdG9XSyhjZXJ0aWZpY2F0ZUluZm9SZWYpLT5wbGF0Zm9ybUNlcnRpZmlj
YXRlSW5mbygpLnBlZXJDZXJ0aWZpY2F0ZXMoKTsKKyAgICByZXR1cm4gdG9JbXBsKGNlcnRpZmlj
YXRlSW5mb1JlZiktPnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkucGVlckNlcnRpZmljYXRlcygp
OwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLVVJMUmVxdWVzdE5T
Lm1tIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLVVJMUmVxdWVzdE5TLm1tCmluZGV4IDY3
YTgyNTczM2M2ODZlMzEzNzY0NTExZjBhNDlhM2ZlNGRhMjE1YzAuLmY5ZTY5ZGRkODRmOGIxOGM3
MDgxZTE2ZWM4OGQ4ZjcyNWM2M2M5M2UgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvU2hhcmVkL0FQSS9j
L21hYy9XS1VSTFJlcXVlc3ROUy5tbQorKysgYi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tV
UkxSZXF1ZXN0TlMubW0KQEAgLTM0LDEwICszNCwxMCBAQCBXS1VSTFJlcXVlc3RSZWYgV0tVUkxS
ZXF1ZXN0Q3JlYXRlV2l0aE5TVVJMUmVxdWVzdChOU1VSTFJlcXVlc3QqIHVybFJlcXVlc3QpCiB7
CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gY29waWVkVVJMUmVxdWVzdChBZG9wdE5TLCBb
dXJsUmVxdWVzdCBjb3B5XSk7CiAgICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBX
ZWJVUkxSZXF1ZXN0OjpjcmVhdGUoY29waWVkVVJMUmVxdWVzdC5nZXQoKSk7Ci0gICAgcmV0dXJu
IHRvUmVmKHJlcXVlc3QucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KHJlcXVlc3QucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CiB9CiAKIE5TVVJMUmVxdWVzdCogV0tV
UkxSZXF1ZXN0Q29weU5TVVJMUmVxdWVzdChDRkFsbG9jYXRvclJlZiBhbGxvYywgV0tVUkxSZXF1
ZXN0UmVmIHVybFJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIFt0b1dLKHVybFJlcXVlc3QpLT5wbGF0
Zm9ybVJlcXVlc3QoKSBjb3B5XTsKKyAgICByZXR1cm4gW3RvSW1wbCh1cmxSZXF1ZXN0KS0+cGxh
dGZvcm1SZXF1ZXN0KCkgY29weV07CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9tYWMvV0tVUkxSZXNwb25zZU5TLm1tIGIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLVVJM
UmVzcG9uc2VOUy5tbQppbmRleCA2ZDZlNTEwYzliM2M0YWZhOGVlYjgyODYyODdiMWVmNDEyMzhk
ZWQwLi44MWFhYTZlMjJjOWFlYjZhMDBhZWEyMzhmZjM0YzI3MzIyOWFkMmZhIDEwMDY0NAotLS0g
YS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tVUkxSZXNwb25zZU5TLm1tCisrKyBiL1dlYktp
dDIvU2hhcmVkL0FQSS9jL21hYy9XS1VSTFJlc3BvbnNlTlMubW0KQEAgLTM0LDEwICszNCwxMCBA
QCBXS1VSTFJlc3BvbnNlUmVmIFdLVVJMUmVzcG9uc2VDcmVhdGVXaXRoTlNVUkxSZXNwb25zZShO
U1VSTFJlc3BvbnNlKiB1cmxSZXNwb25zZQogewogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNl
PiBjb3BpZWRVUkxSZXNwb25zZShBZG9wdE5TLCBbdXJsUmVzcG9uc2UgY29weV0pOwogICAgIFJl
ZlB0cjxXZWJVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBXZWJVUkxSZXNwb25zZTo6Y3JlYXRlKGNv
cGllZFVSTFJlc3BvbnNlLmdldCgpKTsKLSAgICByZXR1cm4gdG9SZWYocmVzcG9uc2UucmVsZWFz
ZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHJlc3BvbnNlLnJlbGVhc2UoKS5y
ZWxlYXNlUmVmKCkpOwogfQogCiBOU1VSTFJlc3BvbnNlKiBXS1VSTFJlc3BvbnNlQ29weU5TVVJM
UmVzcG9uc2UoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIFdLVVJMUmVzcG9uc2VSZWYgdXJsUmVzcG9u
c2UpCiB7Ci0gICAgcmV0dXJuIFt0b1dLKHVybFJlc3BvbnNlKS0+cGxhdGZvcm1SZXNwb25zZSgp
IGNvcHldOworICAgIHJldHVybiBbdG9JbXBsKHVybFJlc3BvbnNlKS0+cGxhdGZvcm1SZXNwb25z
ZSgpIGNvcHldOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvd2luL1dLQ2Vy
dGlmaWNhdGVJbmZvV2luLmNwcCBiL1dlYktpdDIvU2hhcmVkL0FQSS9jL3dpbi9XS0NlcnRpZmlj
YXRlSW5mb1dpbi5jcHAKaW5kZXggMTA0YTk2MjZkY2YyYTMzMGFlN2RmZmY4OTdkNDk5OTliZTEw
ZjFmZC4uMDRjNWEwYzdlYTU0YmY3MWJiMzUxMjZjY2MwZmUxODhmNGZhYjg1YyAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvd2luL1dLQ2VydGlmaWNhdGVJbmZvV2luLmNwcAorKysg
Yi9XZWJLaXQyL1NoYXJlZC9BUEkvYy93aW4vV0tDZXJ0aWZpY2F0ZUluZm9XaW4uY3BwCkBAIC0z
Miw1ICszMiw1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFBDQ0VSVF9DT05URVhUIFdL
Q2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVDb250ZXh0KFdLQ2VydGlmaWNhdGVJbmZvUmVm
IGNlcnRpZmljYXRlSW5mb1JlZikKIHsKLSAgICByZXR1cm4gdG9XSyhjZXJ0aWZpY2F0ZUluZm9S
ZWYpLT5wbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ29udGV4dCgpOworICAg
IHJldHVybiB0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+cGxhdGZvcm1DZXJ0aWZpY2F0ZUlu
Zm8oKS5jZXJ0aWZpY2F0ZUNvbnRleHQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgKaW5kZXggMGRjM2Y0ZGI4Y2YzYzEwY2M5MjQzNDQzNjgwYmRhNDdjZjlhY2RmNC4uZGRkYTRm
ZGNhZDRkM2ZhNmVlN2E0MTY1MDAzNWE3NjlmYjEyYjQxMyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVy
ZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogCiAvKiBFbnVtIGNvbnZlcnNpb25zICovCiAKLWlu
bGluZSBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdG9SZWYoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUg
dHlwZSkKK2lubGluZSBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgdG9BUEkoV2ViQ29yZTo6TmF2aWdh
dGlvblR5cGUgdHlwZSkKIHsKICAgICBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgd2tUeXBlID0ga1dL
RnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgaW5saW5lIENh
Y2hlTW9kZWwgdG9DYWNoZU1vZGVsKFdLQ2FjaGVNb2RlbCB3a0NhY2hlTW9kZWwpCiAgICAgcmV0
dXJuIENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIAotaW5saW5lIFdLQ2FjaGVNb2RlbCB0
b1JlZihDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCitpbmxpbmUgV0tDYWNoZU1vZGVsIHRvQVBJKENh
Y2hlTW9kZWwgY2FjaGVNb2RlbCkKIHsKICAgICBzd2l0Y2ggKGNhY2hlTW9kZWwpIHsKICAgICBj
YXNlIENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjoKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCAzZGNkODMwYmNkOWE4Yzc4NTllOGNmNDZkMmE0
NDViZGJhZGY2YmNiLi5jMjM0M2NhNTcyYmVjY2M4NmU5NGNjZWRjNzAyMWY0ZWRkZjllZDljIDEw
MDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5jcHAK
KysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0z
Miw0NSArMzIsNDUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tCYWNr
Rm9yd2FyZExpc3RHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b1JlZihXZWJCYWNrRm9yd2Fy
ZExpc3Q6OkFQSVR5cGUpOworICAgIHJldHVybiB0b0FQSShXZWJCYWNrRm9yd2FyZExpc3Q6OkFQ
SVR5cGUpOwogfQogCiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RH
ZXRDdXJyZW50SXRlbShXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmKQogewotICAgIHJldHVy
biB0b1JlZih0b1dLKGxpc3RSZWYpLT5jdXJyZW50SXRlbSgpKTsKKyAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGxpc3RSZWYpLT5jdXJyZW50SXRlbSgpKTsKIH0KIAogV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYg
bGlzdFJlZikKIHsKLSAgICByZXR1cm4gdG9SZWYodG9XSyhsaXN0UmVmKS0+YmFja0l0ZW0oKSk7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChsaXN0UmVmKS0+YmFja0l0ZW0oKSk7CiB9CiAKIFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRJdGVtKFdL
QmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKHRvV0sobGlz
dFJlZiktPmZvcndhcmRJdGVtKCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZikt
PmZvcndhcmRJdGVtKCkpOwogfQogCiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9y
d2FyZExpc3RHZXRJdGVtQXRJbmRleChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmLCBpbnQg
aW5kZXgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKHRvV0sobGlzdFJlZiktPml0ZW1BdEluZGV4KGlu
ZGV4KSk7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChsaXN0UmVmKS0+aXRlbUF0SW5kZXgoaW5k
ZXgpKTsKIH0KIAogdW5zaWduZWQgV0tCYWNrRm9yd2FyZExpc3RHZXRCYWNrTGlzdENvdW50KFdL
QmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvV0sobGlzdFJlZikt
PmJhY2tMaXN0Q291bnQoKTsKKyAgICByZXR1cm4gdG9JbXBsKGxpc3RSZWYpLT5iYWNrTGlzdENv
dW50KCk7CiB9CiAKIHVuc2lnbmVkIFdLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2FyZExpc3RDb3Vu
dChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmKQogewotICAgIHJldHVybiB0b1dLKGxpc3RS
ZWYpLT5mb3J3YXJkTGlzdENvdW50KCk7CisgICAgcmV0dXJuIHRvSW1wbChsaXN0UmVmKS0+Zm9y
d2FyZExpc3RDb3VudCgpOwogfQogCiBXS0FycmF5UmVmIFdLQmFja0ZvcndhcmRMaXN0Q29weUJh
Y2tMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYsIHVuc2lnbmVkIGxp
bWl0KQogewotICAgIHJldHVybiB0b1JlZih0b1dLKGxpc3RSZWYpLT5iYWNrTGlzdEFzSW1tdXRh
YmxlQXJyYXlXaXRoTGltaXQobGltaXQpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KHRvSW1wbChsaXN0UmVmKS0+YmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KGxpbWl0
KS5yZWxlYXNlUmVmKCkpOwogfQogCiBXS0FycmF5UmVmIFdLQmFja0ZvcndhcmRMaXN0Q29weUZv
cndhcmRMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYsIHVuc2lnbmVk
IGxpbWl0KQogewotICAgIHJldHVybiB0b1JlZih0b1dLKGxpc3RSZWYpLT5mb3J3YXJkTGlzdEFz
SW1tdXRhYmxlQXJyYXlXaXRoTGltaXQobGltaXQpLnJlbGVhc2VSZWYoKSk7ICAgIAorICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPmZvcndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdp
dGhMaW1pdChsaW1pdCkucmVsZWFzZVJlZigpKTsgICAgCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGIvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCAyOGZkYjcxMTEyNGZi
ZjMwY2FhYTIxNmJmNGU3M2JhY2I5MzRmNmUwLi5mY2MwYmIyNWZlNDAwMzExZThkZWU2NDY1NTNk
NjZkNWZkNmI2OWViIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAKQEAgLTMyLDIwICszMiwyMCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBXS1R5cGVJRCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1HZXRUeXBlSUQoKQogewotICAg
IHJldHVybiB0b1JlZihXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpBUElUeXBlKTsKKyAgICByZXR1
cm4gdG9BUEkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6QVBJVHlwZSk7CiB9CiAKIFdLVVJMUmVm
IFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlPcmlnaW5hbFVSTChXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYgaXRlbVJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxSZWYodG9XSyhpdGVtUmVm
KS0+b3JpZ2luYWxVUkwoKSk7CisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChpdGVt
UmVmKS0+b3JpZ2luYWxVUkwoKSk7CiB9CiAKIFdLVVJMUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRl
bUNvcHlVUkwoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCiB7Ci0gICAgcmV0dXJu
IHRvQ29waWVkVVJMUmVmKHRvV0soaXRlbVJlZiktPnVybCgpKTsKKyAgICByZXR1cm4gdG9Db3Bp
ZWRVUkxBUEkodG9JbXBsKGl0ZW1SZWYpLT51cmwoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQmFj
a0ZvcndhcmRMaXN0SXRlbUNvcHlUaXRsZShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJl
ZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRSZWYodG9XSyhpdGVtUmVmKS0+dGl0bGUoKSk7Cisg
ICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+dGl0bGUoKSk7CiB9CmRpZmYg
LS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCA5MTZjYjM4MTUyMGNmNjYxMDRiMjQw
YTUzYjIzODU3YWM1ODQ5OGM3Li5iNDBjNjVlZmI4MWVlMDkzM2VkMGQ5YmM5YjM2ZTM5MjEwOTA4
MGFhIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisr
KyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTM3LDg2ICszNyw4
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJRCBXS0NvbnRleHRHZXRUeXBl
SUQoKQogewotICAgIHJldHVybiB0b1JlZihXZWJDb250ZXh0OjpBUElUeXBlKTsKKyAgICByZXR1
cm4gdG9BUEkoV2ViQ29udGV4dDo6QVBJVHlwZSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS0NvbnRl
eHRDcmVhdGUoKQogewogICAgIFJlZlB0cjxXZWJDb250ZXh0PiBjb250ZXh0ID0gV2ViQ29udGV4
dDo6Y3JlYXRlKFN0cmluZygpKTsKLSAgICByZXR1cm4gdG9SZWYoY29udGV4dC5yZWxlYXNlKCku
cmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoY29udGV4dC5yZWxlYXNlKCkucmVsZWFz
ZVJlZigpKTsKIH0KIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1
bmRsZVBhdGgoV0tTdHJpbmdSZWYgcGF0aFJlZikKIHsKLSAgICBSZWZQdHI8V2ViQ29udGV4dD4g
Y29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZSh0b1dLKHBhdGhSZWYpLT5zdHJpbmcoKSk7Ci0g
ICAgcmV0dXJuIHRvUmVmKGNvbnRleHQucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgUmVm
UHRyPFdlYkNvbnRleHQ+IGNvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUodG9JbXBsKHBhdGhS
ZWYpLT5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHRvQVBJKGNvbnRleHQucmVsZWFzZSgpLnJlbGVh
c2VSZWYoKSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29u
dGV4dCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKFdlYkNvbnRleHQ6OnNoYXJlZFByb2Nlc3NDb250
ZXh0KCkpOworICAgIHJldHVybiB0b0FQSShXZWJDb250ZXh0OjpzaGFyZWRQcm9jZXNzQ29udGV4
dCgpKTsKIH0KIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dEdldFNoYXJlZFRocmVhZENvbnRleHQo
KQogewotICAgIHJldHVybiB0b1JlZihXZWJDb250ZXh0OjpzaGFyZWRUaHJlYWRDb250ZXh0KCkp
OworICAgIHJldHVybiB0b0FQSShXZWJDb250ZXh0OjpzaGFyZWRUaHJlYWRDb250ZXh0KCkpOwog
fQogCiB2b2lkIFdLQ29udGV4dFNldFByZWZlcmVuY2VzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHRvV0soY29udGV4dFJl
ZiktPnNldFByZWZlcmVuY2VzKHRvV0socHJlZmVyZW5jZXNSZWYpKTsKKyAgICB0b0ltcGwoY29u
dGV4dFJlZiktPnNldFByZWZlcmVuY2VzKHRvSW1wbChwcmVmZXJlbmNlc1JlZikpOwogfQogCiBX
S1ByZWZlcmVuY2VzUmVmIFdLQ29udGV4dEdldFByZWZlcmVuY2VzKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmKQogewotICAgIHJldHVybiB0b1JlZih0b1dLKGNvbnRleHRSZWYpLT5wcmVmZXJlbmNl
cygpKTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5wcmVmZXJlbmNlcygp
KTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQqIHdrQ2xp
ZW50KQogewogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAg
cmV0dXJuOwotICAgIHRvV0soY29udGV4dFJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUNs
aWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplSW5qZWN0
ZWRCdW5kbGVDbGllbnQod2tDbGllbnQpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlD
bGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGll
bnQqIHdrQ2xpZW50KQogewogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikK
ICAgICAgICAgcmV0dXJuOwotICAgIHRvV0soY29udGV4dFJlZiktPmluaXRpYWxpemVIaXN0b3J5
Q2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPmluaXRpYWxpemVIaXN0
b3J5Q2xpZW50KHdrQ2xpZW50KTsKIH0KIAogdm9pZCBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lUmVmLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHlSZWYpCiB7Ci0gICAgdG9XSyhjb250ZXh0UmVm
KS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKHRvV0sobWVzc2FnZU5hbWVSZWYpLT5zdHJp
bmcoKSwgdG9XSyhtZXNzYWdlQm9keVJlZikpOworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+cG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKHRvSW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygp
LCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRHZXRTdGF0aXN0
aWNzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0NvbnRleHRTdGF0aXN0aWNzKiBzdGF0aXN0
aWNzKQogewotICAgIHRvV0soY29udGV4dFJlZiktPmdldFN0YXRpc3RpY3Moc3RhdGlzdGljcyk7
CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5nZXRTdGF0aXN0aWNzKHN0YXRpc3RpY3MpOwogfQog
CiB2b2lkIFdLQ29udGV4dEFkZFZpc2l0ZWRMaW5rKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1N0cmluZ1JlZiB2aXNpdGVkVVJMKQogewotICAgIHRvV0soY29udGV4dFJlZiktPmFkZFZpc2l0
ZWRMaW5rKHRvV0sodmlzaXRlZFVSTCktPnN0cmluZygpKTsKKyAgICB0b0ltcGwoY29udGV4dFJl
ZiktPmFkZFZpc2l0ZWRMaW5rKHRvSW1wbCh2aXNpdGVkVVJMKS0+c3RyaW5nKCkpOwogfQogCiB2
b2lkIFdLQ29udGV4dFNldENhY2hlTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQ2Fj
aGVNb2RlbCBjYWNoZU1vZGVsKQogewotICAgIHRvV0soY29udGV4dFJlZiktPnNldENhY2hlTW9k
ZWwodG9DYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNl
dENhY2hlTW9kZWwodG9DYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsKIH0KIAogV0tDYWNoZU1vZGVs
IFdLQ29udGV4dEdldENhY2hlTW9kZWwoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAg
cmV0dXJuIHRvUmVmKHRvV0soY29udGV4dFJlZiktPmNhY2hlTW9kZWwoKSk7CisgICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+Y2FjaGVNb2RlbCgpKTsKIH0KIAogdm9pZCBfV0tD
b250ZXh0U2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLU3RyaW5nUmVmIHBsdWdpbnNEaXJlY3RvcnkpCiB7Ci0gICAgdG9XSyhjb250ZXh0UmVm
KS0+c2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkodG9XSyhwbHVnaW5zRGlyZWN0b3J5KS0+
c3RyaW5nKCkpOworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0QWRkaXRpb25hbFBsdWdpbnNE
aXJlY3RvcnkodG9JbXBsKHBsdWdpbnNEaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQg
X1dLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1N0cmluZ1JlZiB1cmxTY2hlbWUpCiB7Ci0gICAgdG9XSyhjb250ZXh0UmVm
KS0+cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQodG9XSyh1cmxTY2hlbWUpLT5zdHJp
bmcoKSk7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5yZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlE
b2N1bWVudCh0b0ltcGwodXJsU2NoZW1lKS0+c3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcCBiL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAKaW5kZXggOGI3
NDE4ODY2MjdkYjFjZjA1M2IzODQ2OTQ0ZTE4Y2IzYTUxZmRmZS4uYWU5ODgzMTJiNzZjMjNjMjU3
ZWY5ZWRlMzYyY2RkY2I2OTVkOTdiZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwCkBAIC0zMiwxMCArMzIsMTAgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVy
R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9SZWYoV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5OjpBUElUeXBlKTsKKyAgICByZXR1cm4gdG9BUEkoV2ViRm9ybVN1Ym1pc3Npb25MaXN0
ZW5lclByb3h5OjpBUElUeXBlKTsKIH0KIAogdm9pZCBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJD
b250aW51ZShXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJSZWYgc3VibWlzc2lvbkxpc3RlbmVyKQog
ewotICAgIHRvV0soc3VibWlzc2lvbkxpc3RlbmVyKS0+Y29udGludWVTdWJtaXNzaW9uKCk7Cisg
ICAgdG9JbXBsKHN1Ym1pc3Npb25MaXN0ZW5lciktPmNvbnRpbnVlU3VibWlzc2lvbigpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAgYi9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAppbmRleCA2NDIwZDIyMzU3OWYyNTFlMDY0ZjUz
ZDEzOGZkM2FiOGFlZDg1NDA1Li42N2Y3YThjN2U3YmYwZjQ0MmNlNGIwOTAzN2E5MGJjMWNhZjc0
NmEyIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAorKysg
Yi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcApAQCAtMzIsMTcgKzMyLDE3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLRnJhbWVHZXRUeXBlSUQoKQog
ewotICAgIHJldHVybiB0b1JlZihXZWJGcmFtZVByb3h5OjpBUElUeXBlKTsKKyAgICByZXR1cm4g
dG9BUEkoV2ViRnJhbWVQcm94eTo6QVBJVHlwZSk7CiB9CiAKIGJvb2wgV0tGcmFtZUlzTWFpbkZy
YW1lKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiB7Ci0gICAgcmV0dXJuIHRvV0soZnJhbWVSZWYpLT5p
c01haW5GcmFtZSgpOworICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgp
OwogfQogCiBXS0ZyYW1lTG9hZFN0YXRlIFdLRnJhbWVHZXRGcmFtZUxvYWRTdGF0ZShXS0ZyYW1l
UmVmIGZyYW1lUmVmKQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gdG9XSyhmcmFtZVJl
Zik7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSB0b0ltcGwoZnJhbWVSZWYpOwogICAgIHN3
aXRjaCAoZnJhbWUtPmxvYWRTdGF0ZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViRnJhbWVQcm94eTo6
TG9hZFN0YXRlUHJvdmlzaW9uYWw6CiAgICAgICAgICAgICByZXR1cm4ga1dLRnJhbWVMb2FkU3Rh
dGVQcm92aXNpb25hbDsKQEAgLTU4LDI1ICs1OCwyNSBAQCBXS0ZyYW1lTG9hZFN0YXRlIFdLRnJh
bWVHZXRGcmFtZUxvYWRTdGF0ZShXS0ZyYW1lUmVmIGZyYW1lUmVmKQogCiBXS1VSTFJlZiBXS0Zy
YW1lQ29weVByb3Zpc2lvbmFsVVJMKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvQ29waWVkVVJMUmVmKHRvV0soZnJhbWVSZWYpLT5wcm92aXNpb25hbFVSTCgpKTsKKyAgICBy
ZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGZyYW1lUmVmKS0+cHJvdmlzaW9uYWxVUkwoKSk7
CiB9CiAKIFdLVVJMUmVmIFdLRnJhbWVDb3B5VVJMKFdLRnJhbWVSZWYgZnJhbWVSZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvQ29waWVkVVJMUmVmKHRvV0soZnJhbWVSZWYpLT51cmwoKSk7CisgICAgcmV0
dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChmcmFtZVJlZiktPnVybCgpKTsKIH0KIAogV0tTdHJp
bmdSZWYgV0tGcmFtZUNvcHlNSU1FVHlwZShXS0ZyYW1lUmVmIGZyYW1lUmVmKQogewotICAgIHJl
dHVybiB0b0NvcGllZFJlZih0b1dLKGZyYW1lUmVmKS0+bWltZVR5cGUoKSk7CisgICAgcmV0dXJu
IHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPm1pbWVUeXBlKCkpOwogfQogCiBXS1BhZ2VS
ZWYgV0tGcmFtZUdldFBhZ2UoV0tGcmFtZVJlZiBmcmFtZVJlZikKIHsKLSAgICByZXR1cm4gdG9S
ZWYodG9XSyhmcmFtZVJlZiktPnBhZ2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChmcmFt
ZVJlZiktPnBhZ2UoKSk7CiB9CiAKIFdLQ2VydGlmaWNhdGVJbmZvUmVmIFdLRnJhbWVHZXRDZXJ0
aWZpY2F0ZUluZm8oV0tGcmFtZVJlZiBmcmFtZVJlZikKIHsKLSAgICByZXR1cm4gdG9SZWYodG9X
SyhmcmFtZVJlZiktPmNlcnRpZmljYXRlSW5mbygpKTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBs
KGZyYW1lUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcCBiL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggMmM3ODFkOTY1NWQ1NmUz
OWNlOTE4MTA3NGNmM2Q2MGEyMGJkNTRkMy4uZDQ0ZDBkMzZhYWE5MGVmOGVhZjk3ODkyNTBhZDY2
ODM0ZGEwNjc0OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBv
bGljeUxpc3RlbmVyLmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9s
aWN5TGlzdGVuZXIuY3BwCkBAIC0zMywyMCArMzMsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogV0tUeXBlSUQgV0tGcmFtZVBvbGljeUxpc3RlbmVyR2V0VHlwZUlEKCkKIHsKLSAgICBy
ZXR1cm4gdG9SZWYoV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpBUElUeXBlKTsKKyAgICBy
ZXR1cm4gdG9BUEkoV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpBUElUeXBlKTsKIH0KIAog
dm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBv
bGljeUxpc3RlbmVyUmVmKQogewotICAgIHRvV0socG9saWN5TGlzdGVuZXJSZWYpLT51c2UoKTsK
KyAgICB0b0ltcGwocG9saWN5TGlzdGVuZXJSZWYpLT51c2UoKTsKIH0KIAogdm9pZCBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJEb3dubG9hZChXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgcG9saWN5TGlz
dGVuZXJSZWYpCiB7Ci0gICAgdG9XSyhwb2xpY3lMaXN0ZW5lclJlZiktPmRvd25sb2FkKCk7Cisg
ICAgdG9JbXBsKHBvbGljeUxpc3RlbmVyUmVmKS0+ZG93bmxvYWQoKTsKIH0KIAogdm9pZCBXS0Zy
YW1lUG9saWN5TGlzdGVuZXJJZ25vcmUoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxp
c3RlbmVyUmVmKQogewotICAgIHRvV0socG9saWN5TGlzdGVuZXJSZWYpLT5pZ25vcmUoKTsKKyAg
ICB0b0ltcGwocG9saWN5TGlzdGVuZXJSZWYpLT5pZ25vcmUoKTsKIH0KZGlmZiAtLWdpdCBhL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuY3BwIGIvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAKaW5kZXggYTcxZDRjYjdlYTgxNmVjZWYw
OTYwZjg0MjMyMzRlYzQyZTYwYmYxMC4uOTBlYjE0MjRlZGZhN2NhZjYzZjI0ZTU2MWQ0Y2M1MDQ4
NjU1YWM0YiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9u
RGF0YS5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5j
cHAKQEAgLTMyLDE1ICszMiwxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJ
RCBXS05hdmlnYXRpb25EYXRhR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9SZWYoV2ViTmF2
aWdhdGlvbkRhdGE6OkFQSVR5cGUpOworICAgIHJldHVybiB0b0FQSShXZWJOYXZpZ2F0aW9uRGF0
YTo6QVBJVHlwZSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLTmF2aWdhdGlvbkRhdGFDb3B5VGl0bGUo
V0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YVJlZikKIHsKLSAgICByZXR1cm4gdG9D
b3BpZWRSZWYodG9XSyhuYXZpZ2F0aW9uRGF0YVJlZiktPnRpdGxlKCkpOworICAgIHJldHVybiB0
b0NvcGllZEFQSSh0b0ltcGwobmF2aWdhdGlvbkRhdGFSZWYpLT50aXRsZSgpKTsKIH0KIAogV0tV
UkxSZWYgV0tOYXZpZ2F0aW9uRGF0YUNvcHlVUkwoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0
aW9uRGF0YVJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxSZWYodG9XSyhuYXZpZ2F0aW9u
RGF0YVJlZiktPnVybCgpKTsKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKG5hdmln
YXRpb25EYXRhUmVmKS0+dXJsKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5k
ZXggN2YzMTZiYjVkYWFlNzhmMDg2YTE2YTcxYTEzNzVjNTJkNjE5ZjIyNy4uMjdkNzRlNmI0NDk2
ZjExMTdmMWMwNDkxMDU3N2QwNWMzNTExZDUzYiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCkBAIC0zOSwxODYgKzM5LDE4NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5
cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b1JlZihXZWJQYWdlUHJveHk6
OkFQSVR5cGUpOworICAgIHJldHVybiB0b0FQSShXZWJQYWdlUHJveHk6OkFQSVR5cGUpOwogfQog
CiBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShXS1BhZ2VSZWYgcGFn
ZVJlZikKIHsKLSAgICByZXR1cm4gdG9SZWYodG9XSyhwYWdlUmVmKS0+cGFnZU5hbWVzcGFjZSgp
KTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYpLT5wYWdlTmFtZXNwYWNlKCkpOwog
fQogCiB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIFVSTFJl
ZikKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5sb2FkVVJMKHRvV0soVVJMUmVmKS0+c3RyaW5nKCkp
OworICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZFVSTCh0b0ltcGwoVVJMUmVmKS0+c3RyaW5nKCkp
OwogfQogCiB2b2lkIFdLUGFnZUxvYWRVUkxSZXF1ZXN0KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VS
TFJlcXVlc3RSZWYgdXJsUmVxdWVzdFJlZikKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5sb2FkVVJM
UmVxdWVzdCh0b1dLKHVybFJlcXVlc3RSZWYpKTsgICAgCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5s
b2FkVVJMUmVxdWVzdCh0b0ltcGwodXJsUmVxdWVzdFJlZikpOyAgICAKIH0KIAogdm9pZCBXS1Bh
Z2VMb2FkSFRNTFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmlu
Z1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZikKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5sb2FkSFRN
TFN0cmluZyh0b1dURlN0cmluZyhodG1sU3RyaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJl
ZikpOyAgICAKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRIVE1MU3RyaW5nKHRvV1RGU3RyaW5n
KGh0bWxTdHJpbmdSZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSk7ICAgIAogfQogCiB2b2lk
IFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVm
IHBsYWluVGV4dFN0cmluZ1JlZikKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5sb2FkUGxhaW5UZXh0
U3RyaW5nKHRvV1RGU3RyaW5nKHBsYWluVGV4dFN0cmluZ1JlZikpOyAgICAKKyAgICB0b0ltcGwo
cGFnZVJlZiktPmxvYWRQbGFpblRleHRTdHJpbmcodG9XVEZTdHJpbmcocGxhaW5UZXh0U3RyaW5n
UmVmKSk7ICAgIAogfQogCiB2b2lkIFdLUGFnZVN0b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVm
KQogewotICAgIHRvV0socGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zdG9wTG9hZGluZygpOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZChXS1BhZ2VSZWYgcGFn
ZVJlZikKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5yZWxvYWQoZmFsc2UpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+cmVsb2FkKGZhbHNlKTsKIH0KIAogdm9pZCBXS1BhZ2VSZWxvYWRGcm9tT3JpZ2lu
KFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHRvV0socGFnZVJlZiktPnJlbG9hZCh0cnVlKTsK
KyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZCh0cnVlKTsKIH0KIAogYm9vbCBXS1BhZ2VUcnlD
bG9zZShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9XSyhwYWdlUmVmKS0+dHJ5
Q2xvc2UoKTsKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT50cnlDbG9zZSgpOwogfQogCiB2
b2lkIFdLUGFnZUNsb3NlKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHRvV0socGFnZVJlZikt
PmNsb3NlKCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5jbG9zZSgpOwogfQogCiBib29sIFdLUGFn
ZUlzQ2xvc2VkKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHJldHVybiB0b1dLKHBhZ2VSZWYp
LT5pc0Nsb3NlZCgpOworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmlzQ2xvc2VkKCk7CiB9
CiAKIHZvaWQgV0tQYWdlR29Gb3J3YXJkKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHRvV0so
cGFnZVJlZiktPmdvRm9yd2FyZCgpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Z29Gb3J3YXJkKCk7
CiB9CiAKIGJvb2wgV0tQYWdlQ2FuR29Gb3J3YXJkKFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAg
IHJldHVybiB0b1dLKHBhZ2VSZWYpLT5jYW5Hb0ZvcndhcmQoKTsKKyAgICByZXR1cm4gdG9JbXBs
KHBhZ2VSZWYpLT5jYW5Hb0ZvcndhcmQoKTsKIH0KIAogdm9pZCBXS1BhZ2VHb0JhY2soV0tQYWdl
UmVmIHBhZ2VSZWYpCiB7Ci0gICAgdG9XSyhwYWdlUmVmKS0+Z29CYWNrKCk7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5nb0JhY2soKTsKIH0KIAogYm9vbCBXS1BhZ2VDYW5Hb0JhY2soV0tQYWdlUmVm
IHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvV0socGFnZVJlZiktPmNhbkdvQmFjaygpOworICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPmNhbkdvQmFjaygpOwogfQogCiB2b2lkIFdLUGFnZUdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1SZWYgaXRlbVJlZikKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5nb1RvQmFja0ZvcndhcmRJ
dGVtKHRvV0soaXRlbVJlZikpOworICAgIHRvSW1wbChwYWdlUmVmKS0+Z29Ub0JhY2tGb3J3YXJk
SXRlbSh0b0ltcGwoaXRlbVJlZikpOwogfQogCiBXS0JhY2tGb3J3YXJkTGlzdFJlZiBXS1BhZ2VH
ZXRCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvUmVm
KHRvV0socGFnZVJlZiktPmJhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICByZXR1cm4gdG9BUEkodG9J
bXBsKHBhZ2VSZWYpLT5iYWNrRm9yd2FyZExpc3QoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUGFn
ZUNvcHlUaXRsZShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRSZWYo
dG9XSyhwYWdlUmVmKS0+cGFnZVRpdGxlKCkpOworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0lt
cGwocGFnZVJlZiktPnBhZ2VUaXRsZSgpKTsKIH0KIAogV0tGcmFtZVJlZiBXS1BhZ2VHZXRNYWlu
RnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKHRvV0socGFnZVJl
ZiktPm1haW5GcmFtZSgpKTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYpLT5tYWlu
RnJhbWUoKSk7CiB9CiAKIGRvdWJsZSBXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhXS1BhZ2VS
ZWYgcGFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9XSyhwYWdlUmVmKS0+ZXN0aW1hdGVkUHJvZ3Jl
c3MoKTsKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5lc3RpbWF0ZWRQcm9ncmVzcygpOwog
fQogCiB2b2lkIFdLUGFnZVNldEN1c3RvbVVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tT
dHJpbmdSZWYgdXNlckFnZW50UmVmKQogewotICAgIHRvV0socGFnZVJlZiktPnNldEN1c3RvbVVz
ZXJBZ2VudCh0b1dLKHVzZXJBZ2VudFJlZiktPnN0cmluZygpKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnNldEN1c3RvbVVzZXJBZ2VudCh0b0ltcGwodXNlckFnZW50UmVmKS0+c3RyaW5nKCkpOwog
fQogCiB2b2lkIFdLUGFnZVRlcm1pbmF0ZShXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICB0b1dL
KHBhZ2VSZWYpLT50ZXJtaW5hdGVQcm9jZXNzKCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT50ZXJt
aW5hdGVQcm9jZXNzKCk7CiB9CiAKIFdLRGF0YVJlZiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlKFdL
UGFnZVJlZiBwYWdlUmVmKQogewotICAgIFJlZlB0cjxXZWJEYXRhPiBzdGF0ZSA9IHRvV0socGFn
ZVJlZiktPnNlc3Npb25TdGF0ZSgpOwotICAgIHJldHVybiB0b1JlZihzdGF0ZS5yZWxlYXNlKCku
cmVsZWFzZVJlZigpKTsKKyAgICBSZWZQdHI8V2ViRGF0YT4gc3RhdGUgPSB0b0ltcGwocGFnZVJl
ZiktPnNlc3Npb25TdGF0ZSgpOworICAgIHJldHVybiB0b0FQSShzdGF0ZS5yZWxlYXNlKCkucmVs
ZWFzZVJlZigpKTsKIH0KIAogdm9pZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIHNlc3Npb25TdGF0ZURhdGEpCiB7Ci0gICAgdG9XSyhw
YWdlUmVmKS0+cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUodG9XSyhzZXNzaW9uU3RhdGVEYXRhKSk7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZSh0b0ltcGwoc2Vz
c2lvblN0YXRlRGF0YSkpOwogfQogCiBkb3VibGUgV0tQYWdlR2V0VGV4dFpvb21GYWN0b3IoV0tQ
YWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvV0socGFnZVJlZiktPnRleHRab29tRmFj
dG9yKCk7CisgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+dGV4dFpvb21GYWN0b3IoKTsKIH0K
IAogdm9pZCBXS1BhZ2VTZXRUZXh0Wm9vbUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZiwgZG91Ymxl
IHpvb21GYWN0b3IpCiB7Ci0gICAgdG9XSyhwYWdlUmVmKS0+c2V0VGV4dFpvb21GYWN0b3Ioem9v
bUZhY3Rvcik7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFj
dG9yKTsKIH0KIAogZG91YmxlIFdLUGFnZUdldFBhZ2Vab29tRmFjdG9yKFdLUGFnZVJlZiBwYWdl
UmVmKQogewotICAgIHJldHVybiB0b1dLKHBhZ2VSZWYpLT5wYWdlWm9vbUZhY3RvcigpOworICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPnBhZ2Vab29tRmFjdG9yKCk7CiB9CiAKIHZvaWQgV0tQ
YWdlU2V0UGFnZVpvb21GYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSB6b29tRmFjdG9y
KQogewotICAgIHRvV0socGFnZVJlZiktPnNldFBhZ2Vab29tRmFjdG9yKHpvb21GYWN0b3IpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZVpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAK
IHZvaWQgV0tQYWdlU2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhXS1BhZ2VSZWYgcGFnZVJlZiwg
ZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpCiB7Ci0gICAgdG9X
SyhwYWdlUmVmKS0+c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhwYWdlWm9vbUZhY3RvciwgdGV4
dFpvb21GYWN0b3IpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UGFnZUFuZFRleHRab29tRmFj
dG9ycyhwYWdlWm9vbUZhY3RvciwgdGV4dFpvb21GYWN0b3IpOwogfQogCiB2b2lkIFdLUGFnZVNl
dFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNs
aWVudCogd2tDbGllbnQpCiB7CiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9u
KQogICAgICAgICByZXR1cm47Ci0gICAgdG9XSyhwYWdlUmVmKS0+aW5pdGlhbGl6ZUxvYWRlckNs
aWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplTG9hZGVyQ2xp
ZW50KHdrQ2xpZW50KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnQqIHdrQ2xpZW50KQogewogICAg
IGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJuOwotICAg
IHRvV0socGFnZVJlZiktPmluaXRpYWxpemVQb2xpY3lDbGllbnQod2tDbGllbnQpOworICAgIHRv
SW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZVBvbGljeUNsaWVudCh3a0NsaWVudCk7CiB9CiAKIHZv
aWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZUZvcm1DbGllbnQqIHdrQ2xpZW50KQogewogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+
dmVyc2lvbikKICAgICAgICAgcmV0dXJuOwotICAgIHRvV0socGFnZVJlZiktPmluaXRpYWxpemVG
b3JtQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVGb3Jt
Q2xpZW50KHdrQ2xpZW50KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50ICogd2tDbGllbnQpCiB7CiAgICAgaWYg
KHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQogICAgICAgICByZXR1cm47Ci0gICAgdG9X
SyhwYWdlUmVmKS0+aW5pdGlhbGl6ZVVJQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPmluaXRpYWxpemVVSUNsaWVudCh3a0NsaWVudCk7CiB9CiAKIHZvaWQgV0tQYWdlUnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3Jp
cHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFj
aykKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9XSyhz
Y3JpcHRSZWYpLT5zdHJpbmcoKSwgU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjazo6Y3JlYXRlKGNv
bnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUodG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBTY3JpcHRSZXR1cm5WYWx1ZUNh
bGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogI2lmZGVmIF9fQkxPQ0tT
X18KQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsCiAKIHZvaWQgV0tQ
YWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIHZv
aWQqIGNvbnRleHQsIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rp
b24gY2FsbGJhY2spCiB7Ci0gICAgdG9XSyhwYWdlUmVmKS0+Z2V0UmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24oUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6
Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbkNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAogI2lmZGVmIF9f
QkxPQ0tTX18KQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uX2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZVJlbmRlclRyZQogCiB2
b2lkIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVm
IGZyYW1lUmVmLCB2b2lkICpjb250ZXh0LCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZUZ1bmN0aW9u
IGNhbGxiYWNrKQogewotICAgIHRvV0socGFnZVJlZiktPmdldFNvdXJjZUZvckZyYW1lKHRvV0so
ZnJhbWVSZWYpLCBGcmFtZVNvdXJjZUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2sp
KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmdldFNvdXJjZUZvckZyYW1lKHRvSW1wbChmcmFtZVJl
ZiksIEZyYW1lU291cmNlQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOwogfQog
CiAjaWZkZWYgX19CTE9DS1NfXwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlTmFtZXNwYWNlLmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVz
cGFjZS5jcHAKaW5kZXggYzVlMjFmZTM2N2I4ZTVhMjc4MzVmODQ1MjZmYzY3MWQxOGNiOTVmMi4u
ZTU4N2E1ZmUxMDJkNWJhZDNmZGE0ZDA2Yjk4YmMxZjczOGJkNGZhMCAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcAorKysgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3BhY2UuY3BwCkBAIC0zNCwxNSArMzQsMTUgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBlSUQgV0tQYWdlTmFtZXNwYWNlR2V0VHlwZUlE
KCkKIHsKLSAgICByZXR1cm4gdG9SZWYoV2ViUGFnZU5hbWVzcGFjZTo6QVBJVHlwZSk7CisgICAg
cmV0dXJuIHRvQVBJKFdlYlBhZ2VOYW1lc3BhY2U6OkFQSVR5cGUpOwogfQogCiBXS1BhZ2VOYW1l
c3BhY2VSZWYgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKFdLQ29udGV4dFJlZiBvd25lckNvbnRleHRS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKHRvV0sob3duZXJDb250ZXh0UmVmKS0+Y3JlYXRlUGFn
ZU5hbWVzcGFjZSgpKTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKG93bmVyQ29udGV4dFJlZikt
PmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS1BhZ2VOYW1lc3Bh
Y2VHZXRDb250ZXh0KFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlUmVmKQogewotICAg
IHJldHVybiB0b1JlZih0b1dLKHBhZ2VOYW1lc3BhY2VSZWYpLT5jb250ZXh0KCkpOworICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwocGFnZU5hbWVzcGFjZVJlZiktPmNvbnRleHQoKSk7CiB9CmRpZmYg
LS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IDc3NDQ1NWU1NjYwOTkz
ZWU5ODEwZGYyODE5NTkwN2Y1YzQ1NGNjOTguLjM0NzE2ZTkyNWNhNTE3YzMwZmJkODE2MTdkMWJm
NGU0YTM3OTk5NzggMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
CkBAIC0zNCwxNDcgKzM0LDE0NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJ
RCBXS1ByZWZlcmVuY2VzR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9SZWYoV2ViUHJlZmVy
ZW5jZXM6OkFQSVR5cGUpOworICAgIHJldHVybiB0b0FQSShXZWJQcmVmZXJlbmNlczo6QVBJVHlw
ZSk7CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZSgpCiB7CiAgICAg
UmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVh
dGUoKTsKLSAgICByZXR1cm4gdG9SZWYocHJlZmVyZW5jZXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CisgICAgcmV0dXJuIHRvQVBJKHByZWZlcmVuY2VzLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQog
CiBXS1ByZWZlcmVuY2VzUmVmIFdLUHJlZmVyZW5jZXNDcmVhdGVDb3B5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJl
bmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjb3B5KHRvV0socHJlZmVyZW5jZXNSZWYpKTsKLSAgICBy
ZXR1cm4gdG9SZWYocHJlZmVyZW5jZXMucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgUmVm
UHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjb3B5KHRv
SW1wbChwcmVmZXJlbmNlc1JlZikpOworICAgIHJldHVybiB0b0FQSShwcmVmZXJlbmNlcy5yZWxl
YXNlKCkucmVsZWFzZVJlZigpKTsKIH0KIAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlw
dEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBqYXZhU2NyaXB0
RW5hYmxlZCkKIHsKLSAgICB0b1dLKHByZWZlcmVuY2VzUmVmKS0+c2V0SmF2YVNjcmlwdEVuYWJs
ZWQoamF2YVNjcmlwdEVuYWJsZWQpOworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEph
dmFTY3JpcHRFbmFibGVkKGphdmFTY3JpcHRFbmFibGVkKTsKIH0KIAogYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0SmF2YVNjcmlwdEVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikK
IHsKLSAgICByZXR1cm4gdG9XSyhwcmVmZXJlbmNlc1JlZiktPmphdmFTY3JpcHRFbmFibGVkKCk7
CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmphdmFTY3JpcHRFbmFibGVkKCk7
CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eSkKIHsKLSAgICB0b1dLKHByZWZlcmVuY2VzUmVmKS0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7
CiB9CiAKIGJvb2wgV0tQcmVmZXJlbmNlc0dldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b1dLKHByZWZlcmVu
Y2VzUmVmKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCk7CisgICAgcmV0dXJuIHRvSW1wbChw
cmVmZXJlbmNlc1JlZiktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpOwogfQogCiB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQpCiB7Ci0gICAgdG9XSyhwcmVmZXJlbmNlc1JlZiktPnNldE9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZChvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOworICAg
IHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZChvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOwogfQogCiBib29sIFdLUHJl
ZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZikKIHsKLSAgICByZXR1cm4gdG9XSyhwcmVmZXJlbmNlc1JlZikt
Pm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpOworICAgIHJldHVybiB0b0ltcGwo
cHJlZmVyZW5jZXNSZWYpLT5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKTsKIH0K
IAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGxvY2FsU3RvcmFnZUVuYWJsZWQpCiB7Ci0gICAgdG9X
SyhwcmVmZXJlbmNlc1JlZiktPnNldExvY2FsU3RvcmFnZUVuYWJsZWQobG9jYWxTdG9yYWdlRW5h
YmxlZCk7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0TG9jYWxTdG9yYWdlRW5hYmxl
ZChsb2NhbFN0b3JhZ2VFbmFibGVkKTsKIH0KIAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0TG9jYWxT
dG9yYWdlRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJl
dHVybiB0b1dLKHByZWZlcmVuY2VzUmVmKS0+bG9jYWxTdG9yYWdlRW5hYmxlZCgpOworICAgIHJl
dHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7CiB9CiAK
IHZvaWQgV0tQcmVmZXJlbmNlc1NldFhTU0F1ZGl0b3JFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgeHNzQXVkaXRvckVuYWJsZWQpCiB7Ci0gICAgdG9XSyhwcmVm
ZXJlbmNlc1JlZiktPnNldFhTU0F1ZGl0b3JFbmFibGVkKHhzc0F1ZGl0b3JFbmFibGVkKTsKKyAg
ICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRYU1NBdWRpdG9yRW5hYmxlZCh4c3NBdWRpdG9y
RW5hYmxlZCk7CiB9CiAKIGJvb2wgV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiB7Ci0gICAgcmV0dXJuIHRvV0socHJlZmVy
ZW5jZXNSZWYpLT54c3NBdWRpdG9yRW5hYmxlZCgpOworICAgIHJldHVybiB0b0ltcGwocHJlZmVy
ZW5jZXNSZWYpLT54c3NBdWRpdG9yRW5hYmxlZCgpOwogfQogCiB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IGJvb2wgZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCkKIHsKLSAgICB0b1dLKHByZWZlcmVuY2VzUmVm
KS0+c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChmcmFtZUZsYXR0ZW5pbmdFbmFibGVkKTsKKyAg
ICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQpOwogfQogCiBib29sIFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvV0socHJlZmVyZW5jZXNSZWYpLT5mcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCk7CisgICAg
cmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKTsK
IH0KIAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0UGx1Z2luc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBwbHVnaW5zRW5hYmxlZCkKIHsKLSAgICB0b1dLKHByZWZl
cmVuY2VzUmVmKS0+c2V0UGx1Z2luc0VuYWJsZWQocGx1Z2luc0VuYWJsZWQpOworICAgIHRvSW1w
bChwcmVmZXJlbmNlc1JlZiktPnNldFBsdWdpbnNFbmFibGVkKHBsdWdpbnNFbmFibGVkKTsKIH0K
IAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZikKIHsKLSAgICByZXR1cm4gdG9XSyhwcmVmZXJlbmNlc1JlZiktPnBsdWdp
bnNFbmFibGVkKCk7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnBsdWdpbnNF
bmFibGVkKCk7CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0YW5kYXJkRm9udEZhbWlseShX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiBmYW1pbHkpCiB7Ci0g
ICAgdG9XSyhwcmVmZXJlbmNlc1JlZiktPnNldFN0YW5kYXJkRm9udEZhbWlseSh0b1dURlN0cmlu
ZyhmYW1pbHkpKTsKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRTdGFuZGFyZEZvbnRG
YW1pbHkodG9XVEZTdHJpbmcoZmFtaWx5KSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5j
ZXNDb3B5U3RhbmRhcmRGb250RmFtaWx5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYp
CiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkUmVmKHRvV0socHJlZmVyZW5jZXNSZWYpLT5zdGFuZGFy
ZEZvbnRGYW1pbHkoKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnN0YW5kYXJkRm9udEZhbWlseSgpKTsKIH0KIAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0
Rml4ZWRGb250RmFtaWx5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIGZhbWlseSkKIHsKLSAgICB0b1dLKHByZWZlcmVuY2VzUmVmKS0+c2V0Rml4ZWRGb250RmFt
aWx5KHRvV1RGU3RyaW5nKGZhbWlseSkpOworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNl
dEZpeGVkRm9udEZhbWlseSh0b1dURlN0cmluZyhmYW1pbHkpKTsKIH0KIAogV0tTdHJpbmdSZWYg
V0tQcmVmZXJlbmNlc0NvcHlGaXhlZEZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlc1JlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRSZWYodG9XSyhwcmVmZXJlbmNlc1JlZikt
PmZpeGVkRm9udEZhbWlseSgpKTsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+Zml4ZWRGb250RmFtaWx5KCkpOwogfQogCiB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRTZXJpZkZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJp
bmdSZWYgZmFtaWx5KQogewotICAgIHRvV0socHJlZmVyZW5jZXNSZWYpLT5zZXRTZXJpZkZvbnRG
YW1pbHkodG9XVEZTdHJpbmcoZmFtaWx5KSk7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c2V0U2VyaWZGb250RmFtaWx5KHRvV1RGU3RyaW5nKGZhbWlseSkpOwogfQogCiBXS1N0cmluZ1Jl
ZiBXS1ByZWZlcmVuY2VzQ29weVNlcmlmRm9udEZhbWlseShXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZFJlZih0b1dLKHByZWZlcmVuY2VzUmVm
KS0+c2VyaWZGb250RmFtaWx5KCkpOworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocHJl
ZmVyZW5jZXNSZWYpLT5zZXJpZkZvbnRGYW1pbHkoKSk7CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNl
c1NldFNhbnNTZXJpZkZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
V0tTdHJpbmdSZWYgZmFtaWx5KQogewotICAgIHRvV0socHJlZmVyZW5jZXNSZWYpLT5zZXRTYW5z
U2VyaWZGb250RmFtaWx5KHRvV1RGU3RyaW5nKGZhbWlseSkpOworICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkodG9XVEZTdHJpbmcoZmFtaWx5KSk7CiB9
CiAKIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNDb3B5U2Fuc1NlcmlmRm9udEZhbWlseShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZFJlZih0
b1dLKHByZWZlcmVuY2VzUmVmKS0+c2Fuc1NlcmlmRm9udEZhbWlseSgpKTsKKyAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2Fuc1NlcmlmRm9udEZhbWlseSgp
KTsKIH0KIAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgZmFtaWx5KQogewotICAgIHRvV0so
cHJlZmVyZW5jZXNSZWYpLT5zZXRDdXJzaXZlRm9udEZhbWlseSh0b1dURlN0cmluZyhmYW1pbHkp
KTsKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRDdXJzaXZlRm9udEZhbWlseSh0b1dU
RlN0cmluZyhmYW1pbHkpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tQcmVmZXJlbmNlc0NvcHlDdXJz
aXZlRm9udEZhbWlseShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJl
dHVybiB0b0NvcGllZFJlZih0b1dLKHByZWZlcmVuY2VzUmVmKS0+Y3Vyc2l2ZUZvbnRGYW1pbHko
KSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmN1cnNp
dmVGb250RmFtaWx5KCkpOwogfQogCiB2b2lkIFdLUHJlZmVyZW5jZXNTZXRGYW50YXN5Rm9udEZh
bWlseShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiBmYW1pbHkp
CiB7Ci0gICAgdG9XSyhwcmVmZXJlbmNlc1JlZiktPnNldEZhbnRhc3lGb250RmFtaWx5KHRvV1RG
U3RyaW5nKGZhbWlseSkpOworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEZhbnRhc3lG
b250RmFtaWx5KHRvV1RGU3RyaW5nKGZhbWlseSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1ByZWZl
cmVuY2VzQ29weUZhbnRhc3lGb250RmFtaWx5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkUmVmKHRvV0socHJlZmVyZW5jZXNSZWYpLT5mYW50
YXN5Rm9udEZhbWlseSgpKTsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+ZmFudGFzeUZvbnRGYW1pbHkoKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5jcHAKaW5kZXggMTU3MDU5ZDI1MzFiNTlkYzQ4
MDE5YzFiOWFkYmYzYmM5YjdhOWQzZS4uMGJmZDA5YzIzNjFhNDE4ZjgwZjYyNjc5YTNkZDM2MjZl
NzdhOGQwNSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEZvbnRT
bW9vdGhpbmdMZXZlbChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS0ZvbnRTCiAg
ICAgICAgICAgICBsZXZlbCA9IEZvbnRTbW9vdGhpbmdMZXZlbE1lZGl1bTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICB0b1dLKHByZWZlcmVuY2VzUmVmKS0+c2V0Rm9udFNtb290aGlu
Z0xldmVsKGxldmVsKTsKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRGb250U21vb3Ro
aW5nTGV2ZWwobGV2ZWwpOwogfQogCiBXS0ZvbnRTbW9vdGhpbmdMZXZlbCBXS1ByZWZlcmVuY2Vz
R2V0Rm9udFNtb290aGluZ0xldmVsKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCiB7
Ci0gICAgRm9udFNtb290aGluZ0xldmVsIGxldmVsID0gdG9XSyhwcmVmZXJlbmNlc1JlZiktPmZv
bnRTbW9vdGhpbmdMZXZlbCgpOworICAgIEZvbnRTbW9vdGhpbmdMZXZlbCBsZXZlbCA9IHRvSW1w
bChwcmVmZXJlbmNlc1JlZiktPmZvbnRTbW9vdGhpbmdMZXZlbCgpOwogICAgIHN3aXRjaCAobGV2
ZWwpIHsKICAgICAgICAgY2FzZSBGb250U21vb3RoaW5nTGV2ZWxOb1N1YnBpeGVsQW50aUFsaWFz
aW5nOgogICAgICAgICAgICAgcmV0dXJuIGtXS0ZvbnRTbW9vdGhpbmdMZXZlbE5vU3VicGl4ZWxB
bnRpQWxpYXNpbmc7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tD
b250ZXh0V2luLmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS0NvbnRleHRXaW4u
Y3BwCmluZGV4IDY1ZjA2MTEwNDkwMjM3Y2IzNzcyY2EzMzVjZGY0ODFjMmVmM2UxNjAuLjk5MDZj
ODE2MTcxOTEyMjAxZDRhNmYyYjRmZmI5MWU4YWJiYjdlNzggMTAwNjQ0Ci0tLSBhL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL3dpbi9XS0NvbnRleHRXaW4uY3BwCisrKyBiL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL3dpbi9XS0NvbnRleHRXaW4uY3BwCkBAIC0zMyw1ICszMyw1IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKIHZvaWQgV0tDb250ZXh0U2V0U2hvdWxkUGFpbnROYXRpdmVDb250
cm9scyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCBiKQogewotICAgIHRvV0soY29udGV4
dFJlZiktPnNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoYik7CisgICAgdG9JbXBsKGNvbnRl
eHRSZWYpLT5zZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGIpOwogfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy93aW4vV0tWaWV3LmNwcAppbmRleCA2MGE5ZGY0MDMzN2IxNDNiNDJhNzQ4Nzg0ZjFi
MjgxMGVhOGEzNGM0Li5kMWE5ZDk5YzE4ZmM4ODRkMzFjMmFmZGY0ZDliOGRhNGJmYWZjNmQ4IDEw
MDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAorKysgYi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcApAQCAtMzIsMzYgKzMyLDM2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLVmlld0dldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvUmVmKEFQSU9iamVjdDo6VHlwZVZpZXcpOworICAgIHJldHVybiB0b0FQ
SShBUElPYmplY3Q6OlR5cGVWaWV3KTsKIH0KIAogV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShSRUNU
IHJlY3QsIFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlUmVmLCBIV05EIGhvc3RXaW5k
b3cpCiB7Ci0gICAgUmVmUHRyPFdlYlZpZXc+IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGUocmVjdCwg
dG9XSyhwYWdlTmFtZXNwYWNlUmVmKSwgaG9zdFdpbmRvdyk7Ci0gICAgcmV0dXJuIHRvUmVmKHZp
ZXcucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgUmVmUHRyPFdlYlZpZXc+IHZpZXcgPSBX
ZWJWaWV3OjpjcmVhdGUocmVjdCwgdG9JbXBsKHBhZ2VOYW1lc3BhY2VSZWYpLCBob3N0V2luZG93
KTsKKyAgICByZXR1cm4gdG9BUEkodmlldy5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKIH0KIAog
SFdORCBXS1ZpZXdHZXRXaW5kb3coV0tWaWV3UmVmIHZpZXdSZWYpCiB7Ci0gICAgcmV0dXJuIHRv
V0sodmlld1JlZiktPndpbmRvdygpOworICAgIHJldHVybiB0b0ltcGwodmlld1JlZiktPndpbmRv
dygpOwogfQogCiBIV05EIFdLVmlld0dldEhvc3RXaW5kb3coV0tWaWV3UmVmIHZpZXdSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvV0sodmlld1JlZiktPmhvc3RXaW5kb3coKTsKKyAgICByZXR1cm4gdG9J
bXBsKHZpZXdSZWYpLT5ob3N0V2luZG93KCk7CiB9CiAKIFdLUGFnZVJlZiBXS1ZpZXdHZXRQYWdl
KFdLVmlld1JlZiB2aWV3UmVmKQogewotICAgIHJldHVybiB0b1JlZih0b1dLKHZpZXdSZWYpLT5w
YWdlKCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwodmlld1JlZiktPnBhZ2UoKSk7CiB9CiAK
IHZvaWQgV0tWaWV3U2V0SG9zdFdpbmRvdyhXS1ZpZXdSZWYgdmlld1JlZiwgSFdORCBob3N0V2lu
ZG93KQogewotICAgIHRvV0sodmlld1JlZiktPnNldEhvc3RXaW5kb3coaG9zdFdpbmRvdyk7Cisg
ICAgdG9JbXBsKHZpZXdSZWYpLT5zZXRIb3N0V2luZG93KGhvc3RXaW5kb3cpOwogfQogCiB2b2lk
IFdLVmlld1dpbmRvd0FuY2VzdHJ5RGlkQ2hhbmdlKFdLVmlld1JlZiB2aWV3UmVmKQogewotICAg
IHRvV0sodmlld1JlZiktPndpbmRvd0FuY2VzdHJ5RGlkQ2hhbmdlKCk7CisgICAgdG9JbXBsKHZp
ZXdSZWYpLT53aW5kb3dBbmNlc3RyeURpZENoYW5nZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5jcHAKaW5kZXggZWMzOTFjZjU2NDRmZmUzODc5Y2FiOTNl
Yjc2YzA1NjNmY2YyMDU3Ni4uZDUzYzQxZTY5MDBmOWFkMTE5MTU2YzU0NWJiYTE3YTA4OGU3YWVi
YiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmNw
cAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwCkBAIC0z
Nyw2ICszNyw2IEBAIFFTdHJpbmcgV0tTdHJpbmdDb3B5UVN0cmluZyhXS1N0cmluZ1JlZiBzdHJp
bmdSZWYpCiB7CiAgICAgaWYgKCFzdHJpbmdSZWYpCiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7
Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZyA9IHRvV0soc3RyaW5nUmVmKS0+c3RyaW5n
KCk7CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZyA9IHRvSW1wbChzdHJpbmdSZWYpLT5z
dHJpbmcoKTsKICAgICByZXR1cm4gUVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFy
Kj4oc3RyaW5nLmNoYXJhY3RlcnMoKSksIHN0cmluZy5sZW5ndGgoKSk7CiB9CmRpZmYgLS1naXQg
YS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIGIvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmNwcAppbmRleCA3M2IwMDQ4YjhlNmI3M2Q0ZjFjMzg2
NDNhYTNjYmUzNzMwMGRmNjE3Li43NDM4YmFkNDAxNWZhNzFiMjM2YjZhZGMxYTFmNWQ5MGFkNjY1
MjA0IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3Bw
CisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAKQEAgLTM3LDYg
KzM3LDYgQEAgUVVybCBXS1VSTENvcHlRVXJsKFdLVVJMUmVmIHVybFJlZikKIHsKICAgICBpZiAo
IXVybFJlZikKICAgICAgICAgcmV0dXJuIFFVcmwoKTsKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
c3RyaW5nID0gdG9XSyh1cmxSZWYpLT5zdHJpbmcoKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYg
c3RyaW5nID0gdG9JbXBsKHVybFJlZiktPnN0cmluZygpOwogICAgIHJldHVybiBRVXJsKFFTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHN0cmluZy5jaGFyYWN0ZXJzKCkpLCBz
dHJpbmcubGVuZ3RoKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvUGFnZUNsaWVudEltcGwubW0gYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCmluZGV4IGJlZTQ2NzIyOWVmY2Y4NDc3YTM2MWQ3NDg0NzBjYjc2NDc0YzY5NzEu
LjU0ZjBiMWUxNTI2N2M5YTUyOGI0OGIwM2VlNTAyOGQyZDUyMWE2NGQgMTAwNjQ0Ci0tLSBhL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtOTMsNyArOTMsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogTlNTdHJpbmcqIG5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHN0cmluZy5pbXBsKCkgPyBIYXJkQXV0
b3JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdG9SZWYoc3RyaW5nLmltcGwoKSkpKSA6
IEAiIjsKKyAgICByZXR1cm4gc3RyaW5nLmltcGwoKSA/IEhhcmRBdXRvcmVsZWFzZShXS1N0cmlu
Z0NvcHlDRlN0cmluZygwLCB0b0FQSShzdHJpbmcuaW1wbCgpKSkpIDogQCIiOwogfQogCiBQYXNz
T3duUHRyPFBhZ2VDbGllbnRJbXBsPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKFdLVmlldyogd2tW
aWV3KQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCA3YmE5MjhlZmZlOTc1MTdj
M2VmZTUyMDc3YzFmMDI1Y2I0MzU1NTE2Li4wYzJlMGY4MDM3ZDRjY2FkZjZhNzZmNzZlZWQ0ZjFh
YmZkMTVkMjAzIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTA2LDcgKzEw
Niw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVm
OihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEg
YWxsb2NdIGluaXRdOwogCiAgICAgX2RhdGEtPl9wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZShzZWxmKTsKLSAgICBfZGF0YS0+X3BhZ2UgPSB0b1dLKHBhZ2VOYW1lc3BhY2VSZWYp
LT5jcmVhdGVXZWJQYWdlKCk7CisgICAgX2RhdGEtPl9wYWdlID0gdG9JbXBsKHBhZ2VOYW1lc3Bh
Y2VSZWYpLT5jcmVhdGVXZWJQYWdlKCk7CiAgICAgX2RhdGEtPl9wYWdlLT5zZXRQYWdlQ2xpZW50
KF9kYXRhLT5fcGFnZUNsaWVudC5nZXQoKSk7CiAgICAgX2RhdGEtPl9wYWdlLT5zZXREcmF3aW5n
QXJlYShDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6Y3JlYXRlKHNlbGYpKTsKICAgICBf
ZGF0YS0+X3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKEludFNpemUoZnJhbWUuc2l6ZSkpOwpAQCAt
MTIxLDcgKzEyMSw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFt
ZXNwYWNlUmVmOihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzCiAtIChpZClpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWUKIHsKICAgICBXZWJDb250ZXh0KiBjb250ZXh0ID0gV2ViQ29udGV4
dDo6c2hhcmVkUHJvY2Vzc0NvbnRleHQoKTsKLSAgICBzZWxmID0gW3NlbGYgaW5pdFdpdGhGcmFt
ZTpmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOnRvUmVmKGNvbnRleHQtPmNyZWF0ZVBhZ2VOYW1lc3Bh
Y2UoKSldOworICAgIHNlbGYgPSBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHBhZ2VOYW1lc3Bh
Y2VSZWY6dG9BUEkoY29udGV4dC0+Y3JlYXRlUGFnZU5hbWVzcGFjZSgpKV07CiAgICAgaWYgKCFz
ZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0xMzgsNyArMTM4LDcgQEAgLSAodm9pZClk
ZWFsbG9jCiAKIC0gKFdLUGFnZVJlZilwYWdlUmVmCiB7Ci0gICAgcmV0dXJuIHRvUmVmKF9kYXRh
LT5fcGFnZS5nZXQoKSk7CisgICAgcmV0dXJuIHRvQVBJKF9kYXRhLT5fcGFnZS5nZXQoKSk7CiB9
CiAKIC0gKEJPT0wpYWNjZXB0c0ZpcnN0UmVzcG9uZGVyCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
Q2xpZW50SW1wbC5jcHAKaW5kZXggYzI5Y2VkOTI4Njk3NTBhZGQ2OWJiYTE4MTFhM2I1OGJlMTdm
NWYzNS4uODc5NzQ5NTEzYmIxMmNkNDllODBjNmMwYTk2ZjQxZDQ2M2FlZjljMyAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L0NsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9DbGllbnRJbXBsLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIHF0
X3drX2RpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmIHVzZQogewogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIFdlYkZyYW1lUHJveHkqIHdrZnJhbWUgPSB0b1dLKGZyYW1l
KTsKKyAgICBXZWJGcmFtZVByb3h5KiB3a2ZyYW1lID0gdG9JbXBsKGZyYW1lKTsKICAgICBRU3Ry
aW5nIHVybFN0cih3a2ZyYW1lLT51cmwoKSk7CiAgICAgUVVybCBxVXJsID0gdXJsU3RyOwogICAg
IGVtaXQgdG9RV0tQYWdlKGNsaWVudEluZm8pLT51cmxDaGFuZ2VkKHFVcmwpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwIGIvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2UuY3BwCmluZGV4IDY0NGZmMWY2MjhmYjk3NGU1Njg5NWE0YzViNmYw
NjVmNDU2MWRlZTYuLmEyYWJkNjU0NTZkMGNiNzMxZjNkNmVlNzA1NGY4NmNjNzA0YWU5NWEgMTAw
NjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAorKysgYi9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUVdLUGFn
ZVByaXZhdGU6OlFXS1BhZ2VQcml2YXRlKFFXS1BhZ2UqIHFxLCBXS1BhZ2VOYW1lc3BhY2VSZWYg
bmFtZXNwYWNlUmVmKQogICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwog
CiAgICAgbWVtc2V0KGFjdGlvbnMsIDAsIHNpemVvZihhY3Rpb25zKSk7Ci0gICAgcGFnZSA9IHRv
V0sobmFtZXNwYWNlUmVmKS0+Y3JlYXRlV2ViUGFnZSgpOworICAgIHBhZ2UgPSB0b0ltcGwobmFt
ZXNwYWNlUmVmKS0+Y3JlYXRlV2ViUGFnZSgpOwogICAgIHBhZ2UtPnNldFBhZ2VDbGllbnQodGhp
cyk7CiAgICAgcGFnZU5hbWVzcGFjZVJlZiA9IG5hbWVzcGFjZVJlZjsKIH0KQEAgLTM2NCw3ICsz
NjQsNyBAQCB2b2lkIFFXS1BhZ2U6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2KQogCiBXS1Bh
Z2VSZWYgUVdLUGFnZTo6cGFnZVJlZigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvUmVmKGQtPnBh
Z2UuZ2V0KCkpOworICAgIHJldHVybiB0b0FQSShkLT5wYWdlLmdldCgpKTsKIH0KIAogUVdLUHJl
ZmVyZW5jZXMqIFFXS1BhZ2U6OnByZWZlcmVuY2VzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYktp
dDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJp
Y0NhbGxiYWNrLmgKaW5kZXggMDRhMTg2Y2M2ODZmNGYyZmExNmU2NWUwMGUwZjc3ZTM2NGM3Zjhk
Ny4uZjdiZWZlNTQ0ZjA2ZWRjNTc1MWFmOTRiNzY2NGY4ZmQ3MmY2NzZhMiAxMDA2NDQKLS0tIGEv
V2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VuZXJpY0NhbGxiYWNrLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fY2FsbGJhY2spOwogCi0gICAgICAgIG1fY2FsbGJhY2sodG9SZWYocmV0
dXJuVmFsdWUpLCAwLCBtX2NvbnRleHQpOworICAgICAgICBtX2NhbGxiYWNrKHRvQVBJKHJldHVy
blZhbHVlKSwgMCwgbV9jb250ZXh0KTsKIAogICAgICAgICBtX2NhbGxiYWNrID0gMDsKICAgICB9
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2spOwog
CiAgICAgICAgIFJlZlB0cjxXZWJFcnJvcj4gZXJyb3IgPSBXZWJFcnJvcjo6Y3JlYXRlKCk7Ci0g
ICAgICAgIG1fY2FsbGJhY2soMCwgdG9SZWYoZXJyb3IuZ2V0KCkpLCBtX2NvbnRleHQpOworICAg
ICAgICBtX2NhbGxiYWNrKDAsIHRvQVBJKGVycm9yLmdldCgpKSwgbV9jb250ZXh0KTsKICAgICAg
ICAgCiAgICAgICAgIG1fY2FsbGJhY2sgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGQwMzAzMThm
M2YyN2VmNDRhYzc5MjYyODQ4Nzk3ZmI5NzQwMTNlMWUuLjJmYmE5ZDkzNDIyYTlhMTEwMzQyMzQy
ZGY5YjljZmFjMmRlOGU0OWYgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFdlYkNv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV2ViQ29udAogICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvUmVmKGNvbnRleHQpLCB0b1JlZihtZXNzYWdlTmFt
ZS5pbXBsKCkpLCB0b1JlZihtZXNzYWdlQm9keSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRvQVBJKGNvbnRl
eHQpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSShtZXNzYWdlQm9keSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3QqIG1lc3Nh
Z2VCb2R5LCBSZWZQdHI8QVBJT2JqZWN0PiYgcmV0dXJuRGF0YSkKQEAgLTU5LDggKzU5LDggQEAg
dm9pZCBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVm
IHJldHVybkRhdGFSZWYgPSAwOwotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUodG9SZWYoY29udGV4dCksIHRvUmVmKG1lc3NhZ2VOYW1l
LmltcGwoKSksIHRvUmVmKG1lc3NhZ2VCb2R5KSwgJnJldHVybkRhdGFSZWYsIG1fY2xpZW50LmNs
aWVudEluZm8pOwotICAgIHJldHVybkRhdGEgPSBhZG9wdFJlZih0b1dLKHJldHVybkRhdGFSZWYp
KTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKHRvQVBJKGNvbnRleHQpLCB0b0FQSShtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b0FQSSht
ZXNzYWdlQm9keSksICZyZXR1cm5EYXRhUmVmLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBy
ZXR1cm5EYXRhID0gYWRvcHRSZWYodG9JbXBsKHJldHVybkRhdGFSZWYpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xp
ZW50LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwCmluZGV4IDUyMzg4
N2NlOWU3ZjgwYWQ2ZTI5ZGJlNDIwMDUzMmIxNTJkZWE5MjUuLmY1ZjU4NDM5ZTY4MzhiNjYxMWU3
NDliY2IzY2VhYjEwN2ZmZTVlNTMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZv
cm1DbGllbnQuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIGJvb2wgV2ViRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0oV2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViCiAgICAgICAgIG1hcC5zZXQo
dGV4dEZpZWxkVmFsdWVzW2ldLmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZSh0ZXh0RmllbGRWYWx1
ZXNbaV0uc2Vjb25kKSk7CiAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHRleHRGaWVs
ZHNNYXAgPSBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtYXApOwogCi0gICAgbV9wYWdlRm9y
bUNsaWVudC53aWxsU3VibWl0Rm9ybSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCB0b1JlZihz
b3VyY2VGcmFtZSksIHRvUmVmKHRleHRGaWVsZHNNYXAuZ2V0KCkpLCB0b1JlZih1c2VyRGF0YSks
IHRvUmVmKGxpc3RlbmVyKSwgbV9wYWdlRm9ybUNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3Bh
Z2VGb3JtQ2xpZW50LndpbGxTdWJtaXRGb3JtKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHNvdXJjZUZyYW1lKSwgdG9BUEkodGV4dEZpZWxkc01hcC5nZXQoKSksIHRvQVBJKHVzZXJE
YXRhKSwgdG9BUEkobGlzdGVuZXIpLCBtX3BhZ2VGb3JtQ2xpZW50LmNsaWVudEluZm8pOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJIaXN0
b3J5Q2xpZW50LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYkhpc3RvcnlDbGllbnQuY3BwCmlu
ZGV4IDgxNzViMTJkZGJmZTYxNWU4MzFmODgyZDZkNzI0ZjgwZDYzN2ZjYzIuLjEyMDU2ZWU0ZTAx
Yjk3NmFmMWI5MWYxZDBlOGFkZDJiNGY2YzIzOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkhpc3RvcnlDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYkhpc3Rv
cnlDbGllbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgV2ViSGlzdG9yeUNsaWVudDo6ZGlk
TmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxXZWJOYXZpZ2F0aW9uRGF0YT4gbmF2aWdhdGlv
bkRhdGEgPSBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlKG5hdmlnYXRpb25EYXRhU3RvcmUpOyAK
LSAgICBtX2NvbnRleHRIaXN0b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
KHRvUmVmKGNvbnRleHQpLCB0b1JlZihwYWdlKSwgdG9SZWYobmF2aWdhdGlvbkRhdGEuZ2V0KCkp
LCB0b1JlZihmcmFtZSksIG1fY29udGV4dEhpc3RvcnlDbGllbnQuY2xpZW50SW5mbyk7CisgICAg
bV9jb250ZXh0SGlzdG9yeUNsaWVudC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSh0b0FQ
SShjb250ZXh0KSwgdG9BUEkocGFnZSksIHRvQVBJKG5hdmlnYXRpb25EYXRhLmdldCgpKSwgdG9B
UEkoZnJhbWUpLCBtX2NvbnRleHRIaXN0b3J5Q2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lk
IFdlYkhpc3RvcnlDbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJDb250ZXh0KiBj
b250ZXh0LCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkKQEAgLTYwLDcg
KzYwLDcgQEAgdm9pZCBXZWJIaXN0b3J5Q2xpZW50OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
V2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZVByb3gKICAgICBpZiAoIW1fY29udGV4dEhpc3Rv
cnlDbGllbnQuZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2NvbnRleHRIaXN0b3J5Q2xpZW50LmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCh0b1JlZihj
b250ZXh0KSwgdG9SZWYocGFnZSksIHRvVVJMUmVmKHNvdXJjZVVSTC5pbXBsKCkpLCB0b1VSTFJl
ZihkZXN0aW5hdGlvblVSTC5pbXBsKCkpLCB0b1JlZihmcmFtZSksIG1fY29udGV4dEhpc3RvcnlD
bGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jb250ZXh0SGlzdG9yeUNsaWVudC5kaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QodG9BUEkoY29udGV4dCksIHRvQVBJKHBhZ2UpLCB0b1VSTFJlZihzb3Vy
Y2VVUkwuaW1wbCgpKSwgdG9VUkxSZWYoZGVzdGluYXRpb25VUkwuaW1wbCgpKSwgdG9BUEkoZnJh
bWUpLCBtX2NvbnRleHRIaXN0b3J5Q2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkhp
c3RvcnlDbGllbnQ6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXZWJDb250ZXh0KiBjb250ZXh0
LCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkKQEAgLTY4LDcgKzY4LDcg
QEAgdm9pZCBXZWJIaXN0b3J5Q2xpZW50OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoV2ViQ29u
dGV4dCogY29udGV4dCwgV2ViUGFnZVByb3gKICAgICBpZiAoIW1fY29udGV4dEhpc3RvcnlDbGll
bnQuZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nv
bnRleHRIaXN0b3J5Q2xpZW50LmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCh0b1JlZihjb250ZXh0
KSwgdG9SZWYocGFnZSksIHRvVVJMUmVmKHNvdXJjZVVSTC5pbXBsKCkpLCB0b1VSTFJlZihkZXN0
aW5hdGlvblVSTC5pbXBsKCkpLCB0b1JlZihmcmFtZSksIG1fY29udGV4dEhpc3RvcnlDbGllbnQu
Y2xpZW50SW5mbyk7CisgICAgbV9jb250ZXh0SGlzdG9yeUNsaWVudC5kaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3QodG9BUEkoY29udGV4dCksIHRvQVBJKHBhZ2UpLCB0b1VSTFJlZihzb3VyY2VVUkwu
aW1wbCgpKSwgdG9VUkxSZWYoZGVzdGluYXRpb25VUkwuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBt
X2NvbnRleHRIaXN0b3J5Q2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkhpc3RvcnlD
bGllbnQ6OmRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdl
UHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBXZWJG
cmFtZVByb3h5KiBmcmFtZSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXZWJIaXN0b3J5Q2xpZW50
OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZVByb3h5
KgogICAgIGlmICghbV9jb250ZXh0SGlzdG9yeUNsaWVudC5kaWRVcGRhdGVIaXN0b3J5VGl0bGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dEhpc3RvcnlDbGllbnQuZGlkVXBkYXRl
SGlzdG9yeVRpdGxlKHRvUmVmKGNvbnRleHQpLCB0b1JlZihwYWdlKSwgdG9SZWYodGl0bGUuaW1w
bCgpKSwgdG9VUkxSZWYodXJsLmltcGwoKSksIHRvUmVmKGZyYW1lKSwgbV9jb250ZXh0SGlzdG9y
eUNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NvbnRleHRIaXN0b3J5Q2xpZW50LmRpZFVwZGF0
ZUhpc3RvcnlUaXRsZSh0b0FQSShjb250ZXh0KSwgdG9BUEkocGFnZSksIHRvQVBJKHRpdGxlLmlt
cGwoKSksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY29udGV4dEhpc3Rv
cnlDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViSGlzdG9yeUNsaWVudDo6cG9wdWxh
dGVWaXNpdGVkTGlua3MoV2ViQ29udGV4dCogY29udGV4dCkKQEAgLTg0LDcgKzg0LDcgQEAgdm9p
ZCBXZWJIaXN0b3J5Q2xpZW50Ojpwb3B1bGF0ZVZpc2l0ZWRMaW5rcyhXZWJDb250ZXh0KiBjb250
ZXh0KQogICAgIGlmICghbV9jb250ZXh0SGlzdG9yeUNsaWVudC5wb3B1bGF0ZVZpc2l0ZWRMaW5r
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0SGlzdG9yeUNsaWVudC5wb3B1bGF0
ZVZpc2l0ZWRMaW5rcyh0b1JlZihjb250ZXh0KSwgbV9jb250ZXh0SGlzdG9yeUNsaWVudC5jbGll
bnRJbmZvKTsKKyAgICBtX2NvbnRleHRIaXN0b3J5Q2xpZW50LnBvcHVsYXRlVmlzaXRlZExpbmtz
KHRvQVBJKGNvbnRleHQpLCBtX2NvbnRleHRIaXN0b3J5Q2xpZW50LmNsaWVudEluZm8pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkxvYWRlckNsaWVudC5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGY0YzU4OTViZGI3Yzk0MjMyM2M4ZTUxMmQ1ZGU4NDRkODg1MzUwNTkuLmNhMzQwZWE3
MzBjZDFkZTg2NjRmMDU5NmE4MTE1MDNlM2UxNGMxNTcgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9h
ZGVyQ2xpZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYQog
ICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIHRvUmVmKHVz
ZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAgIG1fcGFnZUxvYWRl
ckNsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQ
SShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8p
OwogfQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5
KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBXZWJM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYlBhZ2UKICAgICBpZiAoIW1fcGFnZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIHRvUmVmKHVzZXJE
YXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAgIG1fcGFnZUxvYWRlckNs
aWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0
b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fcGFnZUxvYWRlckNs
aWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQpAQCAtNjQsNyArNjQsNyBAQCB2b2lk
IFdlYkxvYWRlckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1l
KFdlYlBhZ2VQcm94eSogcGFnZQogICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCB0b1JlZih1c2VyRGF0YSksIG1fcGFnZUxvYWRl
ckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lk
IFdlYkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFn
ZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmCiAgICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGll
bnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VM
b2FkZXJDbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFt
ZSksIHRvUmVmKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAg
IG1fcGFnZUxvYWRlckNsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUodG9BUEkocGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5m
byk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3Qq
IHVzZXJEYXRhKQpAQCAtODAsNyArODAsNyBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZQogICAg
IGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgdG9SZWYodXNlckRhdGEp
LCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9wYWdlTG9hZGVyQ2xpZW50
LmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2
b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2Vi
UGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmCiAgICAgaWYgKCFtX3BhZ2VMb2FkZXJD
bGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bh
Z2VMb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihm
cmFtZSksIHRvUmVmKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOwor
ICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUodG9BUEkocGFnZSks
IHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVj
dCogdXNlckRhdGEpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRG
YWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQCiAg
ICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgdG9SZWYodXNlckRhdGEp
LCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9wYWdlTG9hZGVyQ2xpZW50
LmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwg
dG9BUEkodXNlckRhdGEpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZv
aWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmpl
Y3QqIHVzZXJEYXRhKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYK
ICAgICBpZiAoIW1fcGFnZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZih0aXRsZS5pbXBsKCkpLCB0b1JlZihmcmFtZSksIHRv
UmVmKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAgIG1fcGFn
ZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEko
dGl0bGUuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fcGFnZUxvYWRl
ckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZpcnN0
TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwg
QVBJT2JqZWN0KiB1c2VyRGF0YSkKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFdlYkxvYWRlckNs
aWVudDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1l
UHJveHkqCiAgICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgdG9SZWYodXNlckRhdGEpLCBt
X3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNl
ckRhdGEpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9h
ZGVyQ2xpZW50OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdl
UHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsCiAgICAgaWYgKCFtX3Bh
Z2VMb2FkZXJDbGllbnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCB0b1JlZih1
c2VyRGF0YSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VMb2Fk
ZXJDbGllbnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodG9BUEkocGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xp
ZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2Jq
ZWN0KiB1c2VyRGF0YSkKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQ
cgogICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNo
eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFJlbW92ZUZy
YW1lRnJvbUhpZXJhcmNoeSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCB0b1JlZih1c2VyRGF0
YSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VMb2FkZXJDbGll
bnQuZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2
b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyhXZWJQYWdlUHJveHkqIHBhZ2Up
CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvZ3Jl
c3MoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFN0
YXJ0UHJvZ3Jlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5k
aWRTdGFydFByb2dyZXNzKHRvUmVmKHBhZ2UpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5m
byk7CisgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJvZ3Jlc3ModG9BUEkocGFnZSks
IG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGll
bnQ6OmRpZENoYW5nZVByb2dyZXNzKFdlYlBhZ2VQcm94eSogcGFnZSkKQEAgLTE0NCw3ICsxNDQs
NyBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoV2ViUGFnZVByb3h5
KiBwYWdlKQogICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZENoYW5nZVByb2dyZXNzKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkQ2hhbmdlUHJvZ3Jl
c3ModG9SZWYocGFnZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3Bh
Z2VMb2FkZXJDbGllbnQuZGlkQ2hhbmdlUHJvZ3Jlc3ModG9BUEkocGFnZSksIG1fcGFnZUxvYWRl
ckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZpbmlz
aFByb2dyZXNzKFdlYlBhZ2VQcm94eSogcGFnZSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdl
YkxvYWRlckNsaWVudDo6ZGlkRmluaXNoUHJvZ3Jlc3MoV2ViUGFnZVByb3h5KiBwYWdlKQogICAg
IGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZpbmlzaFByb2dyZXNzKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoUHJvZ3Jlc3ModG9SZWYocGFn
ZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VMb2FkZXJDbGll
bnQuZGlkRmluaXNoUHJvZ3Jlc3ModG9BUEkocGFnZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEJlY29tZVVucmVzcG9uc2l2
ZShXZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBXZWJMb2FkZXJD
bGllbnQ6OmRpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgaWYg
KCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkQmVjb21lVW5yZXNwb25zaXZlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkQmVjb21lVW5yZXNwb25zaXZlKHRvUmVm
KHBhZ2UpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9wYWdlTG9hZGVy
Q2xpZW50LmRpZEJlY29tZVVucmVzcG9uc2l2ZSh0b0FQSShwYWdlKSwgbV9wYWdlTG9hZGVyQ2xp
ZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkQmVjb21lUmVz
cG9uc2l2ZShXZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXZWJM
b2FkZXJDbGllbnQ6OmRpZEJlY29tZVJlc3BvbnNpdmUoV2ViUGFnZVByb3h5KiBwYWdlKQogICAg
IGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEJlY29tZVJlc3BvbnNpdmUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRCZWNvbWVSZXNwb25zaXZlKHRvUmVm
KHBhZ2UpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9wYWdlTG9hZGVy
Q2xpZW50LmRpZEJlY29tZVJlc3BvbnNpdmUodG9BUEkocGFnZSksIG1fcGFnZUxvYWRlckNsaWVu
dC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OnByb2Nlc3NEaWRFeGl0
KFdlYlBhZ2VQcm94eSogcGFnZSkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYkxvYWRlckNs
aWVudDo6cHJvY2Vzc0RpZEV4aXQoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIGlmICghbV9wYWdl
TG9hZGVyQ2xpZW50LnByb2Nlc3NEaWRFeGl0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bh
Z2VMb2FkZXJDbGllbnQucHJvY2Vzc0RpZEV4aXQodG9SZWYocGFnZSksIG1fcGFnZUxvYWRlckNs
aWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VMb2FkZXJDbGllbnQucHJvY2Vzc0RpZEV4aXQo
dG9BUEkocGFnZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBX
ZWJMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkqIHBh
Z2UpCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAgaWYgKCFtX3BhZ2VMb2FkZXJD
bGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BhZ2VMb2FkZXJDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KHRvUmVmKHBhZ2UpLCBt
X3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdCh0b0FQSShwYWdlKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNs
aWVudEluZm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
b2xpY3lDbGllbnQuY3BwCmluZGV4IGIzNTljZDYxZTYwMjE1NjYwYzJjZDVhNzczNGNiYmU0MGU2
YTkyMWQuLjU3YTgzNWY4MmIwN2I0YzVhYjdjY2YwODBiNjZhNzEyNjZmMTYzNzUgMTAwNjQ0Ci0t
LSBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAKKysrIGIvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBib29sIFdlYlBv
bGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkq
IHBhZ2UsIE5hdmlnYQogICAgIGlmICghbV9wYWdlUG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fcGFnZVBv
bGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHRvUmVmKHBhZ2UpLCB0
b1JlZih0eXBlKSwgdG9SZWYobW9kaWZpZXJzKSwgdG9SZWYobW91c2VCdXR0b24pLCB0b1VSTFJl
Zih1cmwuaW1wbCgpKSwgdG9SZWYoZnJhbWUpLCB0b1JlZihsaXN0ZW5lciksIG1fcGFnZVBvbGlj
eUNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSShwYWdlKSwgdG9BUEkodHlwZSksIHRvQVBJKG1vZGlm
aWVycyksIHRvQVBJKG1vdXNlQnV0dG9uKSwgdG9VUkxSZWYodXJsLmltcGwoKSksIHRvQVBJKGZy
YW1lKSwgdG9BUEkobGlzdGVuZXIpLCBtX3BhZ2VQb2xpY3lDbGllbnQuY2xpZW50SW5mbyk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBXZWJQb2xpY3lDbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkqIHBhZ2UsIE5h
dmlnYXQKICAgICBpZiAoIW1fcGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fcGFnZVBvbGljeUNsaWVu
dC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9SZWYocGFnZSksIHRvUmVmKHR5cGUp
LCB0b1JlZihtb2RpZmllcnMpLCB0b1JlZihtb3VzZUJ1dHRvbiksIHRvVVJMUmVmKHVybC5pbXBs
KCkpLCB0b1JlZihmcmFtZSksIHRvUmVmKGxpc3RlbmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50LmNs
aWVudEluZm8pOworICAgIG1fcGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24odG9BUEkocGFnZSksIHRvQVBJKHR5cGUpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQ
SShtb3VzZUJ1dHRvbiksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KGxpc3RlbmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50LmNsaWVudEluZm8pOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JNSU1FVHlwZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYKICAgICBp
ZiAoIW1fcGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgbV9wYWdlUG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck1J
TUVUeXBlKHRvUmVmKHBhZ2UpLCB0b1JlZihNSU1FVHlwZS5pbXBsKCkpLCB0b1VSTFJlZih1cmwu
aW1wbCgpKSwgdG9SZWYoZnJhbWUpLCB0b1JlZihsaXN0ZW5lciksIG1fcGFnZVBvbGljeUNsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTUlN
RVR5cGUodG9BUEkocGFnZSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvVVJMUmVmKHVybC5p
bXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKGxpc3RlbmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50
LmNsaWVudEluZm8pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVu
dC5jcHAKaW5kZXggOWZiZTUzZjUyZTRmMWZmMTE0OTgwZTQ5YzhiNWNiNDhjMmRmM2MxNy4uYmEy
NWY5NjhjMzQyNDAyNTk4OTc0MWY3MTk4Yzg2OWVkMjk5YmVjNSAxMDA2NDQKLS0tIGEvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJ
Q2xpZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2Vi
VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIGlmICghbV9w
YWdlVUlDbGllbnQuY3JlYXRlTmV3UGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAg
cmV0dXJuIGFkb3B0UmVmKHRvV0sobV9wYWdlVUlDbGllbnQuY3JlYXRlTmV3UGFnZSh0b1JlZihw
YWdlKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
dG9JbXBsKG1fcGFnZVVJQ2xpZW50LmNyZWF0ZU5ld1BhZ2UodG9BUEkocGFnZSksIG1fcGFnZVVJ
Q2xpZW50LmNsaWVudEluZm8pKSk7CiB9IAogCiB2b2lkIFdlYlVJQ2xpZW50OjpzaG93UGFnZShX
ZWJQYWdlUHJveHkqIHBhZ2UpCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViVUlDbGllbnQ6OnNo
b3dQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICBpZiAoIW1fcGFnZVVJQ2xpZW50LnNob3dQ
YWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wYWdlVUlDbGllbnQuc2hvd1BhZ2Uo
dG9SZWYocGFnZSksIG1fcGFnZVVJQ2xpZW50LmNsaWVudEluZm8pOworICAgIG1fcGFnZVVJQ2xp
ZW50LnNob3dQYWdlKHRvQVBJKHBhZ2UpLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZvKTsKIH0K
IAogdm9pZCBXZWJVSUNsaWVudDo6Y2xvc2UoV2ViUGFnZVByb3h5KiBwYWdlKQpAQCAtNzAsNyAr
NzAsNyBAQCB2b2lkIFdlYlVJQ2xpZW50OjpjbG9zZShXZWJQYWdlUHJveHkqIHBhZ2UpCiAgICAg
aWYgKCFtX3BhZ2VVSUNsaWVudC5jbG9zZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1f
cGFnZVVJQ2xpZW50LmNsb3NlKHRvUmVmKHBhZ2UpLCBtX3BhZ2VVSUNsaWVudC5jbGllbnRJbmZv
KTsKKyAgICBtX3BhZ2VVSUNsaWVudC5jbG9zZSh0b0FQSShwYWdlKSwgbV9wYWdlVUlDbGllbnQu
Y2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChX
ZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSog
ZnJhbWUpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgV2ViVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRB
bGVydChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKICAgICBpZiAo
IW1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIG1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCh0b1JlZihwYWdlKSwgdG9S
ZWYobWVzc2FnZS5pbXBsKCkpLCB0b1JlZihmcmFtZSksIG1fcGFnZVVJQ2xpZW50LmNsaWVudElu
Zm8pOworICAgIG1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCh0b0FQSShwYWdlKSwg
dG9BUEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fcGFnZVVJQ2xpZW50LmNsaWVu
dEluZm8pOwogfQogCiBib29sIFdlYlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQ
YWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUpCkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgV2ViVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25m
aXJtKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlCiAgICAgaWYgKCFt
X3BhZ2VVSUNsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmlybSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtKHRvUmVm
KHBhZ2UpLCB0b1JlZihtZXNzYWdlLmltcGwoKSksIHRvUmVmKGZyYW1lKSwgbV9wYWdlVUlDbGll
bnQuY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIG1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3JpcHRD
b25maXJtKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwg
bV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIFN0cmluZyBXZWJVSUNsaWVudDo6cnVu
SmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQpAQCAt
OTQsNyArOTQsNyBAQCBTdHJpbmcgV2ViVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZwogICAgIGlmICghbV9wYWdlVUlD
bGllbnQucnVuSmF2YVNjcmlwdFByb21wdCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0g
ICAgV2ViU3RyaW5nKiBzdHJpbmcgPSB0b1dLKG1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3JpcHRQ
cm9tcHQodG9SZWYocGFnZSksIHRvUmVmKG1lc3NhZ2UuaW1wbCgpKSwgdG9SZWYoZGVmYXVsdFZh
bHVlLmltcGwoKSksIHRvUmVmKGZyYW1lKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbykpOwor
ICAgIFdlYlN0cmluZyogc3RyaW5nID0gdG9JbXBsKG1fcGFnZVVJQ2xpZW50LnJ1bkphdmFTY3Jp
cHRQcm9tcHQodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVs
dFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbykp
OwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFdlYlVJQ2xpZW50OjpzZXRTdGF0dXNUZXh0KFdlYlBhZ2VQcm94eSog
cGFnZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGlmICghbV9wYWdlVUlDbGllbnQuc2V0U3Rh
dHVzVGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlVUlDbGllbnQuc2V0U3RhdHVz
VGV4dCh0b1JlZihwYWdlKSwgdG9SZWYodGV4dC5pbXBsKCkpLCBtX3BhZ2VVSUNsaWVudC5jbGll
bnRJbmZvKTsKKyAgICBtX3BhZ2VVSUNsaWVudC5zZXRTdGF0dXNUZXh0KHRvQVBJKHBhZ2UpLCB0
b0FQSSh0ZXh0LmltcGwoKSksIG1fcGFnZVVJQ2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lk
IFdlYlVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkqIHBhZ2Us
IFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBBUElPYmplY3QqIHVzZXJEYXRhKQpAQCAt
MTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRXZlbnQ6Ok1vZGlmaWVyCiAgICAgaWYgKCFtX3BhZ2VV
SUNsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlVUlDbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9SZWYocGFnZSksIHRvUmVm
KG1vZGlmaWVycyksIHRvUmVmKHVzZXJEYXRhKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7
CisgICAgbV9wYWdlVUlDbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSks
IHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKHVzZXJEYXRhKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKIApAQCAtMTI2LDE0ICsxMjYsMTQgQEAgdm9pZCBXZWJVSUNsaWVudDo6Y29u
dGVudHNTaXplQ2hhbmdlZChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IEludFNpemUmIHNpemUs
IFcKICAgICBpZiAoIW1fcGFnZVVJQ2xpZW50LmNvbnRlbnRzU2l6ZUNoYW5nZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcGFnZVVJQ2xpZW50LmNvbnRlbnRzU2l6ZUNoYW5nZWQodG9SZWYo
cGFnZSksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgdG9SZWYoZnJhbWUpLCBtX3BhZ2VV
SUNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VVSUNsaWVudC5jb250ZW50c1NpemVDaGFu
Z2VkKHRvQVBJKHBhZ2UpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIHRvQVBJKGZyYW1l
KSwgbV9wYWdlVUlDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViVUlDbGllbnQ6OmRp
ZE5vdEhhbmRsZUtleUV2ZW50KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFtX3BhZ2VVSUNsaWVudC5kaWROb3RIYW5k
bGVLZXlFdmVudCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcGFnZVVJQ2xpZW50LmRpZE5vdEhh
bmRsZUtleUV2ZW50KHRvUmVmKHBhZ2UpLCBldmVudC5uYXRpdmVFdmVudCgpLCBtX3BhZ2VVSUNs
aWVudC5jbGllbnRJbmZvKTsKKyAgICBtX3BhZ2VVSUNsaWVudC5kaWROb3RIYW5kbGVLZXlFdmVu
dCh0b0FQSShwYWdlKSwgZXZlbnQubmF0aXZlRXZlbnQoKSwgbV9wYWdlVUlDbGllbnQuY2xpZW50
SW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tIGIvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tCmluZGV4
IGVmMTA0NTdkYmM3ODVhNzdhN2M1ZTA5YTQ2Mjc4MTEzM2Q2NzJkYTguLjkwYmE5MDBiNWM2NmRi
ZGQxMTlmZDRhNGFmZGEyZWQ4NzQyOTJiY2MgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbQorKysgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0KQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYlBhZ2VQcm94eSogQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHk6OnBhZ2UoKQogewotICAgIHJldHVybiB0b1dLKFttX3dlYlZpZXcg
cGFnZVJlZl0pOworICAgIHJldHVybiB0b0ltcGwoW21fd2ViVmlldyBwYWdlUmVmXSk7CiB9CiAK
IHZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmVuc3VyZUJhY2tpbmdTdG9yZSgp
CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YVByb3h5TWFjLm1tIGIvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xheWVyQmFja2VkRHJhd2luZ0Fy
ZWFQcm94eU1hYy5tbQppbmRleCA3ZjcwZGUxZTY5MTk3YjU5MTgzNzgzMTZjOTRlNzE3MWM2YTMx
ODcwLi4wMGQzZjZjMDVhOTVhNjQ1NDhhZTg4MGYzNWEyZWZkNzk4NzA4MTUxIDEwMDY0NAotLS0g
YS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5TWFjLm1t
CisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlN
YWMubW0KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYlBhZ2VQcm94
eSogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5OjpwYWdlKCkKIHsKLSAgICByZXR1cm4gdG9X
SyhbbV93ZWJWaWV3IHBhZ2VSZWZdKTsKKyAgICByZXR1cm4gdG9JbXBsKFttX3dlYlZpZXcgcGFn
ZVJlZl0pOwogfQogCiB2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6cGxhdGZvcm1T
ZXRTaXplKCkKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5UXQuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHlRdC5jcHAKaW5kZXggZTFlNGQzM2VmMGJjNWY2YzEwYTk4Y2E0OGI2
N2YzYjBkMWE4YmI4Ny4uMjkxYTE2MTNjODYzZmQ3MWM2MmRjNjE4NGUzNjcxMjdiMjQyYTM5NSAx
MDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
UHJveHlRdC5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhUHJveHlRdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IFdlYlBhZ2VQcm94eSogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OnBhZ2UoKQogewot
ICAgIHJldHVybiB0b1dLKG1fd2ViVmlldy0+cGFnZSgpLT5wYWdlUmVmKCkpOworICAgIHJldHVy
biB0b0ltcGwobV93ZWJWaWV3LT5wYWdlKCktPnBhZ2VSZWYoKSk7CiB9CiAKIHZvaWQgQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmVuc3VyZUJhY2tpbmdTdG9yZSgpCmRpZmYgLS1naXQg
YS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRl
eCBiNjViYTViZmJlNmFjNGRlZTkxNzI0ZGM5NmE0ZDUxMzM2NjAzYWE0Li4xNTk0MTI1ZjBiNmFk
NTMwOWVlMWU2YzE3ODU3YmZkZGNkMGYxZmUwIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTM0LDk1ICszNCw5NSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgp
CiB7Ci0gICAgcmV0dXJuIHRvUmVmKEluamVjdGVkQnVuZGxlOjpBUElUeXBlKTsKKyAgICByZXR1
cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGU6OkFQSVR5cGUpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0
Q2xpZW50KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVDbGllbnQgKiB3a0NsaWVudCkK
IHsKICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJldHVy
bjsKLSAgICB0b1dLKGJ1bmRsZVJlZiktPmluaXRpYWxpemVDbGllbnQod2tDbGllbnQpOworICAg
IHRvSW1wbChidW5kbGVSZWYpLT5pbml0aWFsaXplQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVBvc3RNZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNzYWdlQm9keVJlZikKIHsKLSAgICB0b1dLKGJ1
bmRsZVJlZiktPnBvc3RNZXNzYWdlKHRvV0sobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgdG9X
SyhtZXNzYWdlQm9keVJlZikpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5wb3N0TWVzc2FnZSh0
b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgdG9JbXBsKG1lc3NhZ2VCb2R5UmVmKSk7
CiB9CiAKIHZvaWQgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKFdLQnVuZGxlUmVmIGJ1
bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNzYWdlQm9k
eVJlZiwgV0tUeXBlUmVmKiByZXR1cm5EYXRhUmVmKQogewogICAgIFJlZlB0cjxBUElPYmplY3Q+
IHJldHVybkRhdGE7Ci0gICAgdG9XSyhidW5kbGVSZWYpLT5wb3N0U3luY2hyb25vdXNNZXNzYWdl
KHRvV0sobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgdG9XSyhtZXNzYWdlQm9keVJlZiksIHJl
dHVybkRhdGEpOworICAgIHRvSW1wbChidW5kbGVSZWYpLT5wb3N0U3luY2hyb25vdXNNZXNzYWdl
KHRvSW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYp
LCByZXR1cm5EYXRhKTsKICAgICBpZiAocmV0dXJuRGF0YVJlZikKLSAgICAgICAgKnJldHVybkRh
dGFSZWYgPSB0b1JlZihyZXR1cm5EYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgICAgICAq
cmV0dXJuRGF0YVJlZiA9IHRvQVBJKHJldHVybkRhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9
CiAKIHZvaWQgV0tCdW5kbGVTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhXS0J1bmRsZVJlZiBi
dW5kbGVSZWYsIGJvb2wgc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpCiB7Ci0gICAgdG9XSyhidW5k
bGVSZWYpLT5zZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhzaG91bGRUcmFja1Zpc2l0ZWRMaW5r
cyk7CisgICAgdG9JbXBsKGJ1bmRsZVJlZiktPnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKHNo
b3VsZFRyYWNrVmlzaXRlZExpbmtzKTsKIH0KIAogdm9pZCBXS0J1bmRsZVJlbW92ZUFsbFZpc2l0
ZWRMaW5rcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYpCiB7Ci0gICAgdG9XSyhidW5kbGVSZWYpLT5y
ZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlQWxs
VmlzaXRlZExpbmtzKCk7CiB9CiAKIHZvaWQgV0tCdW5kbGVBY3RpdmF0ZU1hY0ZvbnRBc2NlbnRI
YWNrKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZikKIHsKLSAgICB0b1dLKGJ1bmRsZVJlZiktPmFjdGl2
YXRlTWFjRm9udEFzY2VudEhhY2soKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+YWN0aXZhdGVN
YWNGb250QXNjZW50SGFjaygpOwogfQogCiB2b2lkIFdLQnVuZGxlR2FyYmFnZUNvbGxlY3RKYXZh
U2NyaXB0T2JqZWN0cyhXS0J1bmRsZVJlZiBidW5kbGVSZWYpCiB7Ci0gICAgdG9XSyhidW5kbGVS
ZWYpLT5nYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCk7CisgICAgdG9JbXBsKGJ1bmRs
ZVJlZiktPmdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKTsKIH0KIAogdm9pZCBXS0J1
bmRsZUdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNPbkFsdGVybmF0ZVRocmVhZEZvckRl
YnVnZ2luZyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIGJvb2wgd2FpdFVudGlsRG9uZSkKIHsKLSAg
ICB0b1dLKGJ1bmRsZVJlZiktPmdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNPbkFsdGVy
bmF0ZVRocmVhZEZvckRlYnVnZ2luZyh3YWl0VW50aWxEb25lKTsKKyAgICB0b0ltcGwoYnVuZGxl
UmVmKS0+Z2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0c09uQWx0ZXJuYXRlVGhyZWFkRm9y
RGVidWdnaW5nKHdhaXRVbnRpbERvbmUpOwogfQogCiBzaXplX3QgV0tCdW5kbGVHZXRKYXZhU2Ny
aXB0T2JqZWN0c0NvdW50KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZikKIHsKLSAgICByZXR1cm4gdG9X
SyhidW5kbGVSZWYpLT5qYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7CisgICAgcmV0dXJuIHRvSW1w
bChidW5kbGVSZWYpLT5qYXZhU2NyaXB0T2JqZWN0c0NvdW50KCk7CiB9CiAKIHZvaWQgV0tCdW5k
bGVBZGRVc2VyU2NyaXB0KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3Js
ZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tTdHJpbmdSZWYgc291cmNlUmVmLCBXS1VSTFJlZiB1cmxS
ZWYsIFdLQXJyYXlSZWYgd2hpdGVsaXN0UmVmLCBXS0FycmF5UmVmIGJsYWNrbGlzdFJlZiwgV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lUmVmLCBXS1VzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXNSZWYpCiB7Ci0gICAgdG9XSyhidW5kbGVSZWYpLT5h
ZGRVc2VyU2NyaXB0KHRvV0soc2NyaXB0V29ybGRSZWYpLCB0b1dURlN0cmluZyhzb3VyY2VSZWYp
LCB0b1dURlN0cmluZyh1cmxSZWYpLCB0b1dLKHdoaXRlbGlzdFJlZiksIHRvV0soYmxhY2tsaXN0
UmVmKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lUmVmKSwgdG9Vc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzUmVmKSk7CisgICAgdG9JbXBsKGJ1
bmRsZVJlZiktPmFkZFVzZXJTY3JpcHQodG9JbXBsKHNjcmlwdFdvcmxkUmVmKSwgdG9XVEZTdHJp
bmcoc291cmNlUmVmKSwgdG9XVEZTdHJpbmcodXJsUmVmKSwgdG9JbXBsKHdoaXRlbGlzdFJlZiks
IHRvSW1wbChibGFja2xpc3RSZWYpLCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlv
blRpbWVSZWYpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXNSZWYp
KTsKIH0KIAogdm9pZCBXS0J1bmRsZUFkZFVzZXJTdHlsZVNoZWV0KFdLQnVuZGxlUmVmIGJ1bmRs
ZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZiwgV0tTdHJpbmdSZWYg
c291cmNlUmVmLCBXS1VSTFJlZiB1cmxSZWYsIFdLQXJyYXlSZWYgd2hpdGVsaXN0UmVmLCBXS0Fy
cmF5UmVmIGJsYWNrbGlzdFJlZiwgV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzUmVmKQogewotICAgIHRvV0soYnVuZGxlUmVmKS0+YWRkVXNlclN0eWxlU2hlZXQodG9X
SyhzY3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIHRvV1RGU3RyaW5nKHVy
bFJlZiksIHRvV0sod2hpdGVsaXN0UmVmKSwgdG9XSyhibGFja2xpc3RSZWYpLCB0b1VzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFtZXNSZWYpKTsKKyAgICB0b0ltcGwoYnVuZGxl
UmVmKS0+YWRkVXNlclN0eWxlU2hlZXQodG9JbXBsKHNjcmlwdFdvcmxkUmVmKSwgdG9XVEZTdHJp
bmcoc291cmNlUmVmKSwgdG9XVEZTdHJpbmcodXJsUmVmKSwgdG9JbXBsKHdoaXRlbGlzdFJlZiks
IHRvSW1wbChibGFja2xpc3RSZWYpLCB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0
ZWRGcmFtZXNSZWYpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVJlbW92ZVVzZXJTY3JpcHQoV0tCdW5k
bGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmLCBX
S1VSTFJlZiB1cmxSZWYpCiB7Ci0gICAgdG9XSyhidW5kbGVSZWYpLT5yZW1vdmVVc2VyU2NyaXB0
KHRvV0soc2NyaXB0V29ybGRSZWYpLCB0b1dURlN0cmluZyh1cmxSZWYpKTsKKyAgICB0b0ltcGwo
YnVuZGxlUmVmKS0+cmVtb3ZlVXNlclNjcmlwdCh0b0ltcGwoc2NyaXB0V29ybGRSZWYpLCB0b1dU
RlN0cmluZyh1cmxSZWYpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVJlbW92ZVVzZXJTdHlsZVNoZWV0
KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3Js
ZFJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHRvV0soYnVuZGxlUmVmKS0+cmVtb3ZlVXNl
clN0eWxlU2hlZXQodG9XSyhzY3JpcHRXb3JsZFJlZiksIHRvV1RGU3RyaW5nKHVybFJlZikpOwor
ICAgIHRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVVc2VyU3R5bGVTaGVldCh0b0ltcGwoc2NyaXB0
V29ybGRSZWYpLCB0b1dURlN0cmluZyh1cmxSZWYpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVJlbW92
ZVVzZXJTY3JpcHRzKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVTY3JpcHRXb3JsZFJl
ZiBzY3JpcHRXb3JsZFJlZikKIHsKLSAgICB0b1dLKGJ1bmRsZVJlZiktPnJlbW92ZVVzZXJTY3Jp
cHRzKHRvV0soc2NyaXB0V29ybGRSZWYpKTsKKyAgICB0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3Zl
VXNlclNjcmlwdHModG9JbXBsKHNjcmlwdFdvcmxkUmVmKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVS
ZW1vdmVVc2VyU3R5bGVTaGVldHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVNjcmlw
dFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmKQogewotICAgIHRvV0soYnVuZGxlUmVmKS0+cmVtb3Zl
VXNlclN0eWxlU2hlZXRzKHRvV0soc2NyaXB0V29ybGRSZWYpKTsKKyAgICB0b0ltcGwoYnVuZGxl
UmVmKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRzKHRvSW1wbChzY3JpcHRXb3JsZFJlZikpOwogfQog
CiB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsVXNlckNvbnRlbnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVm
KQogewotICAgIHRvV0soYnVuZGxlUmVmKS0+cmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKKyAgICB0
b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlQWxsVXNlckNvbnRlbnQoKTsKIH0KIAogdm9pZCBXS0J1
bmRsZU92ZXJyaWRlWFNTQXVkaXRvckVuYWJsZWRGb3JUZXN0UnVubmVyKFdLQnVuZGxlUmVmIGJ1
bmRsZVJlZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvV0soYnVuZGxlUmVmKS0+b3ZlcnJpZGVY
U1NBdWRpdG9yRW5hYmxlZEZvclRlc3RSdW5uZXIoZW5hYmxlZCk7CisgICAgdG9JbXBsKGJ1bmRs
ZVJlZiktPm92ZXJyaWRlWFNTQXVkaXRvckVuYWJsZWRGb3JUZXN0UnVubmVyKGVuYWJsZWQpOwog
fQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlQVBJQ2FzdC5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlQVBJQ2FzdC5oCmluZGV4IGNmNmJiMDE5ZDQwYjA2NWMwYjE1N2I4ZjgzMDkwNmE3
MjY2NjU5MWIuLjI1Mzk3MTNlN2ZjYTBiMTI4MDVmNzg1ODlmZmVmMWIxNDVhOGYyNGYgMTAwNjQ0
Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQ
SUNhc3QuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVBUElDYXN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVu
ZGxlUmFuZ2VIYW5kbGVSZWYsIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tCdW5kbGVSZWYsIEluamVjdGVkQnVuZGxlKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLQnVuZGxlU2NyaXB0V29ybGRSZWYsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQpCiAKLWlu
bGluZSBXS0luc2VydEFjdGlvblR5cGUgdG9XSyhXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24g
YWN0aW9uKQoraW5saW5lIFdLSW5zZXJ0QWN0aW9uVHlwZSB0b0FQSShXZWJDb3JlOjpFZGl0b3JJ
bnNlcnRBY3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBX
ZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZDoKQEAgLTc1LDcgKzc1LDcgQEAgaW5saW5l
IFdLSW5zZXJ0QWN0aW9uVHlwZSB0b1dLKFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbiBhY3Rp
b24pCiAgICAgcmV0dXJuIGtXS0luc2VydEFjdGlvblR5cGVkOwogfQogCi1pbmxpbmUgV0tBZmZp
bml0eVR5cGUgdG9XSyhXZWJDb3JlOjpFQWZmaW5pdHkgYWZmaW5pdHkpCitpbmxpbmUgV0tBZmZp
bml0eVR5cGUgdG9BUEkoV2ViQ29yZTo6RUFmZmluaXR5IGFmZmluaXR5KQogewogICAgIHN3aXRj
aCAoYWZmaW5pdHkpIHsKICAgICBjYXNlIFdlYkNvcmU6OlVQU1RSRUFNOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3Bw
IGIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUu
Y3BwCmluZGV4IGZmYzQ2YTE3MjAwZjFlNGRkMTEzYWM5NGJkZjc2YzE2ODM2MzJkY2QuLjkxOTc3
MDk4ODVjMzQ4OGM3ZDA2MWRkOWM5Njc3MWY2ZGYwMzA1NDIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAK
QEAgLTM2LDg1ICszNiw4NSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5cGVJRCBX
S0J1bmRsZUZyYW1lR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9SZWYoV2ViRnJhbWU6OkFQ
SVR5cGUpOworICAgIHJldHVybiB0b0FQSShXZWJGcmFtZTo6QVBJVHlwZSk7CiB9CiAKIGJvb2wg
V0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvV0soZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpOworICAgIHJldHVybiB0b0lt
cGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpOwogfQogCiBXS1VSTFJlZiBXS0J1bmRsZUZyYW1l
Q29weVVSTChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogewotICAgIHJldHVybiB0b0NvcGll
ZFVSTFJlZih0b1dLKGZyYW1lUmVmKS0+dXJsKCkpOworICAgIHJldHVybiB0b0NvcGllZFVSTEFQ
SSh0b0ltcGwoZnJhbWVSZWYpLT51cmwoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tCdW5kbGVGcmFt
ZUNvcHlDaGlsZEZyYW1lcyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogewotICAgIHJldHVy
biB0b1JlZih0b1dLKGZyYW1lUmVmKS0+Y2hpbGRGcmFtZXMoKS5yZWxlYXNlUmVmKCkpOyAgICAK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGZyYW1lUmVmKS0+Y2hpbGRGcmFtZXMoKS5yZWxlYXNl
UmVmKCkpOyAgICAKIH0KIAogdW5zaWduZWQgV0tCdW5kbGVGcmFtZUdldE51bWJlck9mQWN0aXZl
QW5pbWF0aW9ucyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogewotICAgIHJldHVybiB0b1dL
KGZyYW1lUmVmKS0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7CisgICAgcmV0dXJuIHRvSW1w
bChmcmFtZVJlZiktPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogfQogCiBib29sIFdLQnVu
ZGxlRnJhbWVQYXVzZUFuaW1hdGlvbk9uRWxlbWVudFdpdGhJZChXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lUmVmLCBXS1N0cmluZ1JlZiBuYW1lLCBXS1N0cmluZ1JlZiBlbGVtZW50SUQsIGRvdWJsZSB0
aW1lKQogewotICAgIHJldHVybiB0b1dLKGZyYW1lUmVmKS0+cGF1c2VBbmltYXRpb25PbkVsZW1l
bnRXaXRoSWQodG9XSyhuYW1lKS0+c3RyaW5nKCksIHRvV0soZWxlbWVudElEKS0+c3RyaW5nKCks
IHRpbWUpOworICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5wYXVzZUFuaW1hdGlvbk9uRWxl
bWVudFdpdGhJZCh0b0ltcGwobmFtZSktPnN0cmluZygpLCB0b0ltcGwoZWxlbWVudElEKS0+c3Ry
aW5nKCksIHRpbWUpOwogfQogCiBKU0dsb2JhbENvbnRleHRSZWYgV0tCdW5kbGVGcmFtZUdldEph
dmFTY3JpcHRDb250ZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvV0soZnJhbWVSZWYpLT5qc0NvbnRleHQoKTsKKyAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVm
KS0+anNDb250ZXh0KCk7CiB9CiAKIEpTR2xvYmFsQ29udGV4dFJlZiBXS0J1bmRsZUZyYW1lR2V0
SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0J1
bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkUmVmKQogewotICAgIHJldHVybiB0b1dLKGZyYW1lUmVm
KS0+anNDb250ZXh0Rm9yV29ybGQodG9XSyh3b3JsZFJlZikpOworICAgIHJldHVybiB0b0ltcGwo
ZnJhbWVSZWYpLT5qc0NvbnRleHRGb3JXb3JsZCh0b0ltcGwod29ybGRSZWYpKTsKIH0KIAogSlNW
YWx1ZVJlZiBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdFdyYXBwZXJGb3JOb2RlRm9yV29ybGQo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5k
bGVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGRSZWYpCiB7Ci0gICAgcmV0dXJuIHRv
V0soZnJhbWVSZWYpLT5qc1dyYXBwZXJGb3JXb3JsZCh0b1dLKG5vZGVIYW5kbGVSZWYpLCB0b1dL
KHdvcmxkUmVmKSk7CisgICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmpzV3JhcHBlckZvcldv
cmxkKHRvSW1wbChub2RlSGFuZGxlUmVmKSwgdG9JbXBsKHdvcmxkUmVmKSk7CiB9CiAKIEpTVmFs
dWVSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRXcmFwcGVyRm9yUmFuZ2VGb3JXb3JsZChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlSGFu
ZGxlUmVmLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkUmVmKQogewotICAgIHJldHVybiB0
b1dLKGZyYW1lUmVmKS0+anNXcmFwcGVyRm9yV29ybGQodG9XSyhyYW5nZUhhbmRsZVJlZiksIHRv
V0sod29ybGRSZWYpKTsKKyAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+anNXcmFwcGVyRm9y
V29ybGQodG9JbXBsKHJhbmdlSGFuZGxlUmVmKSwgdG9JbXBsKHdvcmxkUmVmKSk7CiB9CiAKIFdL
U3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVm
KQogewotICAgIHJldHVybiB0b0NvcGllZFJlZih0b1dLKGZyYW1lUmVmKS0+bmFtZSgpKTsKKyAg
ICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bmFtZSgpKTsKIH0KIAogSlNW
YWx1ZVJlZiBXS0J1bmRsZUZyYW1lR2V0Q29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZv
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIEpTT2JqZWN0UmVmIGVsZW1lbnQpCiB7Ci0gICAg
cmV0dXJuIHRvV0soZnJhbWVSZWYpLT5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8o
ZWxlbWVudCk7CisgICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmNvbXB1dGVkU3R5bGVJbmNs
dWRpbmdWaXNpdGVkSW5mbyhlbGVtZW50KTsKIH0KIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFt
ZUNvcHlDb3VudGVyVmFsdWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgSlNPYmplY3RSZWYg
ZWxlbWVudCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRSZWYodG9XSyhmcmFtZVJlZiktPmNvdW50
ZXJWYWx1ZShlbGVtZW50KSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJl
ZiktPmNvdW50ZXJWYWx1ZShlbGVtZW50KSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJh
bWVDb3B5TWFya2VyVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBKU09iamVjdFJlZiBl
bGVtZW50KQogewotICAgIHJldHVybiB0b0NvcGllZFJlZih0b1dLKGZyYW1lUmVmKS0+bWFya2Vy
VGV4dChlbGVtZW50KSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZikt
Pm1hcmtlclRleHQoZWxlbWVudCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29w
eUlubmVyVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmKQogewotICAgIHJldHVybiB0b0Nv
cGllZFJlZih0b1dLKGZyYW1lUmVmKS0+aW5uZXJUZXh0KCkpOworICAgIHJldHVybiB0b0NvcGll
ZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5pbm5lclRleHQoKSk7CiB9CiAKIHVuc2lnbmVkIFdLQnVu
ZGxlRnJhbWVHZXRQZW5kaW5nVW5sb2FkQ291bnQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikK
IHsKLSAgICByZXR1cm4gdG9XSyhmcmFtZVJlZiktPnBlbmRpbmdVbmxvYWRDb3VudCgpOworICAg
IHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5wZW5kaW5nVW5sb2FkQ291bnQoKTsKIH0KIAogV0tC
dW5kbGVQYWdlUmVmIFdLQnVuZGxlRnJhbWVHZXRQYWdlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKHRvV0soZnJhbWVSZWYpLT5wYWdlKCkpOworICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwoZnJhbWVSZWYpLT5wYWdlKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcAppbmRleCBkNDY2NWU1ODllYzI1NTRhYjQ4Y2I4ODZiYjQ4ZTE2MWY0
MWRlMTgzLi5kOWE3YzlhYWRlZDVkNzA3ZjI4ZmZkOWJlNWNkMDliNTNhYWRhMjAzIDEwMDY0NAot
LS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMzQsMjEgKzM0LDIxIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLQnVuZGxlSGl0VGVzdFJlc3VsdEdldFR5cGVJ
RCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6QVBJ
VHlwZSk7CisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6QVBJ
VHlwZSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRH
ZXROb2RlSGFuZGxlKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0UmVmKQog
ewotICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSB0b1dL
KGhpdFRlc3RSZXN1bHRSZWYpLT5ub2RlSGFuZGxlKCk7Ci0gICAgcmV0dXJuIHRvUmVmKG5vZGVI
YW5kbGUuZ2V0KCkpOworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVI
YW5kbGUgPSB0b0ltcGwoaGl0VGVzdFJlc3VsdFJlZiktPm5vZGVIYW5kbGUoKTsKKyAgICByZXR1
cm4gdG9BUEkobm9kZUhhbmRsZS5nZXQoKSk7CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5k
bGVIaXRUZXN0UmVzdWx0R2V0RnJhbWUoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RS
ZXN1bHRSZWYpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKHRvV0soaGl0VGVzdFJlc3VsdFJlZiktPndl
YkZyYW1lKCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaGl0VGVzdFJlc3VsdFJlZiktPndl
YkZyYW1lKCkpOwogfQogCiBXS1VSTFJlZiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRDb3B5QWJzb2x1
dGVMaW5rVVJMKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0UmVmKQogewot
ICAgIHJldHVybiB0b0NvcGllZFVSTFJlZih0b1dLKGhpdFRlc3RSZXN1bHRSZWYpLT5hYnNvbHV0
ZUxpbmtVUkwoKSk7CisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChoaXRUZXN0UmVz
dWx0UmVmKS0+YWJzb2x1dGVMaW5rVVJMKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNw
cAppbmRleCA1NjczOGRhZDNmOTFkNjFiNWFjZTdkN2ZlOWE4YmU1OWVlOGIxOTdlLi41YzRlMTEx
ZmM3MGRjZDhmZjkzMWQ5MWE3NzI5ZTcxMjU5NDVhNjg2IDEwMDY0NAotLS0gYS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysg
Yi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFu
ZGxlLmNwcApAQCAtMzMsNSArMzMsNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBXS1R5
cGVJRCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b1JlZihJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OkFQSVR5cGUpOworICAgIHJldHVybiB0b0FQSShJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU6OkFQSVR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBi
ZmExZmViYTU2MWVkM2E5OGM2ZTg1YWI1OGZlMTNmYzJkODgxZmVjLi43ODY4NGZhMDhiYWE4YTQw
Yjg0Nzk4YzRiYmEyNGM3NzdhOGI5ZjkxIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtMzQsODggKzM0
LDg4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdl
dFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKFdlYlBhZ2U6OkFQSVR5cGUpOworICAgIHJl
dHVybiB0b0FQSShXZWJQYWdlOjpBUElUeXBlKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRF
ZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNs
aWVudCogd2tDbGllbnQpCiB7CiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9u
KQogICAgICAgICByZXR1cm47Ci0gICAgdG9XSyhwYWdlUmVmKS0+aW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRp
YWxpemVJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVudCk7CiB9CiAKIHZvaWQgV0tC
dW5kbGVQYWdlU2V0Rm9ybUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQ
YWdlRm9ybUNsaWVudCogd2tDbGllbnQpCiB7CiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50
LT52ZXJzaW9uKQogICAgICAgICByZXR1cm47Ci0gICAgdG9XSyhwYWdlUmVmKS0+aW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlRm9ybUNsaWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdL
QnVuZGxlUGFnZUxvYWRlckNsaWVudCogd2tDbGllbnQpCiB7CiAgICAgaWYgKHdrQ2xpZW50ICYm
IHdrQ2xpZW50LT52ZXJzaW9uKQogICAgICAgICByZXR1cm47Ci0gICAgdG9XSyhwYWdlUmVmKS0+
aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KHdrQ2xpZW50KTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCh3a0NsaWVu
dCk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYsIFdLQnVuZGxlUGFnZVVJQ2xpZW50KiB3a0NsaWVudCkKIHsKICAgICBpZiAod2tDbGll
bnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB0b1dLKHBhZ2VS
ZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVVSUNsaWVudCh3a0NsaWVudCk7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVVSUNsaWVudCh3a0NsaWVudCk7
CiB9CiAKIFdLQnVuZGxlRnJhbWVSZWYgV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmKQogewotICAgIHJldHVybiB0b1JlZih0b1dLKHBhZ2VSZWYpLT5tYWlu
RnJhbWUoKSk7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+bWFpbkZyYW1lKCkp
OwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVN0b3BMb2FkaW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmKQogewotICAgIHRvV0socGFnZVJlZiktPnN0b3BMb2FkaW5nKCk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zdG9wTG9hZGluZygpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZVBhZ2VDb3B5
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYp
CiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkUmVmKHRvV0socGFnZVJlZiktPnJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uKCkpOworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocGFn
ZVJlZiktPnJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkpOwogfQogCiB2b2lkIFdL
QnVuZGxlUGFnZUV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwg
V0tTdHJpbmdSZWYgbmFtZSwgV0tTdHJpbmdSZWYgYXJndW1lbnQpCiB7Ci0gICAgdG9XSyhwYWdl
UmVmKS0+ZXhlY3V0ZUVkaXRpbmdDb21tYW5kKHRvV0sobmFtZSktPnN0cmluZygpLCB0b1dLKGFy
Z3VtZW50KS0+c3RyaW5nKCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZXhlY3V0ZUVkaXRpbmdD
b21tYW5kKHRvSW1wbChuYW1lKS0+c3RyaW5nKCksIHRvSW1wbChhcmd1bWVudCktPnN0cmluZygp
KTsKIH0KIAogYm9vbCBXS0J1bmRsZVBhZ2VJc0VkaXRpbmdDb21tYW5kRW5hYmxlZChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgbmFtZSkKIHsKLSAgICByZXR1cm4gdG9XSyhw
YWdlUmVmKS0+aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQodG9XSyhuYW1lKS0+c3RyaW5nKCkpOwor
ICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKHRvSW1w
bChuYW1lKS0+c3RyaW5nKCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZUNsZWFyTWFpbkZyYW1l
TmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICB0b1dLKHBhZ2VSZWYpLT5jbGVh
ck1haW5GcmFtZU5hbWUoKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmNsZWFyTWFpbkZyYW1lTmFt
ZSgpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZUNsb3NlKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
KQogewotICAgIHRvV0socGFnZVJlZiktPnNlbmRDbG9zZSgpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+c2VuZENsb3NlKCk7CiB9CiAKIGRvdWJsZSBXS0J1bmRsZVBhZ2VHZXRUZXh0Wm9vbUZhY3Rv
cihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9XSyhwYWdlUmVmKS0+
dGV4dFpvb21GYWN0b3IoKTsKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT50ZXh0Wm9vbUZh
Y3RvcigpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFRleHRab29tRmFjdG9yKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBkb3VibGUgem9vbUZhY3RvcikKIHsKLSAgICB0b1dLKHBhZ2VSZWYp
LT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNl
dFRleHRab29tRmFjdG9yKHpvb21GYWN0b3IpOwogfQogCiBkb3VibGUgV0tCdW5kbGVQYWdlR2V0
UGFnZVpvb21GYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRv
V0socGFnZVJlZiktPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVm
KS0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdlWm9vbUZh
Y3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgZG91YmxlIHpvb21GYWN0b3IpCiB7Ci0gICAg
dG9XSyhwYWdlUmVmKS0+c2V0UGFnZVpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlSGFu
ZGxlLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVJhbmdlSGFuZGxlLmNwcAppbmRleCAxM2M5MDY0NTBmOGRmOTkzYTI1NTJmZmMzZjg3NTRhNGQ1
NDdiMmNlLi43ODA0N2FmOTdkNDIxMDVkMTgzMDlhZjI0ZmQwNWFmMzQ4NjkyMWRiIDEwMDY0NAot
LS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5n
ZUhhbmRsZS5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0zMyw1ICszMyw1IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLQnVuZGxlUmFuZ2VIYW5kbGVHZXRUeXBlSUQoKQogewot
ICAgIHJldHVybiB0b1JlZihJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpBUElUeXBlKTsKKyAg
ICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6QVBJVHlwZSk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVTY3JpcHRXb3JsZC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKaW5kZXggMDYxNzFiMDdjOWVkYzhlNzExZjI3NGJh
ZGJiOTBmNGE1OWE0ZDEyNS4uYTdhNGE4ZGY4YzAwN2ViYjdkNmVmZWViNTc3MThjZTVhNDBlZmU4
NSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlU2NyaXB0V29ybGQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcApAQCAtMzMsMTYgKzMzLDE2IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVHlwZUlEIFdLQnVuZGxlU2NyaXB0V29ybGRHZXRU
eXBlSUQoKQogewotICAgIHJldHVybiB0b1JlZihJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpB
UElUeXBlKTsKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6QVBJ
VHlwZSk7CiB9CiAKIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgV0tCdW5kbGVTY3JpcHRXb3JsZENy
ZWF0ZVdvcmxkKCkKIHsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gd29y
bGQgPSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gdG9S
ZWYod29ybGQucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdvcmxk
LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOwogfQogCiBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdL
QnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCiB7Ci0gICAgcmV0dXJuIHRvUmVmKEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiB0b0FQSShJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4
IDY1ZDFiNzRiZTVjNjI0NDg2M2EzMTk0MWIyZWJkYjE2NjczZjIxNDMuLjQzZjIzNTc2OTg4MTk1
ZWVlOTc5M2RmOGU4ODUwNTNhMWNmZDAyZjggMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTg3LDE5ICsxODcsMTkg
QEAgc2l6ZV90IEluamVjdGVkQnVuZGxlOjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50KCkKIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBhZ2UoV2ViUGFnZSogcGFnZSkKIHsKICAgICBpZiAo
bV9jbGllbnQuZGlkQ3JlYXRlUGFnZSkKLSAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRlUGFnZSh0
b1JlZih0aGlzKSwgdG9SZWYocGFnZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICBt
X2NsaWVudC5kaWRDcmVhdGVQYWdlKHRvQVBJKHRoaXMpLCB0b0FQSShwYWdlKSwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OndpbGxEZXN0cm95UGFnZShX
ZWJQYWdlKiBwYWdlKQogewogICAgIGlmIChtX2NsaWVudC53aWxsRGVzdHJveVBhZ2UpCi0gICAg
ICAgIG1fY2xpZW50LndpbGxEZXN0cm95UGFnZSh0b1JlZih0aGlzKSwgdG9SZWYocGFnZSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOworICAgICAgICBtX2NsaWVudC53aWxsRGVzdHJveVBhZ2UodG9B
UEkodGhpcyksIHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFt
ZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKICAgICBpZiAobV9jbGllbnQuZGlkUmVjZWl2
ZU1lc3NhZ2UpCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlKHRvUmVmKHRoaXMp
LCB0b1JlZihtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b1JlZihtZXNzYWdlQm9keSksIG1fY2xpZW50
LmNsaWVudEluZm8pOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZSh0b0FQSSh0
aGlzKSwgdG9BUEkobWVzc2FnZU5hbWUuaW1wbCgpKSwgdG9BUEkobWVzc2FnZUJvZHkpLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlE
IG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCmRpZmYgLS1n
aXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IDdkZjZiNTlkMDkzY2UwZGM3NDNm
YjRjODE0NzFlZTYyNDdjMDQ0NjYuLmQ1NjhmYzE0YzQ0NGM3MmMxYjlhNjY1ZGNlMGNlZTMwNTU3
MTcwMWMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC01Miw3
ICs1Miw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpzaG91bGRCZWdp
bkVkaXRpbmcoV2ViUGFnZSogcGFnZSwgUmFuZ2UqIHJhCiB7CiAgICAgaWYgKG1fY2xpZW50LnNo
b3VsZEJlZ2luRWRpdGluZykgewogICAgICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0
ZShyYW5nZSk7Ci0gICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRCZWdpbkVkaXRpbmcodG9S
ZWYocGFnZSksIHRvUmVmKHJhbmdlSGFuZGxlLmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRCZWdpbkVkaXRpbmcodG9BUEkocGFnZSks
IHRvQVBJKHJhbmdlSGFuZGxlLmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAgICAgfQog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtNjEsNyArNjEsNyBAQCBib29sIEluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6c2hvdWxkRW5kRWRpdGluZyhXZWJQYWdlKiBwYWdlLCBSYW5nZSog
cmFuZwogewogICAgIGlmIChtX2NsaWVudC5zaG91bGRFbmRFZGl0aW5nKSB7CiAgICAgICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZUhhbmRsZSA9IEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKHJhbmdlKTsKLSAgICAgICAgcmV0dXJuIG1fY2xp
ZW50LnNob3VsZEVuZEVkaXRpbmcodG9SZWYocGFnZSksIHRvUmVmKHJhbmdlSGFuZGxlLmdldCgp
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRF
bmRFZGl0aW5nKHRvQVBJKHBhZ2UpLCB0b0FQSShyYW5nZUhhbmRsZS5nZXQoKSksIG1fY2xpZW50
LmNsaWVudEluZm8pOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTcxLDcgKzcxLDcg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUo
V2ViUGFnZSogcGFnZSwgTm9kZSogbm9kZSwKICAgICBpZiAobV9jbGllbnQuc2hvdWxkSW5zZXJ0
Tm9kZSkgewogICAgICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFu
ZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShub2RlKTsKICAgICAg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlVG9SZXBsYWNlSGFuZGxl
ID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUocmFuZ2VUb1JlcGxhY2Up
OwotICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkSW5zZXJ0Tm9kZSh0b1JlZihwYWdlKSwg
dG9SZWYobm9kZUhhbmRsZS5nZXQoKSksIHRvUmVmKHJhbmdlVG9SZXBsYWNlSGFuZGxlLmdldCgp
KSwgdG9XSyhhY3Rpb24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgcmV0dXJuIG1f
Y2xpZW50LnNob3VsZEluc2VydE5vZGUodG9BUEkocGFnZSksIHRvQVBJKG5vZGVIYW5kbGUuZ2V0
KCkpLCB0b0FQSShyYW5nZVRvUmVwbGFjZUhhbmRsZS5nZXQoKSksIHRvQVBJKGFjdGlvbiksIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTgwLDcg
KzgwLDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2Vy
dFRleHQoV2ViUGFnZSogcGFnZSwgU3RyaW5nSW1wbCoKIHsKICAgICBpZiAobV9jbGllbnQuc2hv
dWxkSW5zZXJ0VGV4dCkgewogICAgICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZT4gcmFuZ2VUb1JlcGxhY2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRP
ckNyZWF0ZShyYW5nZVRvUmVwbGFjZSk7Ci0gICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRJ
bnNlcnRUZXh0KHRvUmVmKHBhZ2UpLCB0b1JlZih0ZXh0KSwgdG9SZWYocmFuZ2VUb1JlcGxhY2VI
YW5kbGUuZ2V0KCkpLCB0b1dLKGFjdGlvbiksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAg
ICByZXR1cm4gbV9jbGllbnQuc2hvdWxkSW5zZXJ0VGV4dCh0b0FQSShwYWdlKSwgdG9BUEkodGV4
dCksIHRvQVBJKHJhbmdlVG9SZXBsYWNlSGFuZGxlLmdldCgpKSwgdG9BUEkoYWN0aW9uKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtODksNyAr
ODksNyBAQCBib29sIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRl
UmFuZ2UoV2ViUGFnZSogcGFnZSwgUmFuZ2UqIHJhbgogewogICAgIGlmIChtX2NsaWVudC5zaG91
bGREZWxldGVSYW5nZSkgewogICAgICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZT4gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShy
YW5nZSk7Ci0gICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGREZWxldGVSYW5nZSh0b1JlZihw
YWdlKSwgdG9SZWYocmFuZ2VIYW5kbGUuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZERlbGV0ZVJhbmdlKHRvQVBJKHBhZ2UpLCB0b0FQ
SShyYW5nZUhhbmRsZS5nZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViUGFnZSogcGFnZSwgUmEK
ICAgICBpZiAobV9jbGllbnQuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSkgewogICAgICAgICBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gZnJvbVJhbmdlSGFuZGxlID0gSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZnJvbVJhbmdlKTsKICAgICAgICAgUmVm
UHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHRvUmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSh0b1JhbmdlKTsKLSAgICAgICAgcmV0dXJuIG1f
Y2xpZW50LnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UodG9SZWYocGFnZSksIHRvUmVmKGZyb21S
YW5nZUhhbmRsZS5nZXQoKSksIHRvUmVmKHRvUmFuZ2VIYW5kbGUuZ2V0KCkpLCB0b1dLKGFmZmlu
aXR5KSwgc3RpbGxTZWxlY3RpbmcsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICByZXR1
cm4gbV9jbGllbnQuc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSh0b0FQSShwYWdlKSwgdG9BUEko
ZnJvbVJhbmdlSGFuZGxlLmdldCgpKSwgdG9BUEkodG9SYW5nZUhhbmRsZS5nZXQoKSksIHRvQVBJ
KGFmZmluaXR5KSwgc3RpbGxTZWxlY3RpbmcsIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShXZWJQYWdlKiBwYWdlLCBDU1NT
dHlsZURlYwogewogICAgIGlmIChtX2NsaWVudC5zaG91bGRBcHBseVN0eWxlKSB7CiAgICAgICAg
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiByYW5nZUhhbmRsZSA9IEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKHJhbmdlKTsKLSAgICAgICAgcmV0dXJuIG1f
Y2xpZW50LnNob3VsZEFwcGx5U3R5bGUodG9SZWYocGFnZSksIHRvUmVmKHN0eWxlKSwgdG9SZWYo
cmFuZ2VIYW5kbGUuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgcmV0dXJu
IG1fY2xpZW50LnNob3VsZEFwcGx5U3R5bGUodG9BUEkocGFnZSksIHRvQVBJKHN0eWxlKSwgdG9B
UEkocmFuZ2VIYW5kbGUuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0xMTYsMjUgKzExNiwyNSBAQCBib29sIEluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShXZWJQYWdlKiBwYWdlLCBDU1NTdHls
ZURlYwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmRpZEJlZ2luRWRpdGlu
ZyhXZWJQYWdlKiBwYWdlLCBTdHJpbmdJbXBsKiBub3RpZmljYXRpb25OYW1lKQogewogICAgIGlm
IChtX2NsaWVudC5kaWRCZWdpbkVkaXRpbmcpCi0gICAgICAgIG1fY2xpZW50LmRpZEJlZ2luRWRp
dGluZyh0b1JlZihwYWdlKSwgdG9SZWYobm90aWZpY2F0aW9uTmFtZSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworICAgICAgICBtX2NsaWVudC5kaWRCZWdpbkVkaXRpbmcodG9BUEkocGFnZSksIHRv
QVBJKG5vdGlmaWNhdGlvbk5hbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmRpZEVuZEVkaXRpbmcoV2ViUGFnZSogcGFn
ZSwgU3RyaW5nSW1wbCogbm90aWZpY2F0aW9uTmFtZSkKIHsKICAgICBpZiAobV9jbGllbnQuZGlk
RW5kRWRpdGluZykKLSAgICAgICAgbV9jbGllbnQuZGlkRW5kRWRpdGluZyh0b1JlZihwYWdlKSwg
dG9SZWYobm90aWZpY2F0aW9uTmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICBt
X2NsaWVudC5kaWRFbmRFZGl0aW5nKHRvQVBJKHBhZ2UpLCB0b0FQSShub3RpZmljYXRpb25OYW1l
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpkaWRDaGFuZ2UoV2ViUGFnZSogcGFnZSwgU3RyaW5nSW1wbCogbm90aWZpY2F0
aW9uTmFtZSkKIHsKICAgICBpZiAobV9jbGllbnQuZGlkQ2hhbmdlKQotICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2UodG9SZWYocGFnZSksIHRvUmVmKG5vdGlmaWNhdGlvbk5hbWUpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlKHRvQVBJKHBhZ2UpLCB0
b0FQSShub3RpZmljYXRpb25OYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFn
ZSogcGFnZSwgU3RyaW5nSW1wbCogbm90aWZpY2F0aW9uTmFtZSkKIHsKICAgICBpZiAobV9jbGll
bnQuZGlkQ2hhbmdlU2VsZWN0aW9uKQotICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VTZWxlY3Rp
b24odG9SZWYocGFnZSksIHRvUmVmKG5vdGlmaWNhdGlvbk5hbWUpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlU2VsZWN0aW9uKHRvQVBJKHBhZ2UpLCB0
b0FQSShub3RpZmljYXRpb25OYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwIGIvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwCmluZGV4
IGE5ZGNiYmU4Mjk2MjJiNTM0MmFhYzkzNzc1NGE1ZWI2NGVkODNlYTIuLmNmZTVmODczYTQ3NmY4
ZGZiMzg3YzAwZmZmMWVhNDgzNzMwM2IxYmMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcAorKysgYi9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNs
aWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xp
ZW50Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoV2ViUGFnZSogcGFnZSwgSFRNTEkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhh
bmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoaW5wdXRFbGVtZW50
KTsKLSAgICBtX2NsaWVudC50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcodG9SZWYocGFnZSksIHRv
UmVmKG5vZGVIYW5kbGUuZ2V0KCkpLCB0b1JlZihmcmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8p
OworICAgIG1fY2xpZW50LnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyh0b0FQSShwYWdlKSwgdG9B
UEkobm9kZUhhbmRsZS5nZXQoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6dGV4dEZpZWxkRGlkRW5k
RWRpdGluZyhXZWJQYWdlKiBwYWdlLCBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIFdl
YkZyYW1lKiBmcmFtZSkKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VG
b3JtQ2xpZW50Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKFdlYlBhZ2UqIHBhZ2UsIEhUTUxJbnAK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4g
bm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoaW5wdXRF
bGVtZW50KTsKLSAgICBtX2NsaWVudC50ZXh0RmllbGREaWRFbmRFZGl0aW5nKHRvUmVmKHBhZ2Up
LCB0b1JlZihub2RlSGFuZGxlLmdldCgpKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICBtX2NsaWVudC50ZXh0RmllbGREaWRFbmRFZGl0aW5nKHRvQVBJKHBhZ2UpLCB0
b0FQSShub2RlSGFuZGxlLmdldCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdl
SW5UZXh0RmllbGQoV2ViUGFnZSogcGFnZSwgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
LCBXZWJGcmFtZSogZnJhbWUpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlRm9ybUNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxkKFdlYlBhZ2UqIHBhZ2UsIEhU
TUxJCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGlu
cHV0RWxlbWVudCk7Ci0gICAgbV9jbGllbnQudGV4dERpZENoYW5nZUluVGV4dEZpZWxkKHRvUmVm
KHBhZ2UpLCB0b1JlZihub2RlSGFuZGxlLmdldCgpKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQodG9BUEko
cGFnZSksIHRvQVBJKG5vZGVIYW5kbGUuZ2V0KCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmNs
aWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHRE
aWRDaGFuZ2VJblRleHRBcmVhKFdlYlBhZ2UqIHBhZ2UsIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRl
eHRBcmVhRWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lKQpAQCAtODMsNyArODMsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHREaWRDaGFuZ2VJblRleHRBcmVhKFdlYlBh
Z2UqIHBhZ2UsIEhUTUxUZQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpn
ZXRPckNyZWF0ZSh0ZXh0QXJlYUVsZW1lbnQpOwotICAgIG1fY2xpZW50LnRleHREaWRDaGFuZ2VJ
blRleHRBcmVhKHRvUmVmKHBhZ2UpLCB0b1JlZihub2RlSGFuZGxlLmdldCgpKSwgdG9SZWYoZnJh
bWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC50ZXh0RGlkQ2hhbmdlSW5U
ZXh0QXJlYSh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIHRvQVBJKGZyYW1l
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRm9y
bUNsaWVudDo6c2hvdWxkUGVyZm9ybUFjdGlvbkluVGV4dEZpZWxkKFdlYlBhZ2UqIHBhZ2UsIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgV0tJbnB1dEZpZWxkQWN0aW9uVHlwZSBhY3Rp
b25UeXBlLCBXZWJGcmFtZSogZnJhbWUpCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgSW5qZWN0ZWRC
dW5kbGVQYWdlRm9ybUNsaWVudDo6c2hvdWxkUGVyZm9ybUFjdGlvbkluVGV4dEZpZWxkKFdlYlBh
Z2UqIHBhZ2UsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omdl
dE9yQ3JlYXRlKGlucHV0RWxlbWVudCk7Ci0gICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZFBlcmZv
cm1BY3Rpb25JblRleHRGaWVsZCh0b1JlZihwYWdlKSwgdG9SZWYobm9kZUhhbmRsZS5nZXQoKSks
IGFjdGlvblR5cGUsIHRvUmVmKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgcmV0
dXJuIG1fY2xpZW50LnNob3VsZFBlcmZvcm1BY3Rpb25JblRleHRGaWVsZCh0b0FQSShwYWdlKSwg
dG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIGFjdGlvblR5cGUsIHRvQVBJKGZyYW1lKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6
d2lsbFN1Ym1pdEZvcm0oV2ViUGFnZSogcGFnZSwgSFRNTEZvcm1FbGVtZW50KiBmb3JtRWxlbWVu
dCwgV2ViRnJhbWUqIGZyYW1lLCBXZWJGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4mIHZhbHVlcywgUmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKQpAQCAtMTA4LDggKzEwOCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNs
aWVudDo6d2lsbFN1Ym1pdEZvcm0oV2ViUGFnZSogcGFnZSwgSFRNTEZvcm1FbGVtZW50CiAgICAg
UmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHRleHRGaWVsZHNNYXAgPSBJbW11dGFibGVEaWN0
aW9uYXJ5OjphZG9wdChtYXApOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsK
LSAgICBtX2NsaWVudC53aWxsU3VibWl0Rm9ybSh0b1JlZihwYWdlKSwgdG9SZWYobm9kZUhhbmRs
ZS5nZXQoKSksIHRvUmVmKGZyYW1lKSwgdG9SZWYoc291cmNlRnJhbWUpLCB0b1JlZih0ZXh0Rmll
bGRzTWFwLmdldCgpKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLSAg
ICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvV0sodXNlckRhdGFUb1Bhc3MpKTsKKyAgICBtX2NsaWVu
dC53aWxsU3VibWl0Rm9ybSh0b0FQSShwYWdlKSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkoc291cmNlRnJhbWUpLCB0b0FQSSh0ZXh0RmllbGRzTWFwLmdldCgp
KSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICB1c2VyRGF0YSA9
IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYTZlMzk1
ZDY4MjU2YjIyNzEwNDAzNzllZDlmZGViZmM5YTIyYmFjZi4uN2Y0MWJkYjUxYWNlMTNlODE0NjA5
OTRlODkzZmYzZTg1NzZkNWM2YSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTUzLDggKzUzLDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSogcGEKICAgICAgICAg
cmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVu
dC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFt
ZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7Ci0gICAgdXNlckRhdGEg
PSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7CisgICAgbV9jbGllbnQuZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNlckRh
dGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRhID0gYWRvcHRSZWYo
dG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1
c2VyRGF0YSkKQEAgLTYzLDggKzYzLDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEYKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0
b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVu
dEluZm8pOwotICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9XSyh1c2VyRGF0YVRvUGFzcykpOwor
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFU
b1Bhc3MpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFt
ZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKQEAgLTczLDggKzczLDggQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3JGb3JGcmFtZShXZWIKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVm
IHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgJnVzZXJEYXRhVG9Q
YXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLSAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvV0so
dXNlckRhdGFUb1Bhc3MpKTsKKyAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgJnVzZXJEYXRhVG9QYXNz
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1
c2VyRGF0YVRvUGFzcykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwg
UmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQpAQCAtODMsOCArODMsOCBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2Uq
IHBhZ2UsIFdlYkZyYQogICAgICAgICByZXR1cm47CiAKICAgICBXS1R5cGVSZWYgdXNlckRhdGFU
b1Bhc3MgPSAwOwotICAgIG1fY2xpZW50LmRpZENvbW1pdExvYWRGb3JGcmFtZSh0b1JlZihwYWdl
KSwgdG9SZWYoZnJhbWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwot
ICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9XSyh1c2VyRGF0YVRvUGFzcykpOworICAgIG1fY2xp
ZW50LmRpZENvbW1pdExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNl
ckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRhID0gYWRvcHRS
ZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlKiBwYWdl
LCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKQEAgLTkzLDgg
KzkzLDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAg
V0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5kaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwotICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9XSyh1
c2VyRGF0YVRvUGFzcykpOworICAgIG1fY2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bh
c3MpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElP
YmplY3Q+JiB1c2VyRGF0YSkKQEAgLTEwMyw4ICsxMDMsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdl
YkZyYQogICAgICAgICByZXR1cm47CiAKICAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAw
OwotICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYo
ZnJhbWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwotICAgIHVzZXJE
YXRhID0gYWRvcHRSZWYodG9XSyh1c2VyRGF0YVRvUGFzcykpOworICAgIG1fY2xpZW50LmRpZEZp
bmlzaExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBs
KHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1l
KiBmcmFtZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQpAQCAtMTEzLDggKzExMyw4IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsCiAgICAgICAgIHJldHVybjsKIAogICAgIFdLVHlwZVJl
ZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JG
b3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xp
ZW50LmNsaWVudEluZm8pOwotICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9XSyh1c2VyRGF0YVRv
UGFzcykpOworICAgIG1fY2xpZW50LmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9BUEko
cGFnZSksIHRvQVBJKGZyYW1lKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKKyAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgV2ViRnJhbWUqIGZyYW1l
LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCkBAIC0xMjMsOCArMTIzLDggQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdl
YlBhZ2UqIHBhZ2UsIGNvbnMKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVzZXJE
YXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh0b1Jl
ZihwYWdlKSwgdG9SZWYodGl0bGUuaW1wbCgpKSwgdG9SZWYoZnJhbWUpLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwotICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9XSyh1
c2VyRGF0YVRvUGFzcykpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRv
QVBJKHBhZ2UpLCB0b0FQSSh0aXRsZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRv
UGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0lt
cGwodXNlckRhdGFUb1Bhc3MpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZy
YW1lLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCkBAIC0xMzMsOCArMTMzLDggQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUo
V2ViUGFnZSogcGFnZSwgV2ViRnIKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0tUeXBlUmVmIHVz
ZXJEYXRhVG9QYXNzID0gMDsKLSAgICBtX2NsaWVudC5kaWRGaXJzdExheW91dEZvckZyYW1lKHRv
UmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50
SW5mbyk7Ci0gICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7Cisg
ICAgbV9jbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJh
bWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRh
ID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1
c2VyRGF0YSkKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViUAogICAg
ICAgICByZXR1cm47CiAKICAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1f
Y2xpZW50LmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHRvUmVmKHBhZ2Up
LCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7Ci0g
ICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7CisgICAgbV9jbGll
bnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodG9BUEkocGFnZSksIHRv
QVBJKGZyYW1lKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICB1
c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCiB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5
KFdlYlBhZ2UqIHBhZ2UgLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2Vy
RGF0YSkKQEAgLTE1Myw4ICsxNTMsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2UqIHBhZ2UgLAogICAgICAg
ICByZXR1cm47CiAKICAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xp
ZW50LmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUp
LCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwotICAgIHVzZXJEYXRhID0g
YWRvcHRSZWYodG9XSyh1c2VyRGF0YVRvUGFzcykpOworICAgIG1fY2xpZW50LmRpZFJlbW92ZUZy
YW1lRnJvbUhpZXJhcmNoeSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBs
KHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1l
KiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JG
cmFtZShXZWJQYWdlKiBwYWdlLAogICAgIGlmICghbV9jbGllbnQuZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkQ2xlYXJXaW5k
b3dPYmplY3RGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCB0b1JlZihJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZSh3b3JsZCkuZ2V0KCkpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKHRv
QVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
OmdldE9yQ3JlYXRlKHdvcmxkKS5nZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUpCkBAIC0xNzAsNyArMTcw
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENhbmNlbENsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUoV2ViUGFnZSogcGEKICAgICBpZiAoIW1fY2xpZW50LmRpZENhbmNl
bENsaWVudFJlZGlyZWN0Rm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50
LmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1l
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIGRvdWJsZSBkYXRlKQpAQCAtMTc4LDcg
KzE3OCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViUGFnZSoKICAgICBpZiAoIW1fY2xpZW50LndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
bGllbnQud2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1Jl
ZihmcmFtZSksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCBkZWxheSwgZGF0ZSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CisgICAgbV9jbGllbnQud2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1l
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCBkZWxheSwg
ZGF0ZSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZShXZWJQYWdl
KiBwYWdlLCBXZWJGcmFtZSogZnJhbWUpCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZy
YW1lKFdlYlBhZ2UKICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFn
ZUZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRDaGFuZ2VMb2Nh
dGlvbldpdGhpblBhZ2VGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VG
b3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
IH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSkKQEAgLTE5NCw3
ICsxOTQsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkSGFuZGxl
T25sb2FkRXZlbnRzRm9yRnJhbWUoV2ViUGFnZSogcGFnZQogICAgIGlmICghbV9jbGllbnQuZGlk
SGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xp
ZW50LmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFt
ZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZEhhbmRsZU9ubG9hZEV2
ZW50c0ZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmNsaWVudElu
Zm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSkK
QEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqCiAgICAgaWYgKCFtX2Ns
aWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY2xpZW50LmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0b1JlZihw
YWdlKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5k
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1l
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBX
ZWJGcmFtZSogZnJhbWUpCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqIHBh
Z2UKICAgICBpZiAoIW1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBt
X2NsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEko
ZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlVUlDbGllbnQuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRleCA2MzA1MDJjZmJkM2IxZDU3YjVj
OTFhODZhYmQzZTRjMDdkN2Y5Nzk5Li5iNWVhODQ1ZDYzNmYyMmNiYzA0NGFjNWU2ZGIyY2M1YzRh
NWYwOTRhIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTUwLDMxICs1MCwz
MSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojppbml0aWFsaXplKFdLQnVuZGxl
UGFnZVVJQ2xpZW50KiBjbGllbnQpCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Ojp3
aWxsQWRkTWVzc2FnZVRvQ29uc29sZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGludDMyX3QgbGluZU51bWJlcikKIHsKICAgICBpZiAobV9jbGllbnQud2lsbEFkZE1lc3Nh
Z2VUb0NvbnNvbGUpCi0gICAgICAgIG1fY2xpZW50LndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKHRv
UmVmKHBhZ2UpLCB0b1JlZihtZXNzYWdlLmltcGwoKSksIGxpbmVOdW1iZXIsIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgICAgICBtX2NsaWVudC53aWxsQWRkTWVzc2FnZVRvQ29uc29sZSh0b0FQ
SShwYWdlKSwgdG9BUEkobWVzc2FnZS5pbXBsKCkpLCBsaW5lTnVtYmVyLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6d2lsbFNldFN0
YXR1c2JhclRleHQoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdGF0dXNiYXJUZXh0KQog
ewogICAgIGlmIChtX2NsaWVudC53aWxsU2V0U3RhdHVzYmFyVGV4dCkKLSAgICAgICAgbV9jbGll
bnQud2lsbFNldFN0YXR1c2JhclRleHQodG9SZWYocGFnZSksIHRvUmVmKHN0YXR1c2JhclRleHQu
aW1wbCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIG1fY2xpZW50LndpbGxTZXRT
dGF0dXNiYXJUZXh0KHRvQVBJKHBhZ2UpLCB0b0FQSShzdGF0dXNiYXJUZXh0LmltcGwoKSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
Ojp3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgYWxl
cnRUZXh0LCBXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKG1fY2xpZW50LndpbGxSdW5KYXZh
U2NyaXB0QWxlcnQpCi0gICAgICAgIG1fY2xpZW50LndpbGxSdW5KYXZhU2NyaXB0QWxlcnQodG9S
ZWYocGFnZSksIHRvUmVmKGFsZXJ0VGV4dC5pbXBsKCkpLCB0b1JlZihmcmFtZSksIG1fY2xpZW50
LmNsaWVudEluZm8pOworICAgICAgICBtX2NsaWVudC53aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KHRv
QVBJKHBhZ2UpLCB0b0FQSShhbGVydFRleHQuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6d2ls
bFJ1bkphdmFTY3JpcHRDb25maXJtKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmIChtX2NsaWVudC53aWxsUnVuSmF2YVNjcmlw
dENvbmZpcm0pCi0gICAgICAgIG1fY2xpZW50LndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybSh0b1Jl
ZihwYWdlKSwgdG9SZWYobWVzc2FnZS5pbXBsKCkpLCB0b1JlZihmcmFtZSksIG1fY2xpZW50LmNs
aWVudEluZm8pOworICAgICAgICBtX2NsaWVudC53aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0odG9B
UEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6d2lsbFJ1
bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmICht
X2NsaWVudC53aWxsUnVuSmF2YVNjcmlwdFByb21wdCkKLSAgICAgICAgbV9jbGllbnQud2lsbFJ1
bkphdmFTY3JpcHRQcm9tcHQodG9SZWYocGFnZSksIHRvUmVmKG1lc3NhZ2UuaW1wbCgpKSwgdG9S
ZWYoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvUmVmKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5m
byk7CisgICAgICAgIG1fY2xpZW50LndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KHRvQVBJKHBhZ2Up
LCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBsKCkpLCB0b0FQ
SShmcmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlKiBwYWdlLCBjb25z
dCBIaXRUZXN0UmVzdWx0JiBjb3JlSGl0VGVzdFJlc3VsdCwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBt
b2RpZmllcnMsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKQEAgLTg1LDggKzg1LDggQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQo
V2ViUGFnZSogcGFnZSwgY29uc3QgSGkKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVh
dGUoY29yZUhpdFRlc3RSZXN1bHQpOwogCiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0g
MDsKLSAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0b1JlZihwYWdlKSwgdG9S
ZWYoaGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvUmVmKG1vZGlmaWVycyksICZ1c2VyRGF0YVRvUGFz
cywgbV9jbGllbnQuY2xpZW50SW5mbyk7Ci0gICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVz
ZXJEYXRhVG9QYXNzKSk7CisgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9B
UEkocGFnZSksIHRvQVBJKGhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCAm
dXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRhID0gYWRv
cHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9Jbmpl
Y3RlZEJ1bmRsZU1hYy5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFj
L0luamVjdGVkQnVuZGxlTWFjLmNwcAppbmRleCAzYTNmZmI0NTBhOGQ2YTMwZjU4NWY3NTdmZjE0
YmY2Y2FiMzAxYTdkLi5kZmVmOGEzOWQwM2I2YjVkMzRhZWRkN2JiODNiZDlmN2E0ZjkwOTc3IDEw
MDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVk
QnVuZGxlTWFjLmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFj
L0luamVjdGVkQnVuZGxlTWFjLmNwcApAQCAtODIsNyArODIsNyBAQCBib29sIEluamVjdGVkQnVu
ZGxlOjpsb2FkKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGluaXRpYWxp
emVGdW5jdGlvbih0b1JlZih0aGlzKSk7CisgICAgaW5pdGlhbGl6ZUZ1bmN0aW9uKHRvQVBJKHRo
aXMpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL3F0L0luamVjdGVkQnVuZGxlUXQuY3BwIGIvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL3F0L0luamVjdGVkQnVuZGxlUXQuY3BwCmluZGV4IDEwYTI2
N2FlNmYxMWY0NDQ3MGZhZmQwY2NjMGY1ODVkMjc0MGFmMGUuLmIxZTViMjYyYTRjZDg3OTM2ZjBj
OWM4YjBmYzczNWMyYmU1Njk2Y2EgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZVF0LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvcXQvSW5qZWN0ZWRCdW5kbGVRdC5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6bG9hZCgpCiAgICAgaWYgKCFpbml0aWFsaXplRnVuY3Rp
b24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGluaXRpYWxpemVGdW5jdGlvbih0b1Jl
Zih0aGlzKSk7CisgICAgaW5pdGlhbGl6ZUZ1bmN0aW9uKHRvQVBJKHRoaXMpKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcAppbmRleCBmZWVmMTA0YzNlZTM2MmNi
NTZkMjQ2NDg1YThiNjIzNTE1NGNkZDA2Li5jMzBiMjBhY2IxMzcxZTMxYTJiYmRjYzM1ZjI3ZmIz
NzFmMGI3OTNkIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
d2luL0luamVjdGVkQnVuZGxlV2luLmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcApAQCAtNzYsNyArNzYsNyBAQCBib29s
IEluamVjdGVkQnVuZGxlOjpsb2FkKCkKICAgICBpZiAoIWluaXRpYWxpemVGdW5jdGlvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW5pdGlhbGl6ZUZ1bmN0aW9uKHRvUmVmKHRoaXMp
KTsKKyAgICBpbml0aWFsaXplRnVuY3Rpb24odG9BUEkodGhpcykpOwogICAgIHJldHVybiB0cnVl
OwogfQogCg==
</data>
<flag name="review"
          id="59730"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>